鱿鱼用尽了sockets

我有一个设置,鱿鱼坐在一个Java服务器的前面,作为一个反向代理。 最近我已经加载testing的网站,如果我发射100线程在它每个使用Jmeter的请求我开始在我的负载testing工具,如“没有路由到主机”,即使负载testing工具和服务器上同一台机器。

如果我运行以下命令端口82是我的鱿鱼服务器上运行的端口:

netstat -ann | grep 82 | wc -l 

我得到22000或其他东西,其中大部分是在TIMED_WAIT。 我在想,也许在TIMED_WAIT状态的大量sockets正在匮乏的资源框。

有各种不同的限制可能影响您的Web代理的操作。 正如sysadmin1138所提到的,TCP连接就是其中之一。

另一个,正如凯尔在我之前devise的,是文件描述符。 SQUID的默认值(至less为2.6)是1024.要增加此限制,必须重新编译--with-maxfd 。 即使在用更高的FD重新编译之后, ulimit对于启动鱿鱼的用户也是有效的。 例如把资源限制增加到8192在启动squid之前运行这个:

ulimit -HSn 8192

现在,Linux在内核级别的默认设置非常高,所以你可能不需要在FD的SQUID之外调优。 如果您提供日志输出,则可能会显示确切的问题,我们可以提供更详细的build议。

这可能是太多打开的文件使用Unix,“一切都是一个文件”,这包括套接字。 你或者需要用ulimit增加最大的打开文件,或者在内核中增加( /proc/sys/fs/file-max )。 你也可以使用/proc/sys/net/ipv4/tcp_fin_timeout在TIME_WAIT中花费的时间

如果你使用的是Squid 2.7,你可以设置fd的数量而不需要重新编译; http://www.squid-cache.org/Doc/config/max_filedescriptors/