Apache блокирует файлы сессий без причины - PullRequest
1 голос
/ 22 ноября 2010

Я продолжаю работать с устаревшими, заблокированными (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 и т.д.) это как-то связано?

Ответы [ 2 ]

0 голосов
/ 25 ноября 2010

Не совсем решение, но теперь я обошёл проблему, заставляя cron-скрипт перезагружать apache каждые 4 часа ... таким образом, по крайней мере, проблема не окажет такого большого влияния ...

0 голосов
/ 22 ноября 2010

Очень короткий пост. Мы чувствуем вашу боль, но ...

устаревшие, заблокированные, (php) файлы сессий

Это странно. обычно система не блокирует сеансовые файлы. Что у вас есть, что потоки не закрываются , потому что файлы сеанса заблокированы?

удерживать темы от закрытия

Это многопоточный или предварительно разветвленный apache? Хотя в наши дни это не должно иметь большого значения, было бы полезно знать.

Используете ли вы пользовательский обработчик сеанса или по умолчанию?

Вы пытались использовать пользовательский обработчик сеанса, который не использует файлы в качестве подложки (например, mysql, memcache). Хотя это на самом деле не решает проблему, оно может дать представление о том, что происходит не так.

Вы проверили состояние файлов сеанса, которые были созданы? Новые файлы созданы нормально? Какие разрешения? Если вы выключаете веб-сервер, удаляете файлы вручную, а затем перезапускаете, проблема проявляется немедленно или только после задержки (последняя может указывать на проблему со сборкой мусора).

Что-нибудь заметное в системном журнале или httpd / error_log?

Вы в последнее время fsck'd файловую систему?

Хотя с блокировкой файлов действительно может быть проблема, я никогда не сталкивался с подобной проблемой.

...