Apache mod_cache を設定しました

前回 のチューニングでメモリをかなり節約できたので、varnish でも入れてみようかと思った。

しかし、varnish の場合 SSL で受けられないので、さらに前段に何かを配置する必要がありそうで?ちょっとややこしいので、Apache のキャッシュモジュールを使ってみようと思った。

apache のバージョンは 2.4.43 。キャッシュモジュールはデフォルトでロードされていた。

[root@ip-172-16-0-214 php-fpm.d]# httpd -M | grep -E "^\s*cache_module|^\s*cache_disk_module"
 cache_module (shared)
 cache_disk_module (shared)

httpd.conf に下記の設定を追加

<IfModule mod_cache.c>
    <IfModule mod_cache_disk.c>
        CacheRoot /var/www/cache
        CacheEnable disk /
        CacheDirLevels 5
        CacheDirLength 3
    </IfModule>
    CacheIgnoreCacheControl On
    CacheIgnoreNoLastMod On
    CacheDefaultExpire 600
    CacheMaxExpire 86400
</IfModule>

上で指定した /var/www/cache ディレクトリを追加 & パーミッション変更

mkdir /var/www/cache
chmod 777 /var/www/cache

そしたら Apache を再起動するだけ。
ベンチを回してみる。

# ab -n500 -c20 https://life.iua.jp/
This is ApacheBench, Version 2.3 <$Revision: 1874286 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking life.iua.jp (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Finished 500 requests

(中略)

Requests per second:    403.05 [#/sec] (mean)
Time per request:       49.622 [ms] (mean)
Time per request:       2.481 [ms] (mean, across all concurrent requests)
Transfer rate:          11248.26 [Kbytes/sec] received

なんと、衝撃の Requests per second: 403.05

これまで 6 ちょっとだったので、60 倍以上のスコアが出ている。
恐るべしキャッシュの威力。