http サーバーである python スクリプトがあります: http://paste2.org/p/89701、値以下の同時実行レベル (-c スイッチ) で ApacheBench (ab) に対してベンチマークするときソースコードのsocket.listen()-callで指定されたものはすべて正常に動作しますが、Apacheベンチの同時実行レベルをsocket.listen()-callの値よりも高くするとすぐにパフォーマンスが低下します。いくつかの例:
- socket.listen( 10 ) および ab -n 50 -c 10 http://localhost/ = 1200req/s
- socket.listen( 10 ) および ab -n 50 -c 11 http://localhost/ = 40req/s
- socket.listen( 100 ) および ab -n 5000 -c 100 http://localhost/ = 1000req/s
- socket.listen( 100 ) および ab -n 5000 -c 101 http://localhost/ = 32req/s
2 つの呼び出しの間でコードに変更はありません。何が問題なのかわかりません。この問題に 1 日悩まされています。また、次の点にも注意してください。同じコードの多重化バージョン (スレッド化されたバージョンと比較するために書いたもの) は、socket.listen() がどのように設定されているか、または apache の同時実行 (-c スイッチ) がどのように設定されているかに関係なく、正常に動作します。
私は、comp.lang.python と私のブログに投稿された IRC/python ドキュメントに 1 日を費やしました。助けて!