私は基本的にcoroutines in Tornadoを理解しています。これは、特に、完了するまでにかなりの時間を要する同時リクエストを処理するという点で、APIサーバーの拡張に役立つはずです。しかし、単純なロードテストでは、コルーチンを使用するのは実際には単純なブロッキング関数呼び出しを使用するよりも悪いようです...竜巻はコルーチンと比べて悪いですか?
以下は、負荷テストの同時実行レベル4を使用したAPI応答時間を示す2つのスクリーンショットです4つのイナゴまたは「ユーザー」)。/v1エンドポイントは単純なブロッキング関数呼び出しを使用し、/ v2エンドポイントはtornado.gen.coroutine
を使用します。私はGET/v2/infoの平均応答時間がGET/v1/infoの平均応答時間よりも大幅に遅くなると予想しましたが、実際には平均応答時間は,です。
私はどちらか何か間違ったことや基本的な概念を誤解してるような気がします。誰かが私のサンプルプロジェクトが上記の数字を表示している理由を教えてもらえますか?コルーチンベースのAPIが、シンプルなAPIよりも並行負荷の方が悪い場合
サンプルtornado-loadtest
プロジェクト:https://github.com/martyychang/tornado-loadtest
情報をいただきありがとうございます。だから私はあなたの答えを正しく理解しています:メモリ内の計算をする代わりに、インターネットから大規模ファイルをダウンロードするのが遅い場合、コルーチンが役立つでしょうか? –
はい、そうです。 –