Nginx下请求本机另外Host很慢怎么办

技术Nginx下请求本机另外Host很慢怎么办这篇文章给大家分享的是有关Nginx下请求本机另外Host很慢怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。现象在本机安装了一个Discuz

这篇文章是关于当Nginx请求本地机器,而主机运行缓慢时该怎么办。我觉得边肖很实用,就和大家分享一下作为参考。让我们跟着边肖看一看。

00-1010在这台机器上安装了一个Discuz!在X3.4的论坛中,使用UCenter作为统一用户登录。在其应用程序管理页面上,通信状态始终提示为“正在连接”:

Nginx下请求本机另外Host很慢怎么办

00-1010关于这个问题,网上绝大多数的说法都是Windows上的nginx服务器有问题,建议换成Apache。当我换成Apache的时候,问题确实解决了,但是我还是觉得nginx不会有这个问题,一定有解决的办法。

继续搜索,发现nginx日志中报告了一个499错误。在线上,据说499错误的原因是客户端主动与服务器断开连接。但是,看了ucenter的代码,似乎没有断线操作,但是看了日志报告的时间,我们发现了一个线索:

127 . 0 . 0 . 1--[18/Jul/2018 :22:35336048 0800]' GET/UC _ server/admin . PHP?m=appa=ls…

127 . 0 . 0 . 1--[18/Jul/2018 :22:36336019 0800]' GET/API/UC . PHP?代码=434 ermr/D/tjz 357 v3s a9 rlpqp0rpgfi 7 ryntpyveyeyay 3 xgen 8 oqk 9 etjgexnbyebkithypzqs HTTP/1.0 ' 499…

127 . 0 . 0 . 1--[18/Jul/2018 :22:36336019 0800]' GET/UC _ server/admin . PHP?m=appa=pinginajax=1url=…

日志的第一行是到ucenter应用程序管理中心页面的链接。在此页面中,ucenter向本地Discuz服务器发送通信验证请求(第三行日志),而第二行日志是Discuz服务器收到的通信验证请求,这一行出现499错误。

仔细看这三个日志的时间,我们发现第二个和第三个日志与第一个日志的时间间隔差不多是29秒。我们知道,PHP的默认超时时间是30秒,在统计一些错误时,29秒几乎是一样的。因此,可以认为这个499错误是由discuz服务器的499错误引起的,因为ucenter服务器发起了ping请求(第3行日志),从未收到返回值,因此超时并断开连接。

整个过程如下:

Nginx下请求本机另外Host很慢怎么办

知道是499错误,就找怎么解决499问题。因此,他们中的大多数人建议向nginx服务器添加以下配置:

proxy _ ignore _ client _ abort on

fastcgi _ ignore _ client _ abort on

上述配置已添加到Discuz的配置项中:

位置~ \。php $ {

root c :/PHPackage/workspace/github/DiscuzX/BBS;

fastcgi _ pass 127 . 0 . 0 . 1:9090;

index.php指数;

fastcgi _ param SCRIPT _ FILENAME $ document _ root $ fastcgi _ SCR

ipt_name;

            include        fastcgi_params;

            proxy_ignore_client_abort  on;

            fastcgi_ignore_client_abort on;

          }

再运行服务器,发现499问题果然没了,但是通信问题依然没有解决,只是日志变为如下了:

127.0.0.1 - - [18/Jul/2018:22:35:48   +0800] "GET /uc_server/admin.php?m=app&a=ls&…

127.0.0.1 - - [18/Jul/2018:22:36:19   +0800] "GET   /api/uc.php?code=434eRMR%2FD%2FtjZ357V3sA9RLPqp0rpGfi7ryntpyVEEYay3xgen8Oqk9ETjgEXNbyEbKItHYPZqs   HTTP/1.0" 200 …

127.0.0.1 - - [18/Jul/2018:22:36:19   +0800] "GET /uc_server/admin.php?m=app&a=ping&inajax=1&url=…

配置生效了,但是有个毛用啊,通信还是不成功。第1条日志和下面两条日志还是差了差不多30秒左右。回过头来仔细分析上面的两个配置项,应该是让nginx服务器忽略客户端断开的错误,注意,仅仅是让服务器忽略这个错误,也就是说,当ucenter请求超时,断开连接的时候,discuz服务器忽略了这个错误,从而返回200,可是ucenter实际上已经断开了,也收不到discuz的返回值,所以实际上还是通信失败。

