nginx status状态及其说明
apache下有mod_status和mod_info模块用于查看apache的运行状态,具体可以参看我的另一篇日志 —— 查看apache运行状态。nginx是不是也带有相同的模块呢?答案当然是肯定的。编译时只需要加上–with-http_stub_status_module 参数即可在安装时编译出HttpStubStatusModule模块(不需要记,默认情况下都会自动加该参数的)。
安装完成后,可以通过stub_status on开启状态查看项。当然如果想设置的更安全些,可以增加上IP控制和密码认证。具体配置如下:
1location /nginx-status {
2 stub_status on;
3 auth_basic "NginxStatus";
4 allow 127.0.0.1;
5 deny all;
6 access_log off
7 auth_basic_user_file /App/nginx/conf/htpasswd;
8}
注:密码文件的生成需要依赖apache的htpasswd工具生成。
配置完成后,在浏览器中输入http://127.0.0.1/nginx-status 输入用户名密码,即可查看nginx的当前状态,示例如下:
1Active connections: 9787
2server accepts handled requests
3 515611486 515611486 1487172614
4Reading: 208 Writing: 331 Waiting: 9248
而各个参数含义如下:
- reading — nginx 读取到客户端的 Header 信息数。
- writing — nginx 返回给客户端的 Header 信息数。
- waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading + writing),意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接。
而从我上面的服务器状态上来看,nginx的waitng状态非常高,后来我到网上查到了资料并结合自己的分析,发现这是正常的。网上一些资料显示:在访问效率高,请求很快被处理完毕的情况下,Waiting数比较多是正常的 。而我自己的本机只做nginx proxy转发,不负责数据处理。所以处理效率当然是非常高的。而从官方给出的waiting参数的意思上看来,是已经完成数据的处理。即已经将数据返回给用户,而停留在该状态是等待下一次的连接或都连接超时中断。(不知道这样理解对不对,希望大牛板砖)
需要注意的是如果reading或writing的值很高,说明正在处理的数据量很大,可能是因为后端的动态就用程序处理慢(如php、jsp) ,拖了后腿。而一般来说,动态应用之后以慢。一般有两方面的原因,一是因为数据库,另一个原因很可能就是IO慢(目前的机器CPU或内存不够用的情况很少,毕竟这玩意廉价。而设备的主要瓶颈在硬盘IO上),或者客户端的网络。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/nginx-status/2325.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.