2011-12-20 9 views
0

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ヒットを期待しています。事前に

おかげ

+0

私はMaxClientsの数を700に減らしました.1500は8GbのRAMにはあまりにも多く、それぞれ10以上のメガを使用するかもしれないので、700はすでに高い数値です。 –

+0

私は、apacheのスレッドがそれを死ぬ速度は、負荷が再び高くなった場合にゆっくりと殺すことに関連していると思うので、ショット時間内にすべてのスレッドを再度respawnする必要はありません。 –

答えて

0

は、Apacheは、接続を閉じる前にリクエストを待つためにどのように多くの秒指定オプションのKeepAliveTimeoutを持っています。これには、KeepAliveオプションをOnに設定する必要があります。

GET、POSTを待つために、第2の最大数を指定するオプションのタイムアウト、あなたの作業負荷とあなたのための最適なバランスを見つけるまで

は、おそらくあなたはこれらのオプションを試してみる必要がありますPUT要求でもあります応用。おそらく、タイムアウト値とKeepAliveTimeoutの値が低いKeepAlive Onが良い解決策になる可能性があります。

+0

お返事のおかげで、私は、この設定を使用していた 'タイムアウト300/ キープアライブオン/ MaxKeepAliveRequests 100/ のKeepAliveTimeout 15' しかし、スレッドは20分以上のために生きると、彼らは毎秒1の割合で死にます。私はちょうどKeepAliveをオフにして数を増やした 'MaxSpareServers 100' 他の考えは?ありがとう –

関連する問題