概述
说明:
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的思路及代码设计所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复