我们有一个在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
答案 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