apache2.4+php7.2でのhttpdプロセスのメモリ使用量について

投稿者: Anonymous

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ほど増大します。

<VirtualHost *:443>
    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
</VirtualHost>

10個あると15MB。100個あると150MBほど、デフォルトのhttpdプロセスのメモリ使用量に加算されるような形です。
SSL証明書を指定しないvirtualhost設定の場合は、ここまでメモリを消費しません。
これは、こういうものなのでしょうか?
それとも、私の書き方や証明書がおかしいのでしょうか?

解決

CentOS7で、Apache2.4.6 + PHP7.2(libphp7.soモジュール)だけで動作させてみましたが、
ここまでは行きませんでした。(1/5程度)

ロードしているモジュールでメモリ使用しているように見受けますので、モジュールのロードしないように
設定を変更しながら、使用しているモジュールを特定する方法をとるのが確実と思います。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *