Внезапно у моего сервера закончилась память. Я попытался проверить место на диске с помощью команды "df -k", но все выглядело нормально. Итак, после отслеживания многих вещей я обнаружил, что служба httpd хранит удаленные файлы во временной памяти, которую нельзя исправить с помощью "df -k". Чтобы проверить последние удаленные файлы, которые все еще находятся в службе, я использовал "sudo lsof | grep deleted" это команда.
httpd 58324 58501 apache 8ur REG 253,0 0 279075355 /tmp/.ZendSem.SpCcXd (удалено)
Это приложение Magento на сервере centos7 (linux) с apache 2.4.6 после некоторого времени, которое я обнаружил, когда остановил apache и запустил эту команду «sudo lsof | grep deleted», у меня не было такой проблемы. Как только я запускаю apache и проверяю команду «sudo lsof | grep deleted», это снова выглядит как прикрепленный снимок экрана.
Я столкнулся с этой проблемой с разными приложениями на разных платформах. Это распространенная проблема кодирования, когда код, использующий файлы, не закрывает файл, когда он с ним готов. Код всегда должен закрывать файл по окончании работы с ним.
Один из распространенных методов защиты временных файлов - открыть файл, удалить его, а затем работать с ним. Возможно, это то, что здесь делается. Однако файл существует до тех пор, пока не будет закрыт.
Чтобы обойти эту проблему, необходимо ограничить количество запросов, которые дочерний элемент Apache будет обрабатывать перед завершением работы. Файлы будут закрыты, когда ребенок выйдет. Установка MaxRequestsPerChild где-то в диапазоне от 100 до 1000 может уменьшить проблему. Значение по умолчанию - 10000.