0

トルネードを利用して大きくて複雑なデータ型を計算し、提供するかなり大きなコード ベースを継承しました (1 MB の XML ファイルを想像してください)。現在、このデータを計算して提供するために、トルネードの 8 つのインスタンスが実行されています。

これは最初から間違った設計上の決定であり、サーバーにアクセスするアプリケーションから多くのタイムアウトに直面しています。

現場ですでにテストされているものを壊したくないので、レガシー コード ベースのコードをできるだけ少ない行に変更したいと考えています。このシステムを、より多くの xml 計算を並行して実行できるスレッド化されたシステムに変換するにはどうすればよいでしょうか?

4

2 に答える 2

1

Tornado を使用して、ノンブロッキング リクエストを受信します。実際の XML 処理を行うには、別のプロセスを生成するか、セロリのような非同期タスク プロセッサを使用します。セロリを使用すると、将来的にシステムのスケーリングが容易になります。実際、このモデルでは、必要な Tornado インスタンスは 1 つだけです。

@Eren - 計算リソースが飽和しているとは思いません。Tornado は現在ブロック モードでリクエストを処理しているため、8 つを超えるリクエストが同時に処理されていない可能性があります。

于 2013-01-21T08:16:53.643 に答える
1

このシステムを、より多くの xml 計算を並行して実行できるスレッド化されたシステムに変換します

計算リソースを飽和させるのに十分な Tornado インスタンスがある場合、スレッド化されたモデルに移行してもパフォーマンスはあまり向上しない可能性があります。ただし、ブロッキング コードを取り除くことは、接続のタイムアウトに役立ちます。

もう 1 つのオプションは、すべての非同期コードを取り除き、 を使用することtornado.wsgi.WSGIApplicationです。そうすれば、スレッド化された WSGI サーバーでアプリケーションを実行できます。WSGI モードで利用できない機能は、ここにリストされています。

于 2013-01-18T19:55:27.513 に答える