我是靠谱客的博主 从容跳跳糖,最近开发中收集的这篇文章主要介绍Openresty--关于统计qps和tps的思路及代码设计,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

说明:

QPS----每秒中服务器端收到的请求数量。

TPS----特意说明下,在这里当中的意思是每秒处理完成的请求的数量。

需掌握:

openresty的access,log阶段

ngx.shared.DICT 及其add get 和incr函数

思路:

QPS的统计:在access阶段当前秒钟第一个请求进来时,将字段("qps_num:")+当前时间作为key,value为1写入缓存中,当下一个请求进来时,递增1.

TPS的统计:在log阶段当前秒钟第一个请求进来时,将字段("tps_num:")+当前时间作为key,value为1写入缓存中,下一个请求走到该阶段时,递增1.

设计:

在80端口返回正常响应,并记录tps和qps,在81端口返回上一秒钟的tps和qps值。

实现:

nginx.conf:

...
http{
    ...
    lua_shared_dict cache 10m;
    ...
server{
    listen 80;
    server_name 80;
    access_by_lua_block{
	local cache=ngx.shared.cache
	local ctime=os.time()
	local qps_key="qps_num"..ctime
	local expire=3
	cache:add(qps_key,0,expire)
	cache:incr(qps_key,1)
	}
	
	log_by_lua_block{
	local cache=ngx.shared.cache
	local ctime=os.time()
	local tps_key="tps_num"..ctime
	local expire=3
	cache:add(tps_key,0,expire)
	cache:incr(tps_key,1)
	}
    location / {
    proxy_pass ...;
    }
}

server{
	listen 81;
	server_name 81;
	location / {
	content_by_lua_block{
	local cache=ngx.shared.cache
	local ctime=os.time()
	local timen=tonumber(ctime)-1
	local qps_key="qps_num"..timen
	local tps_key="tps_num"..timen
	local qps_count=cache:get(qps_key) or 0
	local tps_count=cache:get(tps_key) or 0
	ngx.say("qps: ",qps_count)
	ngx.say("tps: ",tps_count)
	}
	
	}
}
}






最后

以上就是从容跳跳糖为你收集整理的Openresty--关于统计qps和tps的思路及代码设计的全部内容,希望文章能够帮你解决Openresty--关于统计qps和tps的思路及代码设计所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部