V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
liuzhedash
V2EX  ›  NGINX

nginx 日志记录状态码 499 问题

  •  
  •   liuzhedash · 2016-02-16 19:06:33 +08:00 · 8317 次点击
    这是一个创建于 3221 天前的主题,其中的信息可能已经有所发展或是发生改变。

    系统组成: nginx 1.6,php5.3.28 ,对应配置:

    location ~ [^/]\.php(/|$)
    {
    # comment try_files $uri =404; to enable pathinfo
    try_files $uri =404;
    fastcgi_pass unix:/tmp/php-cgi52.sock;
    fastcgi_index index.php;
    include fastcgi.conf;
    #include pathinfo.conf;
    }

    nginx 日志摘要

    221.11.61.197 - - [16/Feb/2016:18:46:38 +0800] "GET /api/agent/registerAgent HTTP/1.1" 10.954 - -499 0 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 9_2_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13D15 MicroMessenger/6.3.13 NetType/3G+ Language/zh_CN" -

    其中的

    10.954 - - 499

    分别是:

    $request_time $upstream_response_time $upstream_status $status

    $request_time 从几十秒到一秒多不等,$upstream_response_time $upstream_status 为"-"直观效果就是某几个手机一直打不开页面,其他的手机电脑完全正常。
    研究了半天没有任何思路,请大家赐教

    15 条回复    2016-02-17 14:17:47 +08:00
    jkeylu
        1
    jkeylu  
       2016-02-16 19:51:55 +08:00 via Android
    499 是用户主动断开连接
    就是请求页面长时间没有返回,用户等不急了,把页面关了
    $upstream_response_time 就是 nginx 请求你的 PHP 程序到返回数据的时间,没等到返回数据,用户就关闭页面里,所以是 - ,多半是你程序问题
    会不会某个时段用户访问比较集中啊,导致程序运行缓慢之类的
    liuzhedash
        2
    liuzhedash  
    OP
       2016-02-16 20:10:25 +08:00
    @jkeylu 同样的页面,其他手机 /PC 访问是正常的,速度也很快,现在发现重启 php-fpm 后可以立刻使不能访问的手机可以正常打开页面。
    服务器负载非常低,基本是空载
    Andy1999
        3
    Andy1999  
       2016-02-16 20:12:18 +08:00 via iPhone
    PHP5.3 貌似低了点 可以无缝升级到 PHP5.6.17 吧
    lhbc
        4
    lhbc  
       2016-02-16 20:13:21 +08:00
    代码有问题
    php 开 slowlog 看下吧
    liuzhedash
        5
    liuzhedash  
    OP
       2016-02-16 20:19:27 +08:00
    @lhbc slowlog 没有东西, sql 慢查询也没有,代码里调试得到的结论是:有问题的请求根本没把 php 调起来。事实上之前这个问题从来没有出现过
    liuzhedash
        6
    liuzhedash  
    OP
       2016-02-16 20:20:12 +08:00
    @Andy1999 已经加了一台实例,准备迁移过去用高版本 php 和 nginx 试试看
    jwnlive
        7
    jwnlive  
       2016-02-16 20:46:09 +08:00
    php err 有什么报错吗
    看下数据库的链接正常不
    liuzhedash
        8
    liuzhedash  
    OP
       2016-02-16 21:22:38 +08:00
    @jwnlive 没有什么报错,数据库也正常,其他的手机 PC 访问同样的页面都是 OK 的
    liuzhedash
        9
    liuzhedash  
    OP
       2016-02-16 22:11:43 +08:00
    一个新的线索:关闭微信(这个场景的浏览器是微信内置浏览器 ),再次打开,就可以正常打开页面
    squid157
        10
    squid157  
       2016-02-16 22:14:46 +08:00 via iPhone
    @liuzhedash 微信内置浏览器并不好 debug 啊 我也来围观学习一下
    liuzhedash
        11
    liuzhedash  
    OP
       2016-02-16 22:41:59 +08:00
    php-fpm 重启可以使得等待状态的请求立刻 502 ,所以怀疑问题在 php-fpm 这里
    tntsec
        12
    tntsec  
       2016-02-16 22:50:44 +08:00
    搜索相关问题一直找不到解决方法,最后终于在 google 上搜索到一英文论坛上有关于此错误的解决方法:
    proxy_ignore_client_abort on;
    Don ’ t know if this is safe.
    就是说要配置参数 proxy_ignore_client_abort on;
    表示代理服务端不要主要主动关闭客户端连接。

    另外把 php-fpm 进程数开到最大
    ryd994
        13
    ryd994  
       2016-02-16 23:18:54 +08:00
    这个是客户端关闭连接时,不关闭到上游的连接,只丢弃上游的响应
    这个很不 safe
    进程数随便调最大也是逗,就等着被 CC 卡死吧
    ToughGuy
        14
    ToughGuy  
       2016-02-17 09:13:57 +08:00
    似乎是某些异步请求会出现 499 错误

    fastcgi_ignore_client_abort on;
    proxy_ignore_client_abort on;

    这两个参数可能有用。
    liuzhedash
        15
    liuzhedash  
    OP
       2016-02-17 14:17:47 +08:00
    谢谢大家的指导,已经确认是后端 php 代码对 session 锁处理不当导致执行超时,和 nginx php-fpm 无关
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5123 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 06:44 · PVG 14:44 · LAX 22:44 · JFK 01:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.