サーバーが400以上の同時接続を処理できないのはなぜですか?

サーバーが400以上の同時接続を処理できないのはなぜですか?

Intel Xeon + 8GbボックスにUbuntu 14.04 LTS、カーネル3.13があります。 mpmワーカーのApache 2.4.7で構成され、最大4000のワーカースレッドを収容できます。 ISPが許可する最大帯域幅は100Mbpsです。

Apache abを使用してこのサーバーをローカルでテストする場合:

 ab -n 10000 -c 1000 http://www.mysite.com/test.png

別の端末でApacheワーカーを確認してください。

 watch -n0 'ps -eLf | grep apache | wc -l'

要求を処理するスレッドが1000個に達するまでワーカースレッドの数が増加することがわかります。今まではそんなに良くなった。

ただし、外部マシンで同じテストを実行すると、ワーカー数は400人ほど増加しません。私はこれがtcp / ip構成のいくつかのボトルネックに関連していると思います。 Webを検索しながら、より多くの同時接続を達成するためにいくつかのsysctl設定を増やす方法を説明するいくつかのWebページを見つけました。私はこれを試しました:

 sysctl -w net.core.somaxconn=50000
 sysctl -w net.ipv4.tcp_max_syn_backlog=30000
 sysctl -w net.core.netdev_max_backlog=5000

しかし、これらの新しい設定でテストを繰り返しても、違いはありませんでした。同時に400人以上の労働者を見ることはできません。

ボトルネックが発生する場所はどこですか?

ベストアンサー1

おすすめ記事