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.

Published by Marcin Pietrzak

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis nec ante nec lectus laoreet feugiat. Donec aliquet justo in tellus gravida, id elementum magna convallis. Curabitur faucibus mauris sed risus egestas lobortis. Nunc vestibulum elit ac ipsum ultricies, non ultrices lorem ultrices. Nam at dolor id elit lobortis ullamcorper. Fusce commodo turpis nisi, efficitur efficitur libero dictum eget. Morbi viverra dignissim lacus. Vestibulum mi justo, dictum ut iaculis eget, scelerisque et nibh.

Więcej w apache, memcache, php
memcache dla IP.Board

Żeby wybrać jedną z kilku metod cache'owania w IP.Board musimy w pliku conf_global.php określić, którą z metod wybieramy poprzez ustawienie...

Zamknij