面试官之问:知道你的接口“QPS”是多少吗?
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
如果你的日志里没有我上面提到的字段。OK,那就用tomcat自带的access log功能吧!
因为我平时内置的tomcat比较多,指定下面两个属性即可
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。
这就要根据负载均衡的策略来估计!
比如,你部署了32台机器,负载均衡的策略恰巧为轮询,那集群的QPS就是单机的QPS乘32就好了。
所以,根据具体的策略,来估计整个集群的QPS多大!
然后接下来就是:
多嘴一句,一般2000QPS够了!
转:https://www.cnblogs.com/sevencutekk/p/11584183.html
面试官之问:知道你的接口“QPS”是多少吗?相关推荐
- 面试官都会问的Mybatis面试题,你会这样回答吗?
一.概述 面试,难还是不难?取决于面试者的底蕴(气场+技能).心态和认知及沟通技巧.面试其实可以理解为一场聊天和谈判,在这过程中有心理.思想上的碰撞和博弈.其实你只需要搞清楚一个逻辑:"面试 ...
- 二面京东,面试官直接问我JVM,我心里一阵暗爽~
二面京东,面试官直接问我JVM,我心里一阵暗爽~简直了,hhhh 明人不说暗话,直接进入主题!!! 一.什么是JVM 二.JAVA代码编译和执行过程 类加载机制 类执行机制 三.JVM内存管理和垃圾回 ...
- 字节跳动面试官这样问消息队列:高可用、不重复消费、可靠传输、顺序消费、消息堆积,我整理了下
写在前面 又到了年底跳槽高峰季,很多小伙伴出去面试时,不少面试官都会问到消息队列的问题,不少小伙伴回答的不是很完美,有些小伙伴是心里知道答案,嘴上却没有很好的表达出来,究其根本原因,还是对相关的知识点 ...
- 之前遇到一位老面试官,问我的问题真的有点东西
这篇文章其实源于一次我的面试经历. 那次我面对是一位老面试官,真的很有东西. 那次面试我和他叨叨了两小时....我滴妈我嘴巴都干了真的. 他的提问都很有深度,可以说对我的学习之路有很大的帮助. 我记得 ...
- 面试官再问我如何保证 RocketMQ 不丢失消息,这回我笑了!
0x00. 消息的发送流程 一条消息从生产到被消费,将会经历三个阶段: 生产阶段,Producer 新建消息,然后通过网络将消息投递给 MQ Broker 存储阶段,消息将会存储在 Broker 端磁 ...
- 华为二面!!!面试官直接问我Java中到底什么是NIO?这不是直接送分题???
华为二面!!!面试官直接问我Java中到底什么是NIO?这不是直接送分题??? 什么是NIO 缓冲区(Buffer) 缓冲区类型 获取缓冲区 核心属性 核心方法 非直接缓冲区和直接缓冲区 非直接缓冲区 ...
- 99%的面试官都会问到的Java面试题
转载自 99%的面试官都会问到的Java面试题 最近是招聘季,所谓金九银十,正是跳槽的好几节.今天,给大家整理了一些Java面试常考的经典题目,我们一道一道来分析一下. 经典面试题 1.谈谈你对 J ...
- 平面设计面试官常问的问题有哪些?
平面设计面试官常问的问题有哪些?一般情况下都会有一个开篇的自我介绍,这里建议就用平常聊天说话的语气语速来介绍就可以,介绍自己扬长避短,多讲自己的前工作项目经验,在校获奖也可以讲.与工作岗位不强相关 ...
- 面试官常问的 web前端 问题(二)
面试官常问的 web前端 问题 11-20 11.什么是响应式设计? 12.为什么我们要弃用 table 标签 13.iframe 有哪些缺点 14.meta viewport 是做什么用的,怎么写? ...
- 面试官常问的 web前端 问题(四)
面试官常问的 web前端 问题 31-40 31.使用 Vue 的好处 32.MVVM 定义 33.Vue 的生命周期(重点) 34.Vue 的响应式原理 35.第一次页面加载会触发哪几个钩子? 36 ...
最新文章
- 区块链项目实战 - 使用以太坊/智能合约solidity,全栈开发区块链借贷记账小应用,含完整源码
- 根据空间线上的两点生成圆柱体 算法
- 全局变量声明的规范化
- redhat php5 安装,完整的linux(RedHat)+php5.3.10+mysql5.5.19+apache2.2.22安装配置说明
- 实践作业4:Web测试实践(小组作业)记录1
- linux kvm安装windows,Linux下KVM安装windows
- Cpp 对象模型探索 / 虚基类表作用
- 计算机扬天m400c联想,【联想扬天M参数】联想扬天M系列台式电脑参数-ZOL中关村在线...
- 一个图的带权邻接表存储结构的应用
- linux 自学系列:文件内容查找命令grep
- JS基础知识 --变量类型和计算
- 使用Antlr实现简单的DSL
- 十大硬盘数据恢复软件简评
- 【周末夜校】混音问题——字符串函数
- SDRAM控制器仿真
- 随笔记录使用DNK时遇到的几个问题
- 身份证OCR识别,居民二代身份证识别第三方数据接口
- JavaEE | 泛型
- mac、parallel是什么
- 微信小程序获取用户当前所在位置
热门文章
- AE中文版 AE2021中文版下载 AfterEffects2021中文版ACR14.0最新下载和安装
- n张卡片中获取任意3张卡片数字组合的最大值
- aerospike_install_sql
- 京东量化手把手教你写“法玛三因子”策略
- 基于Springboot+mybatis+mysql+html图书管理系统2
- 压电陶瓷极化装置如何形成及应用上的学习
- 新药研发开始“狂飙”,生物制药行业机遇再现。
- 2021-2027全球与中国美拉诺坦 II市场现状及未来发展趋势
- nginx部署多个vue多页面项目
- linux core文件的信息,linux core文件分析