Redis per Unix-Socket als Cache in phpBB
PHPBB bietet verschiedene Möglichkeiten des Cachings zur Performanceverbesserung an. Neben dem standardmäßigen File-Cache gibt es zu XCache, APC, APCu, eAccelerator, Memcache und WinCache auch Redis als Cachesystem. In den Standardanleitungen zur Integration wird aber immer das Szenario per TCP-Verbindung vorausgesetzt. Wenn Redis jedoch auf dem gleichen Server läuft, dann bietet sich eine schnellere Verbindung per Unix-Socket an.
Der phpBB-Quellcode gibt Aufschluss darüber, dass vier Variablen in der config.php
definiert werden können.
- PHPBB_ACM_REDIS_HOST
- PHPBB_ACM_REDIS_PORT
- PHPBB_ACM_REDIS_PASSWORD
- PHPBB_ACM_REDIS_DB
Die Defaultwerte sind demnach der Standardport 6379 und localhost als Standardhost. Faktisch ist das gleichbedeutend mit folgender Einstellung in der config.php:
$acm_type = 'redis';
@define('PHPBB_ACM_REDIS_HOST', 'localhost');
@define('PHPBB_ACM_REDIS_PORT', '6379');
Redis kann jedoch auch auf einem Unix-Socket erreicht werden. Unter Debian ist das in /etc/redis/redis.conf
standardmäßig /run/redis/redis-server.sock
.
# Unix socket.
#
# Specify the path for the Unix socket that will be used to listen for
# incoming connections. There is no default, so Redis will not listen
# on a unix socket when not specified.
#
unixsocket /run/redis/redis-server.sock
unixsocketperm 770
Bleibt die Frage, was mit dem Port gemacht werden soll, da ja als Default im Quellcode 6379 eingestellt ist. Das Setzen des Ports auf 0 bringt dann das gewünschte Ergebnis, Redis wird per Unix-Socket kontaktiert.
$acm_type = 'redis';
@define('PHPBB_ACM_REDIS_HOST', '/run/redis/redis-server.sock');
@define('PHPBB_ACM_REDIS_PORT', '0');
@define('PHPBB_ACM_REDIS_DB','4');
Dazu noch eine andere Datenbank eingestellt, damit die Daten nicht in der Default-Datenbank 0 landen und damit es nicht zufällig zu unvorhergesehenen Konflikten mit anderen Programmen kommt, die ebenfalls Redis als Cache nutzen. In der Standardkonfiguration sind 16 Datenbanken eingestellt.
# Set the number of databases. The default database is DB 0, you can select
# a different one on a per-connection basis using SELECT <dbid> where
# dbid is a number between 0 and 'databases'-1
databases 16
Und schon flitzt phpBB. Getestet wurde das ganze mit phpBB 3.2.11. Es sollte aber auch bei den 3.3.x und den Vorgängerversionen funktionieren.
Stichworte: Cache, Debian, Geschwindigkeit, Linux, Performance, Phpbb, Redis, Unix-socket, Unix domain socket
Kategorien: phpBB , Debian