Позвольте мне начать говорить, что я не системный администратор, я программист на php, мало разбирающийся в системах unix, так что извините, если я скажу какую-то ерунду.
Я управляю этой виртуальной машиной с несколькими установленными Wordpress, и в поисках того, что вызывает некоторые ошибки интерфейса, я заметил, что диск каждые два часа начинает медленно заполняться чем-то, что я еще не узнал, и продолжает заполняться и заполнение до тех пор, пока не останется больше места (что, как я полагаю, вызывает ошибки, которые клиент видит во внешнем интерфейсе, когда mysql начинает давать сбой при выполнении множества запросов), а затем внезапно сбрасывает оставшееся пространство в исходное состояние.
Поскольку я недавно очистил оболочку, установленную в файловой системе, через дыру в одной из многих устаревших установок WordPress, теперь я предполагаю, что это вызывает какое-то вредоносное ПО (или, может быть, какой-то ужасный сценарий, написанный идиотом).
Снимок экрана, показывающий использование диска веб-монитором Glances + Grafana
С участием df
Я вижу, что диск постоянно сам заполняется, пока не остается места.
С участием du
Я только вижу, что только каталоги /var/log/
и /var/lib/php5/sessions
увеличивают свои размеры, как это обычно бывает
Я подозревал, что во временной папке что-то есть и, действительно, с inotifywait -m /tmp/ -r -e create -e moved_to -e modify
а на выходе - бесконечная подпоследовательность /tmp/ MODIFY tmpf9dIVwz
. Имя файла остается неизменным во время заливки и в следующий раз будет другим. Я попытался выяснить, что это за файл и какой процесс его пишет / редактирует, но папка / tmp / всегда пуста, а файл не существует ..
Как определить, чем вызвано заполнение диска?
Нашел.
ps aux | grep php
показал мне, какой скрипт php был запущен, и pid совпал с показанными ls -d /proc/[1-9]*/fd/* | grep tmp
.
Это плохо написанный скрипт php, который пытается сделать SQL UPDATE
несуществующих данных (плохо проанализированный CSV-файл) в бесконечном while
петля.
Теперь я предполагаю, что неудача UPDATE
оператор (который запускает PHP FATAL, который нигде не регистрируется) является причиной насыщения /tmp
папка