0

Pythonスレッドライブラリを使用して記述されたサービスをローカルサーバーで実行しています。これを一種のWebクローラーと考えてください。50スレッドを使用します。アマゾンウェブサービスクラウドにデプロイしてスケールアップしたいので、より多くのスレッドを使用します。

簡単に言うと、URLとページコンテンツの2つのキューがあります。スレッドはURLを選択し、Webページのコンテンツをフェッチして配置しますQinputQoutputQinputQoutput

質問:スレッドの数をたとえば500、5,000、または50,000に増やすだけで十分ですか?AWS + Pythonがそれを処理しますか?サービスがシームレスに実行されることを期待する必要がありますか、それともAWSにマルチスレッドサービスを移植するときに知っておくべき「標準的な」設計上の落とし穴がいくつかありますか?

スレッドの主なタスクはページをクロール/スクレイピングしながらインタープリターの外部に呼び出すことであるため、ここでは問題にはならないはずですが、グローバルインタープリターロックを認識しています。

4

1 に答える 1

3

単一のインスタンスには制限があります。特に大きなスレッドを選択した場合は、インスタンス内でかなり多くのスレッドを生成できる可能性があります。ただし、パフォーマンスを向上させるのに役立たなくなるまで、追加のスレッドの収穫逓減が発生します。

ただし、システムを単一インスタンスの制限を超えて拡張する場合は、システムを複数のインスタンスで実行できるようにするのが最適です。その場合、あなたの決定は運用上のみであり、技術的ではありません。ほぼ無限の運用リソースを使用できるAWS環境で実行している場合は、それを検討する必要があると思います。

基本的に分散キューシステムであるSQSをチェックアウトすることもできます。これにより、必要な数のインスタンスの作業を同期できます。

于 2013-01-09T12:14:23.153 に答える