2014-03-31 77 views
2

我們有一個運行在tomcat 7上的web應用程序,我們也有haproxy來負載均衡所有請求。 我們做了一些負載測試,並使用模仿真實用戶的httprequests來欺騙haproxy(服務器)。HAproxy with tomcat - 沒有足夠的連接

當我們試圖增加simultanious用戶數到200的一些請求免費獲贈

503 Service Unavailable 

我們試圖當我們進入管理者設置爲1000

在tomcat的我的最大連接應用上看到實時的服務器狀態,而負載測試,我看到下面一行:

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

,當前線程不超過60由於某種原因而C urrent線程忙不超過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

OK,我們重新配置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