サーバーをいじりながら、WordPressの裏側でオブジェクトキャッシュをストアしてるRedisにTCPで接続してることに気づいた。WordPress…というか、php-fpmとRedisは同じサーバーで動いてるのになんでunix socketじゃないんだ。…というわけで、unix socketでの接続にしてみることにした。
今のところ、php-fpmを動かしてるユーザーと、Redisを動かしているユーザーは別。unix socketにするとなると、パーミッションをどうするのか考えなきゃならんな、と。777にしようかとも思ったけど、だいたいろくなことにならないような気もして、Redisユーザーのグループに対して読み書き権限を設定して、php-fpmを動かしているユーザーをそのグループに突っ込むことにした。
まず、Redisの設定を変更した。
redisの設定ファイルに以下の内容を追記して、socketのパスとパーミッションを指定。
unixsocket [redisのsocketのpath]
unixsocketperm 770
その後、Redisを再起動したら、Redisのログにsocketが使えるようになった旨の出力があった。
で、次にphp-fpmを動かしているユーザーをRedisのユーザーが所属するグループに追加。
sudo usermod -aG [redisを動かしているユーザーが所属するグループ] [php-fpmを動かしているユーザー]
まぁ、これでphp-fpmからRedisにunix socketで接続できるようになったはず。
WordPressでは、オブジェクトキャッシュをRedisにストアするプラグインとして、Redis Object Cacheを使っているので、プラグインに対してsocketのパスを設定した。wp-config.phpに定数でパラメーターを設定するようだ。
define(‘WP_REDIS_CLIENT’, ‘pecl’);
define(‘WP_REDIS_SCHEME’, ‘unix’);
define(‘WP_REDIS_PATH’, ‘[redisのsocketのpath]’);
さて、Redisにunix socketで接続するように切り替えてみて、めちゃくちゃ早くなった感じもしないが、気分的には多少速くなった気が…しないでもない。
一応、How fast is Redis?How fast is Redis?を眺めてみると、
Depending on the platform, unix domain sockets can achieve around 50% more throughput than the TCP/IP loopback (on Linux for instance).
ってことのようで。
コメントを残す