网上搜这些关键字,一大堆都是概念、例子、公式,但从来没有一个根据实际情况说明的,小白我非常疑惑,还请大佬指教。
我目前了解到,针对网站的项目,QPS 是指每秒处理多少个请求,TPS 是指每秒能处理多少个事务(可理解为打开一个页面是一个事务,一个页面存在多个请求)
1 、首先这里的概念就存在模糊,既然 QPS 、TPS 是指标,那么这个指标的数值应该是有个单位,但这两个指标是什么单位?有的说法我理解为是“个”,但也有说是一个百分比?
2 、按照我对概念的理解,网站应该更加关注 QPS 吧,一个网站的操作如此复杂,如何定义 TPS 里面的“事务”?
3 、并发量这个指标更加奇怪,一定时间内处理请求的数目,这个不是跟 QPS 的概念没太大出入?
对这些概念跌跌碰碰模糊理解个大概后,就剩下一脸懵逼了,如何计算?
比如一个前后端分离的网站,就统计后端接口吧,如何统计?手头的材料估计就只有一份巨大的访问日志,也可以设立一些统计的计数器,但究竟如何利用这些材料计算,我发现没有人分享这一部分,难道这是不可公开秘籍?
烦恼的小白向大佬请教了~~~~
1
gz911122 2020-04-22 17:38:05 +08:00
s 就是单位啊 second 秒
|
2
gz911122 2020-04-22 17:39:01 +08:00
具体到怎么统计, 比如 skywalking 啊,等等之类的都支持的
|
3
gz911122 2020-04-22 17:40:12 +08:00
手动打点也是可以的啊, 最简单的例子,
每次请求记录请求的 path,时间戳,入库 统计的时候按指定的世界间隔聚合,不就出来了.... |
5
guyeu 2020-04-22 17:41:27 +08:00
tps 每秒处理事务数量
qps 每秒查询数量 在很多场景可以混用,单位是个,你说的百分比大概是 90%的事务处理时间小于 x 秒这种。。。 基本上 web 应用里这个事务会被定义成处理请求并返回响应这个过程; 并发量是另一个定义了 : QPS ( TPS )= 并发数 /平均响应时间 |
7
guyeu 2020-04-22 17:43:35 +08:00
统计并不是什么不可公开的秘籍。。也有开源组件例如 micrometer 、prometheus 之类的用来收集 /展示,这方面的文章也很多。。。基本原理就是埋点记录。。。
|
8
Jooooooooo 2020-04-22 17:44:03 +08:00
看一分钟请求量然后除以 60 可以作为 QPS
|
10
raysonlu OP @Jooooooooo 直接在 access.log 统计?
|
11
raysonlu OP @Jooooooooo 如果是#10 那样,那么所谓的“平均响应时间”又是怎样统计?
|
12
guyeu 2020-04-22 18:05:53 +08:00
@raysonlu #11 一般是在代码里埋桩,你非得分析日志那就分析吧。。。统计方式就是在发出请求的时候记录一下时间,收到响应的时候记录一下时间,差值就是这次的响应时间,请求一万次的和除以一万就是这一万次的平均响应时间。有一大堆工具用来做这个事情,自己实现也很简单,我觉得你只要动动脑子是能自己想明白怎么写这些代码的。。
|
13
monsterxx03 2020-04-22 18:08:33 +08:00
收集数据一般分两种 push & pull
push 在代码里打点,通过 statsd 一类的协议,把数据点主动发送到收集数据的 agent, eg: datadog, graphite. pull 也是在代码里打点, 程序暴露一个 http endpoint, 比如 /metrics, 然后监控系统主动轮循这个地址, 把数据拉下来记录, eg: prometheus 程序里打点的用到的 sdk 会用到的数据类型一般会分成 Counter, Gauge, Histogram 等,建议你写个最简单的程序集成下 prometheus 的 sdk, 然后用本地跑个 prometheus 实现下统计 qps 就有感觉了. 直接统计 access.log 这种也会有, 一般是一些现成的程序不好改代码埋点, prometheus 里把这类辅助导出 metrics 的程序叫 exporter, 比如: https://github.com/fstab/grok_exporter |
14
Jooooooooo 2020-04-22 19:10:51 +08:00
|
15
sleepm 2020-04-23 01:26:33 +08:00 via Android
ab 命令测并发,响应时间
phpmyadmin 状态也可以查看 mysql 服务器相关指标 |
16
raysonlu OP @monsterxx03 谢谢大佬介绍这么多工具,想了解一下做这个工作一般是什么岗位,或者是如何分类的?运维?测试?技术经理?我家庙比较小,目前这类工作都是自己一脚踢,但自身是码农出身,没进过大庙,最重要是找不到相关的活跃圈子,在处理这类工作或者问题,只能是依据仅限的基础知识去谷歌、论坛进行摸爬滚跌,显得相当被动。。。
|
17
raysonlu OP @guyeu @Jooooooooo 感谢指点,我还真的是要对一个上线的项目进行一个过去的评估,只有 log 了,有工具帮我统计当然更加好我后期都考虑接入,不过感觉理解清楚原理也是比较重要,毕竟以后可能遇到各种情况下进行这些评估量测工作。
|
18
Heap 2020-04-23 14:17:49 +08:00
使用 loadrunner 压测软件对核心业务接口(评估那些接口可能存在高并发)进行进行压测:
1 、观察服务器硬件信息 2 、观察应用输出日志有没异常 3 、也观察数据库有没有死锁 4 、压测前造好相关业务数据 |
19
julyclyde 2020-04-23 15:04:38 +08:00
在哪儿看到的还有百分比的???
并发是指都在过程中还没完成的 qps 一般是统计完成的 |