0

どんな調整を行っても、サーバーが 20000x40000 のベンチマーク テストに合格できないというボトルネックが発生しています。サーバーには128G RAMがあり、Xeon 6コアCPU、centos5.6-64bitが良好な状態です。

私は以下を含む組み合わせを試します:

nginx + uwsgi + python2.7
nginx + apache + mod_wsgi + python2.7
apache + mod_wsgi + python2.7

それらのどれも apache のベンチマークを通過できませんでした:

ab -c 20000 -n 40000 (without -k)

偶然にも、ほぼすべてのテストが 32000 リクエスト前後で失敗しました

nginx と uwsgi に関する詳細:

nginx:

worker_processes  24
use epoll
worker_connections  65535

uwsgi:

listen 2048
master true
workers 24
uwsgi -x /etc/uwsgi_conf.xml --async 256 --file /var/www/example.py &

誰かそれについて何か考えがありますか?可能な解決策と提案に事前に感謝します

4

1 に答える 1

2

単一のシステムでこのような量の同時接続を許可するには、カーネルチューニングの膨大なリストが必要であり、おそらく本番環境でこのような負荷を管理することはできません。

まず、エフェメラルポートの数、ソケットバックログキュー、プロセスごとに許可されるファイル記述子の数などを増やす必要があります...

これに加えて(このような非現実的なテストを停止するにはすでに十分なはずです)、uWSGIの非同期コアの数を20kに増やす必要があります。tahtには何の問題もありません(各コアは1ページ未満のメモリを消費します)が、システムで少なくとも40kのソケットが開いた状態で終了します。

これはnginx+uwsgi用です。

Apacheを使用すると、20kのプロセスまたはスレッドで終了します。これは、40kの開いたソケットよりもさらに悪い結果です。

于 2011-09-27T08:22:09.923 に答える