您的位置:首页 > 运维架构 > Linux

linux系统最大打开文件数和socket端口数限制的坑

2016-09-19 15:11 471 查看
由于产品需求,高并发不断创建socket短连接来仿http请求。使用java socket来实现,在centos6.5系统上运行。过程中遇到不到的坑,最头疼的就是最大打开文件数和socket可用端口限制的问题。
linux和mac默认最大打开文件数256.上限是65535.在创建socket连接时,每个连接需要占用一个文件打开,所以256是远不能满足需求的。需要进行参数修改。
另外,linux系统的最大可用socket端口也是65535.默认1024.最好设置为1024-65535端口可用。并且,设置linux内核参数,控制socket端口复用和快速释放。在开发过程中,会遇到大量socket处于time_wait状态而不释放的问题。当然,尽管内核最优且端口数设置为最高,仍然会有极限承受力。如果每个请求的响应时间为毫秒级,比如200并发创建,每个线程中2ms的时间便可请求响应完成,立即循环创建下一个,那么端口还是会被吃尽。端口释放速度小于需求速度时,系统将会报错,没有可用端口。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息