У меня проблема с моими сеансами 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 неплохо держит такие вещи под контролем.