2013-09-04 48 views
5

Mam uruchomiony system Ubuntu 12.04LTS. Mój webserver to Tomcat 7.0.42, a ja używam HAProxy jako serwera proxy. Moja aplikacja to aplikacja serwletowa, która korzysta z websockets.502 Bad Gateway HAproxy

Kiedyś zażądam mojej strony, otrzymuję komunikat "502 Bad Gateway" na niektórych zasobach, nie na wszystkich, ale na niektórych. Myślę, że to ma coś wspólnego z moim HAProxy konfiguracji, który jest następujący:

global 
    maxconn  4096 # Total Max Connections. This is dependent on ulimit 
    nbproc  1 

defaults 
    mode  http 
    option http-server-close 
    option httpclose 
# option redispatch 
    no option checkcache # test against 502 error 

frontend all 0.0.0.0:80 
    timeout client 86400000 
    default_backend www_backend 
    acl is_websocket hdr(Upgrade) -i WebSocket 
    acl is_websocket hdr_beg(Host) -i ws 

    use_backend socket_backend if is_websocket 

    backend www_backend 
     balance roundrobin 
     option forwardfor # This sets X-Forwarded-For 
     timeout server 30000 
     timeout connect 4000 
     server apiserver localhost:8080 weight 1 maxconn 1024 check 

    backend socket_backend 
     balance roundrobin 
     option forwardfor # This sets X-Forwarded-For 
     timeout queue 5000 
     timeout server 86400000 
     timeout connect 86400000 
     server apiserver localhost:8080 weight 1 maxconn 1024 check 

Co muszę zmienić, aby uniknąć błędu 502?

Odpowiedz

2

Najpierw włącz rejestrowanie haproxy. Po prostu powie Ci, dlaczego podaje 502. Domyślam się, że backend "localhost: 8080" po prostu nie jest w stanie nadążyć lub nie jest w stanie uzyskać połączenia w ciągu 4000ms "timeout connect 4000".

1

Być może przekroczyłeś niektóre z domyślnych limitów w HAProxy. Spróbuj dodać następujące elementy do sekcji globalnej:

tune.maxrewrite 4096 
tune.http.maxhdr 202 
+0

Czy możesz dokładniej wyjaśnić, dlaczego proponowane zmiany konfiguracji odnoszą się do problemu OP? – Castaglia

+0

Proszę dodać więcej szczegółów do odpowiedzi. Odpowiedź może zostać usunięta w aktualnej formie. – Jayan