网站首页 > 博客文章 正文
怎样评估系统支持的TPS是多少
- 前言
- TPS和QPS有什么区别
- 怎样确定TPS
- goaccess使用
- http log viewer使用
- 怎样提高TPS
前言
什么是TPS?每秒事务处理量(Transaction Per Second),它是衡量系统处理能力的重要指标。简单的说就是,用户向服务器发送一个请求然后收到服务器的响应结果,这算是一个事物处理。如果一秒内能处理N个这样的事物,那TPS=N。与TPS相对应的,我们经常提到的QPS,那么QPS与TPS有什么区别?
什么是QPS?每秒查询率(Queries Per Second),是一台服务器每秒能响应的查询次数。注意一点,QPS重点在于查询效率,不包含增删改,所以不建议它来作为衡量系统处理能力的指标。
TPS和QPS有什么区别
- 如果对应一个单一的查询接口,QPS=TPS
- 通常情况下,在页面上点击一个按钮,可能触发多次服务器请求,那么点击按钮后最后得到响应结果,那么这算一个TPS,这一个TPS中又包含多个QPS
例如一个下单场景,点击下单按钮,会触发下面请求:
1. 校验订单信息(其中有一个QPS)
2. 创建订单(其中有一个QPS)
3. 唤起支付(其中有一个QPS)
那么完成整个下单操作就是一个TPS,TPS倾向于一次业务操作。
所以对于后端来说,怎么确定系统的TPS成为关键。
怎样确定TPS
第一种情况,系统已经在生产环境运行一段时间,可以通过访问日志确定,例如Nginx的access.log日志,可以结合goaccess与http log viewer使用(下面会介绍这两个工具怎么使用),goaccess和http log view都可以获取到精确到分的HIT(点击量),获取到精确到分的最高HIT,例如最高HIT为600,则每秒600/60,TPS则要做到这个值得2-5倍,所以TPS最少要大于20。
第二种情况,新项目还没上线,需要评估出大概能支持的TPS,可以借鉴二八定律:社会上20%的人占有80%的社会财富,用在评估TPS时,80%的用户在20%的时间访问,例如,系统用户日活在1万,一天去掉凌晨0点到6点访问量低的6个小时,剩下按一天按18小时计算,TPS=100080% /(18606020%)。
goaccess使用
GoAccess 是一款开源(MIT许可证)的且具有交互视图界面的实时 Web 日志分析工具,通过你的 Web 浏览器或者 *nix 系统下的终端程序即可访问。
官网地址:https://goaccess.io/
下载安装(以centos为例):
yum install goaccess
下面以Nginx日志为例,做一下日志分析,可以创建一个goaccess文件,专门用于分析日志
cd /usr/local
mkdir goaccess
从服务器上获取Nginx日志access.log,放在goaccess目录下,接下来通过命令执行分析
goaccess -qo report.html --log-format=COMBINED access.log
-q:忽略请求的查询字符串。即: www.google.com/page.htm?query => www.google.com/page.htm,去掉查询字符串将极大降低内存消耗,特别对带时间戳的请求。
-o:将给定文件重定向到标准输出,通过后缀名决定输出格式
–log-format:用于指定日志字符串格式,默认的 Nginx 日志需要指定 COMBINED
生成report.html,下载到本地,用浏览器打开,非常直观的显示各项数据,我们要评估TPS,主要关注下面这一项:独立访客
此面板按照日期展示了访问次数,独立访客数,以及累计消耗的带宽等指标。具有相同IP,相同访问时间,相同的 UserAgent 的 HTTP 请求将会被识别为独立访客。默认情况下包含了网络爬虫。您也可以选择使用 --date-spec=hr 参数将按照日期分析修改为按照小时,例如:05/Jun/2016:16 。这对于希望在小时级别去跟踪每日流量非常有帮助。
# 生成小时级别的命令
goaccess -qo report.html --log-format=COMBINED --date-spec=hr access.log
# 生成分钟级别的命令
goaccess -qo report.html --log-format=COMBINED --date-spec=min access.log
展示了按小时统计,很明显看出在哪个小时内访问量达到峰值
展示了按分钟统计,可以看出某一天哪一分钟达到峰值
拿个这峰值我们就可以评估TPS了
我们也可以按时间切割日志
- 设置的日期到文件结束
sed -n '/01\/Jan\/2023/,$ p' access.log | goaccess -a -o report.html
- 可以按时间段分析
sed -n '/01\/Jan\/2023/,/31\/Jan\/2023/ p' access.log | goaccess -a -qo report.html
http log viewer使用
下载地址:https://www.apacheviewer.com/download/
下载成功后,执行exe文件,按提示安转即可
- 导入access.log
- 导入成功后
- 导入时也可按时段导入
- 按时间统计访问量
- 可以按小时或按分钟生成报告
- 报告生成
可以大概看出每小时或每分钟的最高访问量多少,从而评估TPS
怎样提高TPS
- 数据库连接池是否配置合理
- 优化SQL,有条件的话配置主从库,读写分离
- 优化业务逻辑
- 使用多线程
- 使用缓存
- 最后如果TPS还上不去的话,可考虑提高硬件资源
猜你喜欢
- 2024-10-15 英国Access将与马来西亚数字经济发展局合作,加快在亚太地区扩张
- 2024-10-15 霍尼韦尔为香港麗翔公务航空提供GoDirect客舱互联服务|美通社
- 2024-10-15 详解Win10家庭版/专业版/企业版功能区别
- 2024-10-15 Go1.18 快讯:这个新特性太实用了(go1.17新特性)
- 2024-10-15 CentOS中Nginx日志自动分割及日志分析
- 2024-10-15 GO语言(三十):访问关系型数据库(上)
- 2024-10-15 从linux网站搭建到日志服务审计渗透溯源
- 2024-10-15 golang对接阿里云私有Bucket上传图片、授权访问图片
- 2024-10-15 开源的分析web日志工具-Python语言开发,具有灵活的日志格式配置
- 2024-10-15 nginx运维小纪(nginx应用与运维实战 电子版)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)