什么是TPS?每秒事务处理量(Transaction Per Second),它是衡量系统处理能力的重要指标。简单的说就是,用户向服务器发送一个请求然后收到服务器的响应结果,这算是一个事物处理。如果一秒内能处理N个这样的事物,那TPS=N。与TPS相对应的,我们经常提到的QPS,那么QPS与TPS有什么区别?
什么是QPS?每秒查询率(Queries Per Second),是一台服务器每秒能响应的查询次数。注意一点,QPS重点在于查询效率,不包含增删改,所以不建议它来作为衡量系统处理能力的指标。
例如一个下单场景,点击下单按钮,会触发下面请求:
1. 校验订单信息(其中有一个QPS)
2. 创建订单(其中有一个QPS)
3. 唤起支付(其中有一个QPS)
那么完成整个下单操作就是一个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 是一款开源(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
下载地址:https://www.apacheviewer.com/download/
下载成功后,执行exe文件,按提示安转即可
可以大概看出每小时或每分钟的最高访问量多少,从而评估TPS
页面更新:2024-05-01
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号