0

非常に強力なサーバー (32 コアの CPU、96 GB の RAM) があり、apache が prefork モードで実行されています。apache2.conf ファイルには次のような設定が含まれています。

<IfModule mpm_prefork_module>
    StartServers         2
    MinSpareServers       5
    MaxSpareServers      20
    ServerLimit      3000
    MaxClients           3000
    MaxRequestsPerChild   1000
</IfModule>

問題は、Web サイトの負荷が高い場合 (正確には apache プロセス数が 1000 に達した場合) (または StartServers を 1000 を超えて設定した場合)、apache2 がフリーズし、再起動する必要があることです。それでも RAM は十分にあり、CPU は十分に活用されておらず、Apache プロセス数は maxclients をはるかに超えています。

私の質問は、apache が conf ファイルで構成された maxclients に到達できるようにするにはどうすればよいですか?

/etc/security/limits.conf を使って、最大オープン ファイルと nprocs を 5000 に設定したことを考慮してください (ulimit -a は、これらの値が十分に考慮されていることを示しました)。

/var/log/apache2/error.log にエラーが表示されない

4

1 に答える 1

0

Apache サーバーには、コンパイル済みのハード制限がある場合があります。これを変更するには、Web サーバーを再コンパイルする必要があります。デフォルトは 200000 で十分高い値ですが、Linux ディストリビューションのパッケージは異なる場合があります。

ウェブサーバーから提供される静的ファイルを取得することをお勧めします。Apache の前に nginx または lighttp サーバーを配置します。静的コンテンツ (画像、CSS、JavaScript など) を提供し、動的要求を apache に転送します。

于 2012-07-04T20:25:54.300 に答える