Впс на Debian 6 стала жестко тормозить.
Перезагрузка ничего не изменила. В ISPmanager при изменении параметров стала вылетать ошибка:
disk quota exceeded
Проверяем место на жестком:
df -h #Filesystem Size Used Avail Use% Mounted on #/dev/simfs 100G 4.2G 96G 5% / df -i #Filesystem Inodes IUsed IFree IUse% Mounted on #/dev/simfs 700000 700000 0 100% /
Вот и проблема, все inodes заняты.
Inodes — это количество файлов разрешенное создавать на диске.
Чтобы подсчитать количество и найти папку воспользуемся командами:
cd / find . -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n # 1 .codepage # 1 home # 2 backupvse # 2 tmp # 10 root # 88 bin # 91 sbin # 237 lib # 840 etc # 20580 usr # 700000 var
Папка var. Можно двигаться постепенно cd var повторяя команду выше, но скорее всего это папка
/var/www/имя_пользователя/data/mod-tmp (либо /var/www/имя_пользователя/data/bin-tmp).
Идем
cd /var/www/имя_пользователя/data
Повторяем команду и убеждаемся в что mod-tmp забита по полной сессиями.
Для очистки папки mod-tmp:
find /var/www -wholename "*/data/mod-tmp/*" -type f -cmin +360 -print0 | xargs -r -0 rm find /var/www -wholename "*/data/bin-tmp/*" -type f -cmin +360 -print0 | xargs -r -0 rm #(если есть папка bin-tmp)
-cmin +360 — время, все файлы старше которого будут удалятся.
Update 10.11.2015
Аналогичным образом чистятся inodes, если сайты лежат не в /var/www/имя_пользователя/data, а в папке /home/имя_пользователя/data
find /home -wholename "*/data/mod-tmp/*" -type f -cmin +360 -print0 | xargs -r -0 rm find /home -wholename "*/data/bin-tmp/*" -type f -cmin +360 -print0 | xargs -r -0 rm
Ждем завершения. Процесс довольно длительный, так что попейте чая))
После завершения смотрим:
df -i #Filesystem Inodes IUsed IFree IUse% Mounted on #/dev/simfs 700000 68769 631231 10% /
Чтобы такого не повторялось идем в /etc/php5/apache2/php.ini и включаем авто удаление сессий.
Однако в связи с особенностями системы безопасности, включение этих параметров допустимо при работе веб-сервера apache в режиме mpm_itk или mod_fcgi.
Посмотреть режим работы можно с помощью команды:
apachectl -M | grep mpm # mpm_itk_module (static) Syntax OK
Если apache у вас в режиме mpm_itk (как перейти на такой режим работы читать в статье переводим Apache в режим mpm-ITK + ISPmanager) или mod_fcgi, то
session.gc_probability = 1 session.gc_divisor = 1000 session.gc_maxlifetime = 1440
Если apache у вас в режиме mpm_prefork, то
session.gc_probability = 0 session.gc_divisor = 1000 session.gc_maxlifetime = 1440
и делаем рестарт apache
/etc/init.d/apache2 restart
Профит!