Назад | Перейти на главную страницу

Возможные причины полной ошибки PHP / var / lib / php / session

У меня проблема с моими сеансами PHP, и я не знаю, как это исправить.

>> df -i
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/mapper/vglocal20120426-root00   36274176 32885458 3388718   91% /
tmpfs                                6176642       1 6176641    1% /dev/shm
/dev/sda1                            64000      47   63953    1% /boot
/dev/mapper/vglocal20120426-tmp00    131072    1703  129369    2% /tmp

и

>> df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vglocal20120426-root00    545G  248G  270G  48% /
tmpfs                                 24G     0   24G   0% /dev/shm
/dev/sda1                             243M   31M  199M  14% /boot
/dev/mapper/vglocal20120426-tmp00     2.0G  802M  1.1G  42% /tmp

и у меня эта сумасшедшая статистика

drwx-wx-wt   2 root root   1016389632 Jul  9 08:13 session

iNodes уже 91% и продолжает расти каждую секунду. Проблема в том, что у меня нет большого трафика (на основе аналитики в реальном времени) на мой сайт. Я не уверен, что здесь происходит. Как отследить проблему и предотвратить ее повторение.

Мы отключили сборщик мусора PHP и вместо этого использовали cronjob каждые 8 ​​часов для удаления старых сеансов.

Прямо сейчас техподдержка запускает сценарий для удаления файлов сеанса, он работает вечно, так что это похоже на бесконечный процесс.

Благодарю, если кто-нибудь может мне здесь помочь. Спасибо

Ну да, вы попали в неприятную ситуацию. Проблема в том, что в каталоге много файлов, это может занять буквально недели чтобы удалить их все. Вы не хотите (пока) cronjob - они, вероятно, просто накапливаются друг на друге и в настоящее время усугубляют проблему. Вы также должны быть осторожны с тем, как именно вы выполняете удаление - у вас не может быть ничего, что пытается скопировать или иным образом перечислить все файлы, потому что это займет много времени и займет много памяти, прежде чем вы действительно удалите что-нибудь; вместо этого вам нужен сценарий, который readdir и удаляйте по мере поступления (подозреваю, хотя и не уверен, что find -delete может это сделать; когда мне пришлось удалить несколько миллионов файлов, я использовал небольшой скрипт ruby).

Как только вы вернете проблему под контроль (через несколько недель), затем вы можете запускать cronjob каждый час, чтобы уничтожить все, что старше нескольких дней / недель / чего угодно. Я предполагаю, что у тебя есть лет там есть файлы сеанса. Будь я проклят, если я знаю как - по моему опыту, PHP неплохо держит такие вещи под контролем.