6

Ubuntu 12.04LTS を実行しています。私の Web サーバーは Tomcat 7.0.42 で、HAProxy をプロキシ サーバーとして使用しています。私のアプリケーションは、websocket を使用するサーブレット アプリケーションです。

ページをリクエストすると、すべてではなく一部のリソースで「502 Bad Gateway」エラーが発生することがあります。これは、次の HAProxy 構成と関係があると思います。

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

502 エラーを防ぐには何を変更する必要がありますか?

4

3 に答える 3

2

まず、haproxy ログを有効にします。なぜ 502 を与えているのかを簡単に教えてくれます。私の推測では、バックエンド "localhost:8080" は単に追いつくことができないか、4000ms 以内に "timeout connect 4000" で接続を取得できません。

于 2013-09-10T16:40:14.967 に答える