Итак, у нас есть сервер apache, работающий в Linux без проблем.
Вчера мы перезапустили сервер, и с тех пор мы заметили, что количество открытых файлов процессами apache продолжает расти, пока сервер через несколько часов не смог получить запросы с ошибками ниже, заполнив журнал ошибок:
(24)Too many open files: file permissions deny server access: /var/www/html/*X*
(24)Too many open files: /var/www/html/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable
Мы проверили открытые файлы и заметили, что они действительно достигают предела (установленного на 4096). Мы можем увеличить лимит, но это, вероятно, только увеличит время безотказной работы и не решит проблему, поскольку такое поведение не является нормальным. Никакой лишней нагрузки нет.
И, проверив открытые файлы, мы заметили, что аномально увеличивающиеся открытые файлы - это сокеты unix, то есть lsof -p PID заполнен:
httpd 19848 apache 13u unix 0xffff880238a63380 0t0 204055 socket
httpd 19848 apache 14u unix 0xffff8800aa3123c0 0t0 204183 socket
httpd 19848 apache 15u unix 0xffff880037a0acc0 0t0 204201 socket
Я не являюсь опытным администратором Linux (в настоящий момент администратора нет), поэтому я не уверен, как исследовать проблему дальше.
И да, я ответил на многие связанные вопросы, но ни к чему не пришел.
Обновить Тестирование с ss
команда показывает это количество сокетов, как показано ниже:
u_str UNCONN 0 0 * 331727 * 0
u_str UNCONN 0 0 * 331729 * 0
u_str UNCONN 0 0 * 331731 * 0
u_str UNCONN 0 0 * 331733 * 0
u_str UNCONN 0 0 * 331735 * 0