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)

相关推荐

  • 怎么使用Oracle数据库的逻辑备份工具

    技术怎么使用Oracle数据库的逻辑备份工具这篇文章主要介绍“怎么使用Oracle数据库的逻辑备份工具”,在日常操作中,相信很多人在怎么使用Oracle数据库的逻辑备份工具问题上存在疑惑,小编查阅了各式资料,整理出简单好

    攻略 2021年11月5日
  • 女作家排行榜,当代女作家你最喜欢谁的作品

    技术女作家排行榜,当代女作家你最喜欢谁的作品文无第一武无第二女作家排行榜,说最喜欢谁真的不好说。
    推荐下林奕含吧,前段时间因为XX案件,她的作品《房思琪的初恋乐园》又一次火了起来。
    “我宁愿我是一个媚俗的人,我宁愿无知,

    生活 2021年10月30日
  • 电话查公司,查企业联系方式有哪些方法

    技术电话查公司,查企业联系方式有哪些方法您好,我来为您解答电话查公司。就目前来说,查询企业联系方式,有以下几种办法:1、打114电话查询。
    114可以帮您查询您所需要的企业的联系方式,你只需要把自己想要查询的企业的名称报

    生活 2021年10月26日
  • python如何生成EXCEL、连接数据库、并将指定数据写入EXCEL

    技术python如何生成EXCEL、连接数据库、并将指定数据写入EXCEL小编给大家分享一下python如何生成EXCEL、连接数据库、并将指定数据写入EXCEL,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探

    攻略 2021年11月23日
  • 我的世界天堂门怎么做手机版,《我的世界》天空之门怎么做

    技术我的世界天堂门怎么做手机版,《我的世界》天空之门怎么做在游戏原版只有地狱,也就是下界,但是以太MOD里有个天堂门,可以用萤石代替黑曜石像搭地狱门那样搭一个门,然后用金锭和燧石合成一个类似打火石的东西,最后像点燃地狱门

    生活 2021年10月19日
  • 四马分肥,什么是一体两翼

    技术四马分肥,什么是一体两翼一体两翼:以一个事物为主发长四马分肥,两个事物围绕这个事物发展,就叫一体两翼。“一体两翼”扶贫方式: 所谓“一体”就是国务院扶贫办提出的整村推进扶贫开发,“两翼”就是劳动力转移培训和产业化扶贫

    生活 2021年10月22日