webman用nginx做反向代理,首次请求特别慢

redsky

问题描述

服务器环境处在专网内,对端口开放有严格要求,目前对外接口只开放80端口,因此选择了用nginx做反向代理,能正常提供对外接口服务,但是碰到一个问题,同一个访问地址,第一次请求返回特别慢,3-5秒,后面再访问同一地址,返回都是几十毫秒,比如: ?page=1,第一次访问很慢,后面就正常了,等我访问 ?page=2,第一次又很慢,后面又正常。
如果不通过nginx,直接启动服务监听80端口,既把nginx关闭,只使用webman,没有任何问题,所以可以确定问题是出在nginx上。

为此你搜索到了哪些方案及不适用的原因

百度了很多解决方案,没有一个跟我的一样。

2508 2 5
2个回答

walkor 打赏

把nginx进程设置为1,然后重启nginx,ps auxf找到nginx子进程pid,执行命令 strace -ttp pid 看下nginx进程的系统调用,能大概判断出哪里有问题。

  • redsky 2022-12-12

    root 8508 0.0 0.0 131944 9480 ? Ss 11:35 0:00 nginx: master process /www/server/nginx/sbin/ngi
    www 8509 0.0 0.2 162664 34512 ? S 11:35 0:00 _ nginx: worker process
    www 8510 0.0 0.0 131816 9900 ? S 11:35 0:00 _ nginx: cache manager process
    www 8511 0.0 0.0 131816 9900 ? S 11:35 0:00 _ nginx: cache loader process
    [root@iZ51k2facfn13jZ ~]# strace -ttp 8508
    strace: Process 8508 attached
    11:37:15.141017 rt_sigsuspend([], 8

  • redsky 2022-12-14

    老大,能看出是什么问题吗?

  • redsky 2022-12-14

    proxy_set_header Upgrade $http_upgrade;

    proxy_set_header Connection $connection_upgrade;

    这两个注释掉后,正常了!

  • doit 2022-12-21

    大佬,之前提过相同的问题,我本地测试发现确实是这样,如果直接使用端口访问没有问题,但是参照https://www.workerman.net/doc/webman/others/nginx-proxy.html使用nginx代理之后,首次访问会很慢。

doit

截图
@walkor ,大佬,麻烦看下这个情况是什么问题?

  • redsky 2022-12-21

    反向代理配置文件中,把
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    这两个注释掉后,正常了!

年代过于久远,无法发表回答
×
🔝