wordpress icon

Redis オブジェクトキャッシュ WordPress

wordpress nginx サイトヘルスで「永続的オブジェクトキャッシュを使用してください」とメッセージがでます。対策は?

永続オブジェクトキャッシュを使用してください

WordPress サイトヘルスの「永続オブジェクトキャッシュを使用してください」というメッセージは、

Nginx や FastCGI キャッシュではなく、データベースクエリ結果のキャッシュ(オブジェクトキャッシュ)に関する警告です。

なぜ警告されるのか

WordPress はデータベースから多くのクエリを実行します。

このクエリ結果をメモリ(Redis や Memcached)に保存して再利用するのが 永続オブジェクトキャッシュ です。

 

  • サイトが小規模なら必須ではない

  • サイトが大きくなると DB 負荷が減り、体感速度も向上する

 

という性質があります。

対策方法

Redis を導入する

Console から Redis をインストール

Debian + Nginx + WordPress なら Redis が一番簡単です。

				
					apt update
apt install redis-server php-redis -y
				
			

次に php.ini を確認して Redis が有効かチェック

redis と出れば OK !

				
					php -m | grep redis

				
			
redis
と表示されれば OK

動作確認は、

				
					systemctl status redis-server
				
			
● redis-server.service - Advanced key-value store
Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; preset: enabled)
Active: active (running) since Mon 2025-08-18 07:16:21 JST; 55min ago
Docs: http://redis.io/documentation,
man:redis-server(1)
Main PID: 70812 (redis-server)
Status: "Ready to accept connections"
Tasks: 5 (limit: 37515)
Memory: 4.2M
CPU: 5.646s
CGroup: /system.slice/redis-server.service
└─70812 "/usr/bin/redis-server 127.0.0.1:6379"

Aug 18 07:16:21 web215 systemd[1]: Starting redis-server.service – Advanced key-value store…
Aug 18 07:16:21 web215 systemd[1]: Started redis-server.service – Advanced key-value store.

動作しているようです。

php-fpm restart

				
					systemctl restart php8.2-fpm
				
			

WordPress 側でプラグインを導入

Redis Object Cache

有効化して「Enable Object Cache」を押すと、サイトヘルスの警告が消えます。

redis object cache

redis object cache の効果

テストサイトについて

Procmox VE – OS debian  – LXC

  • CPU              2 CPU(s)
  • Memory         2.00 (GiB)
  • SWAP          512.00 (MiB)
  • Bootdisk size f  1.90 (GiB)

ディスクは M.2 SSD

Fastcgi-cache 無効

redes objevt cache の効果を判定するには、ページキャッシュを無効にしないと判定はできない。

実験したサイトは、nginx だったので、まずは、fastcgi-cache を無効にしてから

redis object cache 導入前後

redis object cache 導入前後のアパッチベンチ(ab)で効果を見る。

redis object cache 導入前

% ab -n 100 -c 100 https://nginx.home/

Document Length: 80300 bytes

