Pewien dość mocno obciążony serwer www (apache2) strasznie dużo zapisywał w katalogu sesji PHP. Na tyle dużo, że zaczeło to być problemem, jeszcze nie krytycznym, ale już zauważalnym.
Jednym z możliwych rozwiązań jest przeniesienie sesji do bazy danych, ale ze względu na specyfikę danych sesyjnych nie jest to szczególnie dobre rozwiązanie przy tej wielkości serwisu, a dodatkowo serwis korzysta z postgresa, więc wrzucanie w niego sesji jest jeszcze mniej polecane.
Rozwiązaniem zastosowanym, a które szczerze polecam jest memcache.
Instalacja jest banalnie prosta. Najpierw odpowiednie moduły na serwerze: (dla debianowaych):
sudo apt-get install memcached php5-memcache
Sprawdzamy czy serwer memcache wstał
netstat -ntlp | grep mem
oraz czy w używany php jest załadowany moduł memcache.
W konfiguracji php należy zmienić sposób przechowywania sesji oraz ustawić dane dostępowe do memchache’a:
;session.save_handler = files
session.save_handler = memcache
session.save_path="tcp://127.0.0.1:11211?persistent=1&weight=1&timeout=1&retry_interval=15"
Teoretycznie powinno zadziałać.
Niestety u mnie wystąpił następujący błąd:
Fatal error: session_start() [function.session-start]: Failed to initialize storage module: memcache (path: [...]/session) in /var/virtuals/[...].php on line 41
Który związany był z ustawianiem przez plik konfiguracyjny serwisu następującej wartości
ini_set("session.save_path",SESSION);
i dopiero po jej usunięciu wszystko zaczęło śmigać tak jak powinno.