我正在尝试连接 stunnel 和 haproxy 以将 https 连接转发到一些后端服务器。
我已经正确设置了 haproxy,并且似乎也正确设置了 stunnel。问题是,一段时间后,当我使用负载测试进行设置时,我开始看到这些日志条目(在我开始收到连接被拒绝错误之前,我已包含了正确连接的最后几个条目):
2010.05.05 11:23:29 LOG7[3498:3086792368]: https accepted FD=510 from 10.195.158.225:42722
2010.05.05 11:23:29 LOG7[3498:3035233168]: https started
2010.05.05 11:23:29 LOG7[3498:3035233168]: FD 510 in non-blocking mode
2010.05.05 11:23:29 LOG7[3498:3035233168]: TCP_NODELAY option set on local socket
2010.05.05 11:23:29 LOG7[3498:3035233168]: Waiting for a libwrap process
2010.05.05 11:23:29 LOG7[3498:3086792368]: https accepted FD=511 from 10.195.158.225:42723
2010.05.05 11:23:29 LOG7[3498:3035167632]: https started
2010.05.05 11:23:29 LOG7[3498:3035167632]: FD 511 in non-blocking mode
2010.05.05 11:23:29 LOG7[3498:3035167632]: TCP_NODELAY option set on local socket
2010.05.05 11:23:29 LOG7[3498:3035167632]: Waiting for a libwrap process
2010.05.05 11:23:30 LOG7[3498:3086792368]: https accepted FD=512 from 10.195.158.225:42724
2010.05.05 11:23:30 LOG4[3498:3086792368]: Connection rejected: too many clients (>=500)
2010.05.05 11:23:30 LOG7[3498:3086792368]: https accepted FD=512 from 10.195.158.225:42725
2010.05.05 11:23:30 LOG4[3498:3086792368]: Connection rejected: too many clients (>=500)
我想我是在某个地方遇到了限制,但是我不确定如何解决它,似乎没有一个配置文件选项可以让 stunnel 改变这一点。
有人知道如何配置 stunnel 以适应可能大量的连接吗?
答案1
据我回忆,stunnel 仅依靠 ulimit 设置来查找文件描述符的限制。因此,您只需执行“ulimit -n 65536”,即可获得大约 32000 个客户端限制。
但要小心,因为每个 SSL 上下文都会占用大量内存。另外,如果您的 stunnel 以线程模式运行,您不一定希望达到如此高的线程数。
答案2
在这里检查你的限制:cat /proc/$(pidof stunnel4)/limits
然后编辑文件/etc/default/stunnel4
:设置 RLIMITS:RLIMITS="-n 65536"
重新启动stunnel:sudo /etc/init.d/stunnel4 restart
再次确认您的限制cat /proc/$(pidof stunnel4)/limits
。