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

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

大家讲道理
大家讲道理

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

全員に返信(1)
黄舟

この質問は少し複雑です。被験者が環境と起動パラメータ、実行中のプロセスの数、およびその実行方法を紹介することをお勧めします。

これらの条件がない場合、この問題について私自身の理解に基づいて話したいと思います。この質問の本来の目的は、gevent を使用してパフォーマンスを向上させることですが、パフォーマンスが低下していることがわかりました。今度はどこでパフォーマンスが低下しているのかを調べる必要があります。

質問者がパフォーマンスの低下を測定する基準は、データの取得に時間がかかるということです。ここで私の個人的な意見を述べます。 まず第一に、質問者は gevent の役割を知りません。プロセスは複数の IO 操作に適しています。たとえば、ここで質問したコルーチンの 1 つが 1 回実行された場合、時間を把握するのは難しくなります。または 200 ミリ秒の CPU 動作では、他のコルーチン IO がどれほど高速であっても役に立ちません。

さらに、gevent を導入してもデータの取得が高速化されるわけではないことを強調する必要があります。たとえば、導入後はそれが短縮されることはなく、増加するだけです。導入のメリットは?導入後は 1 秒以内に 33 件のクライアントリクエストを受信できることがわかりました。これが gevent の利点です。

被験者の環境を完全に理解していないと、あまり多くの提案しかできません。被験者が理解していない場合は、以前の情報をさらに分析してください。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート