环境:
服务端:
AIX5.3
程序内容:
socket 监听, fork子进程
客户端:
WIN7 HOME
程序内容:
Java socket
问题: 当客户端连续发起10000个请求时,服务端出现错误:fork error: Resource temporarily unavailable.
原因,打开文件数超过当前用户设定上线.查看当前用户的资源使用限制:
ulimit -a
[/home/test] ulimit -a
time(seconds) unlimited
file(blocks) unlimited
data(kbytes) 131072
stack(kbytes) 32768
memory(kbytes) 32768
coredump(blocks) 2097151
nofiles(descriptors) 2000
[/home/mssk/test]
解决:
方法1. 适当增大nofiles数量,不是不是最佳方案,有可能还是超限制
方法2. 对并发数进行限制,保证不超过某个固定值