不过再进一步分析上面的流程,从nginx与php的关系来看,发现整个请求处理如下图:

Nginx下请求本机另外Host很慢怎么办

nginx收到请求后,发现是需要执行PHP代码,于是将请求就转给了PHP-CGI进程,由该进程找到PHP代码并执行,但是在PHP代码中,又再次向本机的另一个服务器发出HTTP请求,nginx收到后,发现同样要执行PHP代码,于是将请求又转回给PHP-CGI进程,但是系统中PHP-CGI进程只开了一个,后面的PHP代码要等到上面的执行完毕才能执行,而后面的PHP代码却又是上面的代码请求产生的,于是就阻塞了。

1.1.3  解决

分析至此,解决的思路就已经很清晰了,既然一个PHP-CGI线程处理不过来,那么就增加一个线程好了,修改启动nginx服务器的批处理代码如下,仅修改一个数字,见红色字体部分:

@echo off

REM Windows 下无效

REM set PHP_FCGI_CHILDREN=5

 

REM 每个进程处理的最大请求数,或设置为 Windows 环境变量

set PHP_FCGI_MAX_REQUESTS=1000

 

echo Starting PHP FastCGI...

rem RunHiddenConsole   C:/PHPackage/PHP/php-cgi.exe -b 127.0.0.1:9090 -c C:/PHPackage/PHP/php.ini

RunHiddenConsole xxfpm   "C:/PHPackage/PHP/php-cgi.exe -c C:/PHPackage/PHP/php.ini" -n 2 -i 127.0.0.1 -p 9090

 

echo Starting nginx...

RunHiddenConsole   C:/PHPackage/nginx-1.15.1/nginx.exe -p C:/PHPackage/nginx-1.15.1

该数字原来是1,现在改为2,重新启动服务器,看任务管理器,果然有两个PHP-CGI进程:

Nginx下请求本机另外Host很慢怎么办

再回到ucenter的应用管理页面,刷新,结果如下:

Nginx下请求本机另外Host很慢怎么办

啥情况?我们上面折腾了半天,只是从“正在连接”变成了“通信失败”,问题还是没有解决啊!

不过呢,跟踪代码可以验证,499的问题的确是彻底解决了,至于为什么还是“通信失败”,那是另外一个问题了。

感谢各位的阅读!关于“Nginx下请求本机另外Host很慢怎么办”这篇文章就分享到这里了,希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/115161.html

(0)

相关推荐

  • 小雪诗句,关于“小雪”的诗句有哪些

    技术小雪诗句,关于“小雪”的诗句有哪些关于“小雪”的诗句小雪诗句: 1、《小雪》唐·戴叔伦
    花雪随风不厌看,更多还肯失林峦。愁人正在书窗下,一片飞来一片寒。
    2、《小雪日戏题绝句》唐·张登
    甲子徒推小雪天,刺梧犹绿

    2021年10月27日
  • 怎么用Python爬取7日热门的文章

    技术怎么用Python爬取7日热门的文章怎么用Python爬取7日热门的文章,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前言相信大家都很喜欢看那种非常

    攻略 2021年10月25日
  • 一个动态波浪纹Android界面

    技术一个动态波浪纹Android界面 一个动态波浪纹Android界面IndexActivity.javapackage com.example.rubikrobot;import androidx.a

    礼包 2021年11月12日
  • 怎么解决关于Zabbix忘记admin登录密码的问题

    技术怎么解决关于Zabbix忘记admin登录密码的问题本篇内容主要讲解“怎么解决关于Zabbix忘记admin登录密码的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎

    攻略 2021年11月2日
  • 野径云俱黑,野径云俱黑江船火独明的意思

    技术野径云俱黑,野径云俱黑江船火独明的意思这句话是杜甫的诗《春夜喜雨》中的句子,是描写雨中的夜色.是写实的句子,意思是说野径云俱黑:田野里的小路也跟云一样黑沉沉的,只有江里的船上灯火是明的.喜的是雨意之浓,从视觉角度描写

    生活 2021年10月23日
  • mac缩略图制作软件(mac图片编辑软件artstudiopro)

    技术电影缩略图制作工具Movie Thumbnails Maker for mac怎么用今天就跟大家聊聊有关电影缩略图制作工具Movie Thumbnails Maker for mac怎么用,可能很多人都不太了解,为了

    攻略 2021年12月24日