HAproxy与tomcat - 连接不够

时间:2014-03-31 13:28:03

标签: java spring tomcat load haproxy

我们有一个在tomcat 7上运行的Web应用程序,我们也有haproxy来负载均衡所有请求。 我们做了一些负载测试,并使用模仿真实用户的httprequests来下雨haproxy(服务器)。

当我们尝试将同时用户的数量增加到200时,一些请求会收到

503 Service Unavailable

我们尝试将tomcat上的max连接设置为1000

当我们进入管理器应用程序以在负载测试时实时查看服务器状态时,我会看到以下行:

Max threads: 1000 Current thread count: 60 Current thread busy: 35

由于某种原因,当前线程不超过60,当前线程忙不超过35!

当我们删除 haproxy并直接调用tomcat - 它可以工作!!! (意味着没有更多的错误503和繁忙的线程#根据负载上升)

这当然意味着我们的haproxy配置不正确。

这里是:

global
    daemon
    maxconn 2000
 debug

defaults
    mode http
    timeout connect 5000ms
    timeout client 120000ms
    timeout server 120000ms


listen X-TEST 0.0.0.0:8188   
mode http
stats enable
stats uri /haproxy?stats
stats realm Strictly\ Private
stats auth xxx:xxx
stats refresh 5s
option httpclose
option forwardfor
balance roundrobin


cookie JSESSIONID prefix
server x_SERVER1 10.0.110.44:8080 cookie JSESSIONID_SERVER_1 check    
server x_SERVER2 10.0.110.45:8080 cookie JSESSIONID_SERVER_2 check

1 个答案:

答案 0 :(得分:1)

好的,我们配置了HAproxy,现在可以了, 这是新的配置文件:

global
debug

defaults
mode http
timeout connect 5s
timeout queue   300s
timeout client  300s
timeout server  300s


frontend http-in
bind *:8080
default_backend xx

backend xx
cookie JSESSIONID prefix
server xx_SERVER1 10.0.110.44:8080 cookie JSESSIONID_SERVER_1 check maxconn 500
server xx_SERVER2 10.0.110.45:8080 cookie JSESSIONID_SERVER_2 check maxconn 500
option httpclose
option forwardfor
balance roundrobin
option redispatch
retries 15


listen admin
bind *:8081
stats enable
stats refresh 1s