单个进程创建sqlserver连接超过2020个报错:Unable to open socket (192.168.7.200),Too many open files
执行下面命令查看进程限制的,文件上限是4096
[fm@vm-rhel76 lib]$ cat /proc/4289/limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size unlimited unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 4096 127953 processes
Max open files 4096 4096 files
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 127953 127953 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
执行下面命令查看进程已经打开的文件数
[fm@vm-rhel76 lib]$ lsof -p 4289 | wc -l
4205
解决方案如下:
[root@DB ~]# ulimit -SHn 65536
[root@DB ~]# echo "* soft nofile 65536" >>/etc/security/limits.conf
[root@DB ~]# echo "* hard nofile 65536" >>/etc/security/limits.conf
第一行是暂时性修改文件打开数
第二行和第三行是修改配置文件调整文件打开数,需要重启才能生效