Concurrency Level: 100
Time taken for tests: 1.955 seconds
Complete requests: 100
Failed requests: 0
Total transferred: 8053700 bytes
HTML transferred: 8030000 bytes
Requests per second: 51.14 [#/sec] (mean)
Time per request: 1955.323 [ms] (mean)
Time per request: 19.553 [ms] (mean, across all concurrent requests)
Transfer rate: 4022.32 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 39 117 13.3 111 134
Processing: 42 897 505.8 926 1736
Waiting: 40 894 507.9 925 1735
Total: 154 1013 514.9 1035 1870

Percentage of the requests served within a certain time (ms)
50% 1035
66% 1318
75% 1461
80% 1571
90% 1736
95% 1819
98% 1861
99% 1870
100% 1870 (longest request)

redis object cache 導入後

% ab -n 100 -c 100 https://nginx.home/

Document Length: 80459 bytes

Concurrency Level: 100
Time taken for tests: 1.998 seconds
Complete requests: 100
Failed requests: 0
Total transferred: 8069600 bytes
HTML transferred: 8045900 bytes
Requests per second: 50.06 [#/sec] (mean)
Time per request: 1997.542 [ms] (mean)
Time per request: 19.975 [ms] (mean, across all concurrent requests)
Transfer rate: 3945.08 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 40 116 12.4 112 133
Processing: 49 925 519.8 949 1780
Waiting: 37 920 521.4 948 1779
Total: 163 1041 527.7 1057 1911

Percentage of the requests served within a certain time (ms)
50% 1057
66% 1352
75% 1527
80% 1615
90% 1796
95% 1885
98% 1902
99% 1911
100% 1911 (longest request)

Redis Object Cache の効果は、

Fastcgi OFF で計測、アパッチベンチの結果は、

パフォーマンスが少し低下している。

Lighthouse のパフォーマンステストは、全く同じ数値で変化はない。

パフォーマンスチューニング

wp-config.php に設定を追加

				
					// Redis キャッシュ設定
define('WP_CACHE_KEY_SALT', 'example.com:');  // サイト固有のプレフィックス
define('WP_REDIS_CLIENT', 'phpredis');        // Predis より phpredis が高速
				
			

Redis の設定調整(/etc/redis/redis.conf)

メモリ制限(例: 256MB)

				
					maxmemory 256mb
maxmemory-policy allkeys-lru
				
			

設定を反映

				
					sudo systemctl restart redis-server
				
			

結果

Redis Object cache ON

% ab -n 100 -c 100 https://nginx.home/

Document Length: 80459 bytes

Concurrency Level: 100
Time taken for tests: 1.998 seconds
Complete requests: 100
Failed requests: 0
Total transferred: 8069600 bytes
HTML transferred: 8045900 bytes
Requests per second: 50.06 [#/sec] (mean)
Time per request: 1997.542 [ms] (mean)
Time per request: 19.975 [ms] (mean, across all concurrent requests)
Transfer rate: 3945.08 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 40 116 12.4 112 133
Processing: 49 925 519.8 949 1780
Waiting: 37 920 521.4 948 1779
Total: 163 1041 527.7 1057 1911

Percentage of the requests served within a certain time (ms)
50% 1057
66% 1352
75% 1527
80% 1615
90% 1796
95% 1885
98% 1902
99% 1911
100% 1911 (longest request)

パフォーマンスチューニング

% ab -n 100 -c 100 https://nginx.home/

Document Length: 80459 bytes

Concurrency Level: 100
Time taken for tests: 1.973 seconds
Complete requests: 100
Failed requests: 0
Total transferred: 8069600 bytes
HTML transferred: 8045900 bytes
Requests per second: 50.69 [#/sec] (mean)
Time per request: 1972.650 [ms] (mean)
Time per request: 19.727 [ms] (mean, across all concurrent requests)
Transfer rate: 3994.86 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 43 107 15.8 98 128
Processing: 57 902 509.5 927 1759
Waiting: 38 898 511.3 924 1758
Total: 155 1009 522.0 1023 1885

Percentage of the requests served within a certain time (ms)
50% 1023
66% 1309
75% 1457
80% 1578
90% 1724
95% 1842
98% 1862
99% 1885
100% 1885 (longest request)

誤差範囲ではあるが、微妙にパフォーマンスは向上した。

結論

キャッシュは、ボトルネックとなる部分を改善するために行われてきた手法だが、ハードディスクから M.2 SSD になって、データーのアクセス速度が向上したためと、CPUの性能の向上など、ハードウエアが高速になれば、キャッシュの存在は必要なくなるのかもしれない。

redis object cache の効果は、この環境下(ディスクが M.2 SSD)では残念ながら無かった。

Redis オブジェクトキャッシュ WordPress

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連コンテンツ

最近の記事

Redis オブジェクトキャッシュ WordPress