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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/fujiandiyi008/article/details/101442348

引言

大家好,我是渣渣烟。

我又来水文章了。这篇文章我个人感觉含金量不是太大,大概5分钟左右就能看完!其实大家都知道,我不爱写这种操作型的文章,一顿截图写几个命令就搞定了,含金量不高。

然而,近期有一段聊天记录如下

640?wx_fmt=jpeg

看到这里,不要吃惊,不要惊讶!

那个很猥琐的,没有打码的头像,正是渣渣烟本人(此处应有反驳的声音,那个头像哪里猥琐了,分明帅气逼人好么)!

所以,牛皮都吹出去了。写个文章,自己给自己圆上!

正文

QPS是什么

我们先回忆一下,QPS的概念如下所示:

QPS(Query Per Second):每秒请求数,就是说服务器在一秒的时间内处理了多少个请求。

那我们怎么估出每秒钟能处理多少请求呢?方式一:自己在接口里记录

@RestController  
@RequestMapping("/home")  
public class IndexController {
    //省略
    @RequestMapping("/index")  
    String index() {  
        logger.info("渣渣烟");
        return "index";  
    }  
}  

假设现在我要统计index这个接口的QPS!

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

方式二:利用tomcat的access log

server.tomcat.accesslog.directory
设定log的目录,默认: logs
server.tomcat.accesslog.enabled
是否开启access log,默认: false

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

127.0.0.1 - - [19/Aug/2019:23:55:27 +0800] "POST /home/index HTTP/1.1" 200 138

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

实战

假设,你这会日志已经拿到手了,名字为xxx.log。

//省略,都长差不多,贴其中一条就行
0:0:0:0:0:0:0:1 - - [27/Dec/2018:20:41:57 +0800] "GET /mvc2/upload.do HTTP/1.1" 404 949 http-bio-8080-exec-5 43
//省略

这个时候,你执行一串命令长下面这样的,进行统计就行!cat xx.log |grep 'GET /mvc2'|cut -d ' ' -f4|uniq -c|sort -n -r

2 [27/Dec/2018:20:40:44
1 [27/Dec/2018:20:47:58
1 [27/Dec/2018:20:47:42
1 [27/Dec/2018:20:41:57

然后你就知道,原来在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。

640?wx_fmt=png


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

总结

渣渣烟写到此处,竟无语凝噎。希望大家有所收获!

猜你喜欢

转载自blog.csdn.net/fujiandiyi008/article/details/101442348