gen_tcp接受链接时enfile的问题分析及解决
December 5th, 2011
1 comment
原创文章,转载请注明: 转载自系统技术非业余研究
本文链接地址: gen_tcp接受链接时enfile的问题分析及解决
最近我们为了安全方面的原因,在RDS服务器上做了个代理程序把普通的MYSQL TCP连接变成了SSL链接,在测试的时候,皓庭同学发现Tsung发起了几千个TCP链接后Erlang做的SSL PROXY老是报告gen_tcp:accept返回{error, enfile}错误。针对这个问题,我展开了如下的调查:
首先man accept手册,确定enfile的原因,因为gen_tcp肯定是调用accept系统调用的:
EMFILE The per-process limit of open file descriptors has been reached.
ENFILE The system limit on the total number of open files has been reached.
从文档来看是由于系统的文件句柄数用完了,我们顺着来调查下:
$ uname -r 2.6.18-164.el5 $ cat /proc/sys/fs/file-nr 2040 0 2417338 $ ulimit -n 65535
由于我们微调了系统的文件句柄,具体参考这里 老生常谈: ulimit问题及其影响, 这些参数看起来非常的正常。
先看下net/socket.c代码:
Read more…
Post Footer automatically generated by wp-posturl plugin for wordpress.
Recent Comments