Nginx-解读内置非默认模块 ngx_http_stub_status_module

1.Background

  ngx_http_stub_status_module 是一个 Nginx 的内置 HTTP 模块,该模块可以提供 Nginx 的状态信息。默认情况下这个模块是不被编译进来的,所以在编译 Nginx 时要指定加载该模块:

--with-http_stub_status_module

  当然了,如果你是重新编译,仅仅-s reload是不够的,可能需要用到平滑升级:《高性能Web服务器Nginx的配置与部署研究(14)平滑升级你的Nginx》。

  为什么拿它做例子?因为它也是个足够短小精悍的模块,是一个典型 handler 模块。那么以后我们讲解模块的过程,都是:

  1).简要的介绍
  2).使用的实例
  3).指令介绍
  4).源码分析

2.Simple example

location /nginx_status {
    #copied from http://blog.kovyrin.net/2006/04/29/monitoring-nginx-with-rrdtool/
    stub_status on;
    access_log off;
    allow SOME.IP.ADD.RESS;
    deny all;
}

  我们假设你是在本机上实验,并且开启的是 80 端口,那么在浏览器中输入:http://localhost/nginx_status 会看到这样的信息:

Active connections: 291
server accepts handled requests
16630948 16630948 31070465
Reading: 6 Writing: 179 Waiting: 106

  其含义很容易理解:

  第一行
    当前的活跃连接数:291 #个人认为是处于 SYN_RCVD、ESTABLISHED 状态的连接,等于 Reading + Writing + Waiting
  第二行
    服务器已接受的连接数:16630948(accepted connection #),已接收来自客户端的连接数,也是被Worker进程接收的连接数。
    服务器已处理的连接数:16630948(handled connection #),已被处理的连接总数,其值一般与accepts相等,除非受到了某些资源的限制,如:设置了worker_connections的数量限制。
    服务器已处理的请求:31070465(可以算出,平均每个连接有 1.8 个请求)(handled connection #)
  第三行
    Reading – Nginx 正在读取请求头的连接数为 6;
    Writting – Nginx 正在读取请求体、处理请求并发送响应给客户端的连接数为 179;
    Waiting – 当前活动的长连接数:106。 #只是keep-alive,没有活动的连接。

  Nginx 官方的解释如下:

    active connections – number of all open connections
    server accepts handled requests – nginx accepted 16630948 connections, handled 16630948 connections (no one was closed just it was accepted), and handles 31070465 requests (1.8 requests per connection)
    reading – nginx reads request header
    writing – nginx reads request body, processes request, or writes response to a client
    waiting – keep-alive connections, actually it is active - (reading + writing)

3 Directives

  这个模块中的唯一一个指令,是:

stub_status

  语法:stub_status on
  作用域:location
  功能:统计这个 location 的信息。

转自:http://blog.csdn.net/poechant/article/details/7627843

时间: 2024-10-11 01:19:19

Nginx-解读内置非默认模块 ngx_http_stub_status_module的相关文章

解剖Nginx·模块开发篇(5)解读内置非默认模块 ngx_http_stub_status_module

1 Background ngx_http_stub_status_module 是一个 Nginx 的内置 HTTP 模块,该模块可以提供 Nginx 的状态信息.默认情况下这个模块是不被编译进来的,所以在编译 Nginx 时要指定加载该模块: --with-http_stub_status_module 当然了,如果你是重新编译,仅仅-s reload是不够的,可能需要用到平滑升级:<高性能Web服务器Nginx的配置与部署研究(14)平滑升级你的Nginx>. 为什么拿它做例子?因为它也

Python内置的操作系统模块(os)与解释器交互模块(sys)

Python内置的操作系统模块(os)与解释器交互模块(sys) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本片博客只介绍Python调用操作系统的模块即os模块,以及Python和解释器打交道的模块即sys模块. 一.操作系统模块常用方法(os) 1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/

Python内置的urllib模块不支持https协议的解决办法

Django站点使用django_cas接入SSO(单点登录系统),配置完成后登录,抛出“urlopen error unknown url type: https”异常.寻根朔源发现是python内置的urllib模块不支持https协议. >>> import urllib>>> urllib.urlopen('http://www.baidu.com')<addinfourl at 269231456 whose fp = <socket._fileo

python内置的sqlite3模块,使用其内置数据库

1.python内置的sqlite3模块,创建数据库中的表,并向表中插入数据,从表中取出所有行,以及输出行的数量. #!/usr/bin/env python3 #创建SQLite3内存数据库,并创建带有四个属性的sales表 #sqlite3模块,提供了一个轻量级的基于磁盘的数据库,不需要独立的服务器进程 import sqlite3 #使用‘:memory:’在内存中创建了一个数据库,创建了连接对象con来代表数据库 con = sqlite3.connect(':memory:') #创建

匿名函数、内置函数与模块

一.匿名函数 Python使用lambda来创建匿名函数,不再使用def语句这样标准的形式定义一个函数 lambda只是一个表达式,函数体比def简单很多 lambda的主体是一个表达式,而不是一个代码块.仅仅能在lambda表达式中封装有限的逻辑进去 lambda函数拥有自己的名称空间,且不能访问自有参数列表之外或全局名称空间里的参数 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率 适合临时的一次性的使用场景 语法:

python--关键字参数/可变参数--内置函数--时间模块--常用模块

---恢复内容开始---关键字参数/可变参数 知识点一.内置函数 def send_msm2(*args): #可变参数,参数组 print('phone',args)send_msm2()#返回值为元组 def send_msm2(*args): #可变参数,参数组 print('phone',args)send_msm2(110, 113, 333) #参数组不能用word= "haha "这样的形式,直接传def say(word,*args): print(word) prin

Django内置的分页模块

自定义分页 未封装版: 优点:直观 缺点:代码乱,不易维护,可拓展性差 data = [] for i in range(1, 302): tmp = {"id": i, "name": "alex-{}".format(i)} data.append(tmp) print(data) def user_list(request): # user_list = data[0:10] # user_list = data[10:20] try: c

扩展Django内置的auth模块代码示例

一,创建自定义User模型类.继承AbstractUser 方法1 新建一个表,表里面有手机号,邮箱,地址,一对一与User表进行关联 方法2 新定义一个类,继承类AbstractUser ( auth模块的User类也是继承此AbstractUser 类的) 说明:python 语法上,也是可以直接继承User类的 以下代码,我们扩展了两个字段,phone和addr 注意:settings.py中一定要指不使用内置的User表,而是使用新的UserInfo表 AUTH_USER_MODEL='

通过lua获取nginx的内置变量,通过这些变量做些逻辑的处理

Nginx提供了很多内置的变量,如: $arg_PARAMETER 这个变量包含在查询字符串时GET请求PARAMETER的值. $args 这个变量等于请求行中的参数. $binary_remote_addr 二进制码形式的客户端地址. $body_bytes_sent 传送页面的字节数 $content_length 请求头中的Content-length字段. $content_type 请求头中的Content-Type字段. $cookie_COOKIE cookie COOKIE的值