84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
项目使用flask框架,是个较复杂的推荐系统,需要从设定的各类数据源取(有些复杂的排序、过滤)推荐数据,大部分数据存取使用redis,经过常规优化后取数据控制在200ms以内。为进一步大幅度提升性能采用gevent作为并发框架,但是发现性能反而下降了大概25%,原来一个数据源就30ms,改造后上升到一两百毫秒都有,这是为什么?这种情况大家会怎么进一步调优了。(使用场景除了比较集中的取数据模块,其他地方还有零星用到gevent)
光阴似箭催人老,日月如移越少年。
この質問は少し複雑です。被験者が環境と起動パラメータ、実行中のプロセスの数、およびその実行方法を紹介することをお勧めします。
これらの条件がない場合、この問題について私自身の理解に基づいて話したいと思います。この質問の本来の目的は、gevent を使用してパフォーマンスを向上させることですが、パフォーマンスが低下していることがわかりました。今度はどこでパフォーマンスが低下しているのかを調べる必要があります。
質問者がパフォーマンスの低下を測定する基準は、データの取得に時間がかかるということです。ここで私の個人的な意見を述べます。 まず第一に、質問者は gevent の役割を知りません。プロセスは複数の IO 操作に適しています。たとえば、ここで質問したコルーチンの 1 つが 1 回実行された場合、時間を把握するのは難しくなります。または 200 ミリ秒の CPU 動作では、他のコルーチン IO がどれほど高速であっても役に立ちません。
さらに、gevent を導入してもデータの取得が高速化されるわけではないことを強調する必要があります。たとえば、導入後はそれが短縮されることはなく、増加するだけです。導入のメリットは?導入後は 1 秒以内に 33 件のクライアントリクエストを受信できることがわかりました。これが gevent の利点です。
被験者の環境を完全に理解していないと、あまり多くの提案しかできません。被験者が理解していない場合は、以前の情報をさらに分析してください。
この質問は少し複雑です。被験者が環境と起動パラメータ、実行中のプロセスの数、およびその実行方法を紹介することをお勧めします。
これらの条件がない場合、この問題について私自身の理解に基づいて話したいと思います。この質問の本来の目的は、gevent を使用してパフォーマンスを向上させることですが、パフォーマンスが低下していることがわかりました。今度はどこでパフォーマンスが低下しているのかを調べる必要があります。
質問者がパフォーマンスの低下を測定する基準は、データの取得に時間がかかるということです。ここで私の個人的な意見を述べます。 まず第一に、質問者は gevent の役割を知りません。プロセスは複数の IO 操作に適しています。たとえば、ここで質問したコルーチンの 1 つが 1 回実行された場合、時間を把握するのは難しくなります。または 200 ミリ秒の CPU 動作では、他のコルーチン IO がどれほど高速であっても役に立ちません。
さらに、gevent を導入してもデータの取得が高速化されるわけではないことを強調する必要があります。たとえば、導入後はそれが短縮されることはなく、増加するだけです。導入のメリットは?導入後は 1 秒以内に 33 件のクライアントリクエストを受信できることがわかりました。これが gevent の利点です。
被験者の環境を完全に理解していないと、あまり多くの提案しかできません。被験者が理解していない場合は、以前の情報をさらに分析してください。