Я продолжаю работать с устаревшими, заблокированными (php) файлами сеансов на моем сервере apache, которые не позволяют потокам закрываться и, таким образом, поглощать ресурсы моего сервера.
Это окно Ubuntu и с session_write_close ();в автоматически добавляемом скрипте помогите.Я продолжаю получать заблокированные сеансовые файлы, которые являются локальными (диск памяти) и не имеют других процессов, пытающихся получить к нему доступ ...
Я просто не знаю, где искать ...
Чтобы прояснить ситуацию немного:
- мы используем Ubuntu Stock Apache2 (MPM prefork, я полагаю) со стандартной обработкой сеансов PHP
- сеансы хранятся на ramdrive, так чтоfsck-in вещь не сделает много;)
Проблема возникает непоследовательно и на разных временных интервалах.Но после просмотра открытых файлов (через lsof | grep sess_
) я продолжаю видеть потоки apache2, удерживающие эти файлы.
apache2 28405 www-data 30uW REG 0,18 38652 2737432 /data/ramdrive/sess_8f95700e5d2ed8daf2e2d12625ed7d53
Поскольку у меня нет проблемы с банкоматом, у меня нет реальных данных, но они выгляделичто-то вроде этого: делая strace -p для вышеупомянутого идентификатора, я вижу что-то в строке
F_LOCK(30,
что-то ... делая ls -l /proc/[apache pid]/fd/30
(КСТАТИ каждый раз, когда его всегда 30!) это будет указыватьв какой-то файл сеанса
Фактический файл не содержал ничего странного и выглядел довольно вменяемым ...
Имеет ли тот факт, что когда это произошло, все FD указывали на 30 (так что в конечном итоге это /proc/123123/fd/30
и /proc/123124/fd/30
и т.д.) это как-то связано?