Apache OpenShift Enterprise 2.0中加载时服务暂时不可用

Apache OpenShift Enterprise 2.0中加载时服务暂时不可用,apache,openshift,Apache,Openshift,使用OpenShift Enterprise 2.0,我有一个简单的jbossews(tomcat7)+mysql 5.1应用程序,它使用连接到mysql数据库的JSP文件。该应用程序是作为非缩放应用程序创建的(fwiw启用缩放时也会发生同样的问题) 使用只有一个并发用户且没有思考时间的JMeter驱动程序,它将运行大约2分钟(大约200 req/sec),然后在剩余的测试中开始批量返回“503服务暂时不可用”(每次几秒钟)。即使我什么也不做改变(不要重新启动应用程序),如果我等待片刻,然后再试

使用OpenShift Enterprise 2.0,我有一个简单的jbossews(tomcat7)+mysql 5.1应用程序,它使用连接到mysql数据库的JSP文件。该应用程序是作为非缩放应用程序创建的(fwiw启用缩放时也会发生同样的问题)

使用只有一个并发用户且没有思考时间的JMeter驱动程序,它将运行大约2分钟(大约200 req/sec),然后在剩余的测试中开始批量返回“503服务暂时不可用”(每次几秒钟)。即使我什么也不做改变(不要重新启动应用程序),如果我等待片刻,然后再试一次,它也会做同样的事情——首先看起来很好,但随后它会以错误开始

齿轮远远没有得到充分利用(内存/cpu),我能找到的唯一显示问题的日志是/var/log/httpd/error_log,其中包含以下条目:

[Tue Mar 25 15:51:13 2014] [error] (99)Cannot assign requested address: proxy: HTTP: attempt to connect to 127.8.162.129:8080 (*) failed
在错误开始发生时,查看节点主机上的“top”命令,我看到几个httpd进程在打开和关闭时都会跳到顶部


所以,看起来我不知怎么地耗尽了代理连接或类似的东西。然而,我不确定只有一个并发用户是如何做到这一点的。有没有办法解决这个问题?我找不到任何类似的帖子。

核心问题是,由于连接卡在时间等待中,系统的临时端口正在耗尽。检查使用:

netstat -pan --tcp | less

仅计算处于时间等待状态的连接数

这些是节点端口代理(httpd)到tomcat后端的连接。有几种方法可以更改TCP设置以减少问题。第一个尝试是启用重用。将以下内容附加到/etc/sysctl.conf:

# allow reuse of time_wait connections
net.ipv4.tcp_tw_reuse=1
如果没有临时端口可用,这将允许重用处于TIME_WAIT状态的连接

然而,问题主要仍然是这些连接没有正确地汇集在一起。我不会在使用同一个app+驱动程序的gear之外遇到这个问题——这意味着连接被正确地汇集在一起,根本不必处于TIME\u WAIT状态。代理中的某些内容必须干扰连接关闭


看起来mod_proxy/mod_rewrite没有配置为连接池/keepalive,或者它们与之不兼容。

如果遇到此问题,您应该首先尝试移动到vhost路由,但是如果vhost连接仍然很高,您的端口仍然不足,tcp tw重用可能会有所帮助

也有很多关于这个话题的好信息

# allow reuse of time_wait connections
net.ipv4.tcp_tw_reuse=1