Сегодня произошла такая ситуация, знакомый попросил проверить его сервер, в итоге любая операция выводит сообщение что на диске закончилось место...
Вот тут видно что место есть
df -h |grep /sda1
/dev/sda1 120G 78G 37G 68% /
А если сделать вот так, то увидим что его нет
df -i /
Файловая система Iнодов IИспользовано IСвободно IИспользовано% Cмонтировано в
/dev/sda1 7987200 7987200 0 100% /
Как такое получается, ну видимо так зарезервировали свободное место на диске...
На веб-сервере чаще всего проблема в сессиях, но удалить их так просто не получится, нужно сделать примерно вот так (предварительно зайдя в папку с сессиями или указав путь до нее вместо точки)
find . -name "sess*" -delete -print
Теперь сидим и смотрим как чистятся сессии... Но нет, оно зависает через несколько сотен тысяч файлов, rsync пустой папки тоже не очень, прочитал на хабре, оказывается лучше
rm -r /path/
т.е. не так ./*, а просто до папки...
Дальше выяснилось, что не только сессиями заполнен диск, нужно искать дальше, на помощь приходит примерно такой скрипт
du -s --inodes * 2>/dev/null |sort -g
Перейдем в корень и попробуем выяснить где тут много файлов...
Можно конкретно указывать где смотреть...
du -s --inodes /var/* 2>/dev/null |sort -g
или
du -s --inodes /var 2>/dev/null |sort -g
ну к этому позже, теперь о том, как чистить устаревшие сессии в кастомных директориях, когда каждый сайт определяет свою папку с сессиями, ну примерно вот так
find /path/to/sess -name "sess_*" -mmin +43200 -delete
Это чистит куки, у которых время изменения больше 43200 минут, т.е. более месяца... Добавим это в кронтаб раз в 15 минут и можем жить спокойно... За месяц примерно 343278 сессий, при посещаемости 200 человек в сутки должно быть 6000 сессий в месяц, это значит что слишком много кто получает страницы не используя куки, т.е. каждая страница как новый посетитель, это скорей всего, всякие поисковые роботы, парсеры конкурентов...
Нужно будет придумать такой механизм хранения сессий, когда изначально куки выдаются на 30 минут, но если повторно обратишься в течение этих 30 минут, например, товар в корзину добавил или просто перешел с одной страницы на другую, то уже выдавать +10 минут, потом +20, чем активнее пользователь, тем дольше у него куки. К этому вопросу я еще вернусь позже...