赞
踩
今天使用 IDEA 连接 Apache Doris 的JDBC 的时候 频繁发生中断,报错如下:
Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
推断是网络出现问题没导致 无法收到 数据库服务器的响应,但是通过检查本地电脑到 服务器的 网络链接呢很稳定,并没有发现问题。想到 Doris 的 JDBC 端口是通过 NGINX 转发的 ,于是从排查 NGINX 日志着手,发现如下错误日志:
00:06:20 [alert] 949543#0: *10410607 socket() failed (24: Too many open files) while connecting to upstream, client: 10.xxx.xx.xxx, server: 0.0.0.0:9030, upstream: “192.168.xxx.xxx:9030”, bytes from/to client:0/0, bytes from/to upstream:0/0
错误日志很明显, Too many open files 导致 socket连接中断,自然数据库连接失败。 Too many open files 是Linux 常见的错误,表示 程序打开的文件数太多(在linux中一切皆文件),当然在这里表示 打开的 socket 连接数。
引发该 错误的原因是 Nginx 进程 打开的文件数(socket连接)超过了单个进程默认可以打开的句柄数上限。
如下图可以看到当前系统 单个进程默认可以打开的句柄数上限为 1024:
而此时Nginx 文件打开数远大于 1024
vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
worker_rlimit_nofile 65535;
events {
worker_connections 20480;
}
systemctl restart nginx
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。