По какой-то нечетной причине только сегодня наш сервер решил очень медленно во время начала сеансов. Для каждого session_start сервер истекает через 30 секунд, или для начала сеанса потребуется около 20 секунд. Это очень странно, потому что это не очень долгое время (последний раз наш сервер сделал это около 7 месяцев назад). Я попытался изменить сеанс, чтобы работать через базу данных, и это работает отлично, однако, по мере создания нашего текущего веб-сайта, для перехода на каждую страницу потребуется несколько дней и изменить загрузку сеансов, чтобы включить новый сеанс обработчик. Поэтому мой вопрос остается:
Почему это так медленно, и почему только иногда?
Мы работаем на специализированном сервере hetzner с 24 ГБ оперативной памяти, а процессор достаточно быстрый, чтобы просто запускать простой веб-сервер (Xeon, я считаю, но я не уверен). Мы запускаем debian на сервере с установкой apache + fastcgi + php5.
Сервер не сообщает о большой нагрузке, как по статусу сервера, так и по команде top
. Vnstat
не сообщает никаких проблем с нашей сетевой ссылкой (опять же, это не приведет к медленной обработке локального сеанса). IOtop
не сообщает о проблемах с процессами, использующими весь жесткий диск. Запись в папку tmp, где находятся файлы сеанса, выполняется быстро, если выполняется через vim.
Опять же, чтобы это стало ясно, моя главная проблема здесь заключается не в том, следует ли нам переключиться на БД или в кэшированную версию сеансов, а просто спросить, почему это происходит, потому что все, что я смотрю похоже, работает нормально, за исключением самого PHP.
ИЗМЕНИТЬ: Максимальный файл в нашем каталоге PHP tmp составляет 2,9 МБ, поэтому ничего, что должно повлиять, я считаю.
ОБНОВЛЕНИЕ. Я никогда не выяснял, что не так и как его исправить, но проблема исчезла после того, как мы перешли на сеансы memcached/db.