too many open files"这条报错信息,它的现实寄义是文件描述符数目超限。用ulimit -a下令打印出各限制值:

查看句柄数
ulimit -a
修改句柄数
vi /etc/security/limits.conf 添加

*  soft  nofile  100000

*  hard  nofile  100000

for x in ps -eF| awk '{ print $2 }';do echo ls /proc/$x/fd 2> /dev/null | wc -l $x cat /proc/$x/cmdLINE 2> /dev/null;done | sort -n -r | head -n 20 查看文件描述符前20
netstat -tan|awk '$1~/tcp/{print $NF}'|sort|uniq -c|sort -nr 查看当前毗邻状态

strace -F -p 5351 -T -tt -o trace.log strace情形

-c 统计每一系统挪用的所执行的时间,次数和失足的次数等.
-d 输出strace关于尺度错误的调试信息.
-f 跟踪由fork挪用所发生的子历程.
-ff 若是提供-o filename,则所有历程的跟踪效果输出到响应的filename.pid中,pid是各历程的历程号.
-F 实验跟踪vfork挪用.在-f时,vfork不被跟踪.
-h 输出简的辅助信息.
-i 输出系统挪用的入口指针.
-q 克制输出关于脱离的新闻.
-r 打印出相对时间关于,,每一个系统挪用.
-t 在输出中的每一行前加上时间信息.
-tt 在输出中的每一行前加上时间信息,微秒级.
-ttt 微秒级输出,以秒了示意时间.
-T 显示每一挪用所耗的时间.
-v 输出所有的系统挪用.一些挪用关于环境变量,状态,输入输出等挪用由于使用频仍,默认不输出.
-V 输出strace的版本信息.
-x 以十六进制形式输出非尺度字符串
-xx 所有字符串以十六进制形式输出.
-a column
设置返回值的输出位置.默认 为40.
-e expr
指定一个表达式,用来控制若何跟踪.花样如下:

lsof -d pid 查看文件描述符