怎样评估系统支持的TPS是多少

怎样评估系统支持的TPS是多少

前言

什么是TPS?每秒事务处理量(Transaction Per Second),它是衡量系统处理能力的重要指标。简单的说就是,用户向服务器发送一个请求然后收到服务器的响应结果,这算是一个事物处理。如果一秒内能处理N个这样的事物,那TPS=N。与TPS相对应的,我们经常提到的QPS,那么QPS与TPS有什么区别?

什么是QPS?每秒查询率(Queries Per Second),是一台服务器每秒能响应的查询次数。注意一点,QPS重点在于查询效率,不包含增删改,所以不建议它来作为衡量系统处理能力的指标。

TPS和QPS有什么区别

  1. 如果对应一个单一的查询接口,QPS=TPS
  2. 通常情况下,在页面上点击一个按钮,可能触发多次服务器请求,那么点击按钮后最后得到响应结果,那么这算一个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了

我们也可以按时间切割日志

  1. 设置的日期到文件结束
sed -n '/01/Jan/2023/,$ p' access.log | goaccess -a -o report.html
  1. 可以按时间段分析
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文件,按提示安转即可

  1. 导入access.log

  1. 导入成功后

  1. 导入时也可按时段导入

  1. 按时间统计访问量

  1. 可以按小时或按分钟生成报告

  1. 报告生成


可以大概看出每小时或每分钟的最高访问量多少,从而评估TPS

怎样提高TPS

  1. 数据库连接池是否配置合理
  2. 优化SQL,有条件的话配置主从库,读写分离
  3. 优化业务逻辑
  4. 使用多线程
  5. 使用缓存
  6. 最后如果TPS还上不去的话,可考虑提高硬件资源
展开阅读全文

页面更新:2024-05-01

标签:系统   访客   峰值   字符串   按钮   访问量   小时   服务器   文件   日志

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top