RAID 10と8GbのRAMを搭載した2台のXeon Quadコアを搭載したLinuxサーバーを実行しています。 私はサーバーに過負荷をかけるのに使用しない製品を提供していますが、3ヶ月に3回、製品の性質上、膨大な量のクライアントが接続されています。 たとえば、3時間の経過時間内に1.000.000リクエストがあります。 サーバにはMySQLに2Gb、Apache2にはmpmを使用する1500スレッドに制限されています。 問題は、サーバーが最大数のスレッドに達したとき(サーバーがMaxClients設定に達したとき、MaxClients設定を上げることを検討してください)、サーバーの負荷平均は非常に高くなります。クライアントの数が15から400程度になります。アクセスを停止すると、スレッドスレッドの数が非常に多くなり、その時間を節約するために20分以上かかることがあります。 'ps aux'を実行することで、プロセスがサーバーが最大スレッド数に達するのと同時に作成されることがわかります。 私は彼らのうちのどれかを使っているだけで何もしていません。 MSQLには保留中のクエリがありません。最大スレッド数に達した後にApacheがスレッドを20分以上殺していない
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 2000
#ListenBacklog 2000 #have just commented this out
#MaxClients 150
MaxClients 1500
#MaxRequestsPerChild 0
MaxRequestsPerChild 10000 # have just setted this value
</IfModule>
これを防ぐにはどうすればよいですか?なぜその糸は死ぬか仕上げられていないのですか?
私は再び今日1.000.000ヒットを期待しています。事前に
おかげ
私はMaxClientsの数を700に減らしました.1500は8GbのRAMにはあまりにも多く、それぞれ10以上のメガを使用するかもしれないので、700はすでに高い数値です。 –
私は、apacheのスレッドがそれを死ぬ速度は、負荷が再び高くなった場合にゆっくりと殺すことに関連していると思うので、ショット時間内にすべてのスレッドを再度respawnする必要はありません。 –