因此我们有一个在 Linux 中运行的 apache 服务器,没有任何问题。
昨天我们重启了服务器,从那时起我们注意到 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