V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
rrfeng
V2EX  ›  问与答

今天遇到了一个非常奇怪的问题……

  •  
  •   rrfeng · 2014-07-17 15:45:06 +08:00 · 2397 次点击
    这是一个创建于 3632 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Nginx
    有关的配置如下:
    upstream my_appserver {
    ip_hash;
    1.1.1.1:8888;
    1.1.1.2:8888;
    1.1.1.3:8888;
    1.1.1.4:8888;
    }

    proxy_next_upstream error timeout http_500 http_502

    log_format upstream '$remote_addr - $remote_user [$time_local] "$request" '
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for" ($gzip_ratio) $request_time '
    '"$upstream_addr" "$upstream_status" "$upstream_response_time"';


    ------------------------------------------------
    1.1.1.1 ~ 1.1.1.4 上的服务升级之后,某个 url 访问会出现 500 错误,然后按照配置,nginx 会尝试 upstream 里的另外的机器。下面是一条日志:

    123.187.84.157 - - [17/Jul/2014:08:21:45 +0800] "GET /archive/index.action HTTP/1.1" 502 2365 "http://www.example.com/" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-" (-) 0.006 "1.1.1.2:8888, my_appserver : 2.2.2.2:80" "500, 502 : 200" "0.006, 0.000 : 0.000"


    在日志的 $upstream_addr 中出现了三个字段,分别是
    1. upstream 第一次连接的后端服务器 1.1.1.2:8888
    2. 奇怪的东西……
    3. 502 错误的页面存储在另一台服务器上(2.2.2.2:80)

    其中 2 那个 my_appserver 是 upstream 的名字啊,怎么会出现在这种地方????



    我查了相同的时间段内其他 url 访问第一次后端返回 500 的日志,和相同 url 出问题之前的时候的访问日志,第一次 500 之后尝试第二个服务器会显示 ip:port 的……

    后端的服务修复的 bug 之后,这个 my_appserver 就消失了。

    如何解释??
    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5121 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 09:13 · PVG 17:13 · LAX 02:13 · JFK 05:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.