并发 - python的flask框架结合gevent性能反而大幅度下降?
大家讲道理
大家讲道理 2017-04-18 09:34:54
0
1
1115

项目使用flask框架,是个较复杂的推荐系统,需要从设定的各类数据源取(有些复杂的排序、过滤)推荐数据,大部分数据存取使用redis,经过常规优化后取数据控制在200ms以内。
为进一步大幅度提升性能采用gevent作为并发框架,但是发现性能反而下降了大概25%,原来一个数据源就30ms,改造后上升到一两百毫秒都有,这是为什么?这种情况大家会怎么进一步调优了。
(使用场景除了比较集中的取数据模块,其他地方还有零星用到gevent)

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

membalas semua(1)
黄舟

Soalan ini agak rumit. Adalah disyorkan agar subjek memperkenalkan persekitaran dan parameter permulaan, bilangan proses yang dijalankan dan cara menjalankannya.

Dengan ketiadaan syarat ini, saya ingin bercakap tentang masalah ini berdasarkan pemahaman saya sendiri niat asal soalan ini adalah untuk menggunakan gevent untuk meningkatkan prestasi, tetapi didapati prestasi berkurangan, jadi pada. kali ini adalah perlu untuk meneliti di mana prestasi diturunkan.

Standard penyoal untuk mengukur kemerosotan prestasi ialah mengambil masa yang lebih lama untuk mendapatkan data Di sini saya akan berkongsi pendapat peribadi saya Pertama sekali, penyoal tidak tahu bagaimana gevent berfungsi Protokol. Proses sesuai untuk berbilang operasi IO Jika ia dicampur dengan lebih sedikit operasi CPU, ia akan menjadi sukar untuk memahami masa Sebagai contoh, soalan di sini memerlukan tahap berpuluh-puluh ms berjalan selama satu atau dua ratus ms operasi CPU, maka tidak kira seberapa pantas IO coroutine anda yang lain, ia tidak akan membantu.

Selain itu, perlu ditekankan bahawa memperkenalkan gevent tidak akan mempercepatkan perolehan data Sebagai contoh, ia pada asalnya 30ms, ia tidak akan menjadi lebih sedikit faedah memperkenalkannya? Ternyata anda boleh menerima 33 permintaan pelanggan dalam masa 1 saat Selepas pengenalan, anda mungkin boleh menerima 100/s atau 300/s Ini adalah faedah gevent.

Saya hanya boleh membuat begitu banyak cadangan tanpa memahami sepenuhnya persekitaran subjek Jika subjek tidak faham, anda boleh memberikan analisis lanjut tentang maklumat sebelumnya.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan