nginx源码修改之stub_status

    nginx状态监控配置我就不多说了,不知道的可以参考我的上篇文章,或者查阅官方文档。

    当前nginx的stub_status返回的结果如下所示:

    Active connections 当前活跃连接数,包括等待中的连接数。

    accepts  接受客户端连接的总数。

     handled  处理请求的总数,一般和accepts相差不大,如果相差比较大说明服务器的处理能力下降了,可以考虑优化服务了。

    requests 客户端请求的总数,这个值一般大于其他两个。

    Reading 表示nginx正在读请求头的总数

    Writing 表示nginx正在给客户端写请求的总数

    Waiting 表示客户端正在等待响应的总数

Active connections: 1 
server accepts handled requests
 4 4 11 
Reading: 0 Writing: 1 Waiting: 0

     

        通过对上面参数的说明,不难发现。要想获得服务器的请求量,连接数很容易。而且我们可以写一个监控程序,每隔1s调用一下stub_status的location,和上一秒做一个减法就可以得的nginx服务器QPS。但是遗憾的是,如何想要的到nginx处理请求的平均响应时间,就没法解决了。如果有人找你说你的http接口总数timeout,那就郁闷了。我的服务响应到底多长时间?这个问题就急需要解决。

        问题解决思路是这样的。在accepts handled requests后面加一个返回值,即服务器处理每个请求响应时间的和。这样要想看当前服务的响应时间,就只需要,和上一秒请求时间做差然后除以这一秒处理的handled值即可。

    修改后的结果如下所示,其中 13 就是所有请求累计的响应时间,单位是毫秒。

Active connections: 1 
server accepts handled requests
 1 1 63 13 
Reading: 0 Writing: 1 Waiting: 0

    代码可以去 https://github.com/guisz/nginx-1.9.9-stub_status.git  查看。




你可能感兴趣的:(nginx源码修改之stub_status)