Однако сессии!
17 Feb 2009, 3:00
Однако речь пойдет далеко не об учеба и эта заметочка будет интересна скорее всего программистам и техническим менеджерам.
Задача: оптимизировать тормозящий проект.
Данные: процессор занят, и постоянно растет iowait. Отдача статика фронтендом ускорила дело (теперь процесс апача не кушал 70мб памяти, чтобы отдать одну картинку), но проблемы не решила. Кеширование запросов базы в память дело тоже, несомненно, ускорило, но проблема по прежнему оставалась… Переодически апач задыхался в своих дочках и умирал, забивая всю оперативку..
И узким местом оказались… сессии! В социальных проектах постоянно важна авторизация и другие данные пользователя. Оказалось, что процессы лочили сессии, а другие вставали в очередь. Диск скрипел как старая дверь и еле-еле отдавал данные. Быстрое решение: создать ramdisk и вынести сессии туда. Именно это я всем и буду советовать. И нечего переживать, скорее всего в случае физического рестарта сервера вы получите массовый разлогин — а это не страшно!
Именно это быстрое решение в десятки раз ускорило сайт — так быстро еще не работало! :) В планах — вынести весь кеш в memcached. Возможно даже на отдельную машинку.