web-dev-qa-db-ja.com

Apache2:サーバーがMaxClients設定に達しました。MaxClients設定を上げることを検討してください

専用のUbuntu12.04 LTS(Apache/2.2.22)、PHP 5.3 withAPC)で問題が発生しています。

数時間ごとにこれが発生するのがわかります。

[Fri Aug 17 15:36:51 2012] [error] server reached MaxClients setting, consider raising the MaxClients setting

これにより、サーバーはすべての接続をドロップ/拒否します。

Apacheを再起動するとき:

[Fri Aug 17 15:38:14 2012] [warn] child process 8946 still did not exit, sending a SIGTERM
[Fri Aug 17 15:38:14 2012] [warn] child process 7496 still did not exit, sending a SIGTERM
[Fri Aug 17 15:38:16 2012] [warn] child process 8946 still did not exit, sending a SIGTERM
[Fri Aug 17 15:38:16 2012] [warn] child process 7496 still did not exit, sending a SIGTERM
[Fri Aug 17 15:38:18 2012] [warn] child process 8946 still did not exit, sending a SIGTERM
[Fri Aug 17 15:38:18 2012] [warn] child process 7496 still did not exit, sending a SIGTERM
[Fri Aug 17 15:38:20 2012] [error] child process 8946 still did not exit, sending a SIGKILL
[Fri Aug 17 15:38:20 2012] [error] child process 7496 still did not exit, sending a SIGKILL
[Fri Aug 17 15:38:21 2012] [notice] caught SIGTERM, shutting down
[Fri Aug 17 15:38:21 2012] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Fri Aug 17 15:38:22 2012] [notice] Apache/2.2.22 (Ubuntu) PHP/5.3.10-1ubuntu3.2 with Suhosin-Patch mod_ssl/2.2.22 OpenSSL/1.0.1 configured -- resuming normal operations

これが起こり始めたので、私はApacheの構成をアップしました(16GbのRAMを備えた6コアマシンなので、私はそれをたくさんアップすると思いました)。

<IfModule mpm_prefork_module>
    StartServers          8
    MinSpareServers       5
    MaxSpareServers      10
    ServerLimit         500
    MaxClients          500
    MaxRequestsPerChild 1000
</IfModule>

サーバーはPHP(静的ファイルなし)のみを提供し、ページの読み込みは数秒を超えることはありません...

Mod_statusを監視しています(アクティブ化したばかりです)が、奇妙なことは何もありません...

Server uptime: 20 minutes 46 seconds
Total accesses: 9206 - Total Traffic: 641 kB
CPU Usage: u147.52 s17.21 cu0 cs0 - 13.2% CPU load
7.39 requests/sec - 526 B/second - 71 B/request
2 requests currently being processed, 8 idle workers

___...W__..._W.....__...........................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
....................................................

Apache abでストレステストを実行して、再現できるかどうかを確認しました...運が悪かったです。 :(

編集:私はちょうど大きな発見をしました:

DEBUG: WARNING - require(): GC cache entry '/var/www/common/revisions/1061/library/core/bootstrap.php' (dev=64513 ino=1577080) was on gc-list for 3601 seconds /var/www/common/revisions/1061/library/core/cache/disk/dao.php (16)

このエラーが問題の原因です。APCに関連していると思います。

2
Ian

問題は、APCがメモリ不足か、Apacheをダウンさせていた(オペコードにファイルを保存するための)何かであったようです。メモリ制限を256Mに上げたとき(apc.shm_size=256M)問題は解決しました。

2
Ian

Apacheをリバースプロキシの背後に置く(nginxなど)ソースからApacheをコンパイルする前に、制限を256から約2048に増やすために、Apacheのソースに「ハードコード」する必要があります。

1
tquang