面试官:知道你的接口QPS是多少么?

戳蓝字“ CSDN云计算 ”关注我们哦!
640?wx_fmt=jpeg
作者 |  孤独烟
责编 | 阿秃

引言
大家好,我是渣渣烟。
我又来水文章了。 这篇文章我个人感觉含金量不是太大,大概5分钟左右就能看完! 其实大家都知道,我不爱写这种操作型的文章,一顿截图写几个命令就搞定了,含金量不高。
然而,近期有一段聊天记录如下:
640?wx_fmt=jpeg
看到这里,不要吃惊,不要惊讶!
那个很猥琐的,没有打码的头像,正是渣渣烟本人(此处应有反驳的声音,那个头像哪里猥琐了,分明帅气逼人好么)!
所以,牛皮都吹出去了。 写个文章,自己给自己圆上!

正文

QPS是什么

我们先回忆一下,QPS的概念如下所示:
QPS(Query Per Second):每秒请求数,就是说服务器在一秒的时间内处理了多少个请求。
那我们怎么估出每秒钟能处理多少请求呢?
OK,用日志来估计! 那日志怎么记录呢,细分下来,有两种方式。
方式一:自己在接口里记录
@RestController  	
@RequestMapping("/home")  	
public class IndexController {	
    //省略	
    @RequestMapping("/index")  	
    String index() {  	
        logger.info("渣渣烟");	
        return "index";  	
    }  	
}
假设现在我要统计index这个接口的QPS!
OK,什么叫能体现该接口特性的字符串呢! 就像上面的"渣渣烟"这个字符串,只在index这个接口里出现过,没在其他其他接口里出现过! 因此,只要统计出"渣渣烟"这个字符串在日志里的出现次数,就能知道该接口的请求次数!

什么叫具有唯一性的字符串呢!所谓唯一性,指的是"渣渣烟"这个字符串,在这个接口的一次调用流程中,只出现一次!如果出现两次,就会导致到时候统计出来的次数会多一倍,所以尽量选择具有唯一性的字段!

方式二:利用tomcat的access log

 
此时,你访问一次/home/index地址,会有下面这样日志

 
那么,你就可以根据日志中,该记录的出现次数,统计index接口的QPS。

实战

假设,你这会日志已经拿到手了,名字为xxx.log。
假设日志内容如下
这个时候,你执行一串命令长下面这样的,进行统计就行!

 
出来等结果就是:
然后你就知道,原来在20:40:44 分。 这个接口的QPS最高,达到了惊人的2QPS!
现在,来讲一下命令什么意思!
cat xxx.log:读文件内容	
grep 'GET /mvc2':将文件内容按照GET /mvc2进行过滤	
cut -d ' ' -f4:过滤出来的内容按照空格进行分割,取第四列内容	
uniq -c:每列旁边显示该行重复出现的次数	
sort -n -r:依照数值的大小排序
那么,如果是其他日志格式,无外乎cut语句的处理不同而已,道理类似! 此法可以估算出单机的某接口的QPS是多少!

估算

我们现在估计出了单机的QPS。 接下来,估算集群的QPS。
这就要根据负载均衡的策略来估计!
比如,你部署了32台机器,负载均衡的策略恰巧为轮询,那集群的QPS就是单机的QPS乘32就好了。
所以,根据具体的策略,来估计整个集群的QPS多大!
然后接下来就是:
640?wx_fmt=png

多嘴一句,一般2000QPS够了!

640?wx_fmt=png

640?wx_fmt=png

福利
扫描添加小编微信,备注“ 姓名+公司职位 ”,入驻【CSDN博客】,加入【 云计算学习交流群 】,和志同道合的朋友们共同打卡学习!

640?wx_fmt=jpeg

推荐阅读:




真香,朕在看了!
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页