質問: centos7 apache2.4とphp7.2の組み合わせでwebサーバを立ち上げています。 apache 2.4.6 php 7.2.7 上記の組み合わせで、apacheを起動直後に、topコマンドでhttpdのプロセスを見た時に、いきなりhttpdの1プロセスが 250MB くらい食っています。 ``` PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND XXXXX apache 20 0 799.7m 250.2m 1.8m S 0.0 12.5 0:00.00 httpd ``` ちょっと大きすぎる気がするのですが、原因というか、この辺りをチェックすべしというのがあればアドバイスいただけないでしょうか? 以前、apache2.2系+php5.6系を使っていた時は、最初は 50MBくらいだったと思うのです。 この値がphpが利用していくうちに、コードによってはプロセスが再利用されているうちはメモリが増えていくのは仕方ないと思っているのですが、 上記250MBは、apacheを起動直後の値なのです。 ※preforkで5つ立ち上げているのですが、その5つともまず250MBスタートという感じなのです。 /etc/httpd/conf.modules.d の中で、apache2.2系の時にロードしていなかった、davなどの今のところ必要のないモジュールはロードしないようにもしています。 この情報だけでは足りないかもしれませんが、なにかヒントでもいただければ助かります。 --- ■追記 一つずつモジュールをロードしないようにしてチェックしていきましたが、数百KB程度変化する程度で、大きく変わるものはみつけられませんでした。 で、httpd.confを初期状態に戻してみると、使用メモリが激減したので、自分で手を加えた部分を少しずつ精査していったところ、VirtualHostの設定の有無で、使用メモリが変わってくることがわかりました。 以下の例のような、SNIの記述を加えると、約1.5MBほど増大します。 ``` ServerName 0001.XXXXXX.jp DocumentRoot /var/www/html/0001/ SSLEngine on SSLProtocol all -SSLv2 -SSLv3 SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!3DES:!RC4:!DH SSLCertificateFile /XXXX.crt SSLCertificateKeyFile /XXXX.key SSLCACertificateFile /XXXXinter.crt ``` 10個あると15MB。100個あると150MBほど、デフォルトのhttpdプロセスのメモリ使用量に加算されるような形です。 SSL証明書を指定しないvirtualhost設定の場合は、ここまでメモリを消費しません。 これは、こういうものなのでしょうか? それとも、私の書き方や証明書がおかしいのでしょうか?
回答: CentOS7で、Apache2.4.6 + PHP7.2(`libphp7.so`モジュール)だけで動作させてみましたが、 ここまでは行きませんでした。(1/5程度) ロードしているモジュールでメモリ使用しているように見受けますので、モジュールのロードしないように 設定を変更しながら、使用しているモジュールを特定する方法をとるのが確実と思います。