本篇文章给大家谈谈一个2core4GB的mysqlserver的QPS和TPS能在多少?,以及mysql的qps一般多少的知识点,同时本文还将给你拓展MySQL-TPS,QPS到底是什么、mysql状
本篇文章给大家谈谈一个2core4GB的 mysql server 的 QPS 和 TPS 能在多少?,以及mysql的qps一般多少的知识点,同时本文还将给你拓展MySQL-TPS,QPS 到底是什么、mysql状态查看 QPS/TPS/缓存命中率查看、NebulaGraph v3.3.0 性能报告,Match count QPS 有 2~8 倍提升,3 跳查询 QPS 时延低至原 1/3、PV/UV/IP、QPS/TPS、Throughput等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:- 一个2core4GB的 mysql server 的 QPS 和 TPS 能在多少?(mysql的qps一般多少)
- MySQL-TPS,QPS 到底是什么
- mysql状态查看 QPS/TPS/缓存命中率查看
- NebulaGraph v3.3.0 性能报告,Match count QPS 有 2~8 倍提升,3 跳查询 QPS 时延低至原 1/3
- PV/UV/IP、QPS/TPS、Throughput
一个2core4GB的 mysql server 的 QPS 和 TPS 能在多少?(mysql的qps一般多少)
数据库基本的配置信息如下,使用的磁盘是 ESSD PL1 云盘
这个数据库的时候比较检查,都是一些很简单的 select 和 update 和 insert
可以看到 TPS 基本在 1k 左右,而 QPS 可以到 3-4k
MySQL-TPS,QPS 到底是什么
计算 TPS,QPS 的方式
qps,tps 是衡量数据库性能的关键指标,网上普遍有两种计算方式
TPS,QPS 相关概念
QPS:Queries Per Second 查询量 / 秒,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理查询量多少的衡量标准
TPS : Transactions Per Second 是事务数 / 秒,是一台数据库服务器在单位时间内处理的事务的个数。
计算方式一:基于 questions 计算 qps, 基于 com_commit com_rollback 计算 tps
questions = show global status like ''questions'';
uptime = show global status like ''uptime'';
qps=questions/uptime
com_commit = show global status like ''com_commit'';
com_rollback = show global status like ''com_rollback'';
uptime = show global status like ''uptime'';
tps=(com_commit + com_rollback)/uptime
方法二 基于 com_* 的 status 变量计算 tps ,qps
show global status where variable_name in(''com_select'',''com_insert'',''com_delete'',''com_update'');
获取间隔1s 的 com_*的值,并作差值运算
del_diff = (int(mystat2[''com_delete'']) - int(mystat1[''com_delete'']) ) / diff
ins_diff = (int(mystat2[''com_insert'']) - int(mystat1[''com_insert'']) ) / diff
sel_diff = (int(mystat2[''com_select'']) - int(mystat1[''com_select'']) ) / diff
upd_diff = (int(mystat2[''com_update'']) - int(mystat1[''com_update'']) ) / diff
tps= Com_insert/s + Com_update/s + Com_delete/s
qps=Com_select/s + Com_insert/s + Com_update/s + Com_delete/s
一些结论
总结
Questions 是记录了从 mysqld 启动以来所有的 select,dml 次数包括 show 命令的查询的次数。这样多少有失准确性,比如很多数据库有监控系统在运行,每 5 秒对数据库进行一次 show 查询来获取当前数据库的状态,而这些查询就被记录到 QPS,TPS 统计中,造成一定的 "数据污染".
mysql状态查看 QPS/TPS/缓存命中率查看
Reference: https://www.cnblogs.com/zping/p/5163670.html
NebulaGraph v3.3.0 性能报告,Match count QPS 有 2~8 倍提升,3 跳查询 QPS 时延低至原 1/3
摘要
v3.3.0 版本主要优化了执行计划和属性裁剪,并对深度多跳场景进行特别优化,相关 case 的性能有明显的提升,相比 v3.2.0:
1) Match count QPS 增幅明显,有 2~8 倍的提升;时延降低至原 1/5.
2) 3 跳查询 QPS 提升约 40-100%,时延低至原 1/3;
3) 对于内存占用和释放进行了优化
4) 其他各 case 有不同程度提升;
测试环境
服务器和压测机皆为物理机
测试数据
测试数据采用 LDBC-SNB SF100 数据集,SF100 数据集大小为 100G,共有 282,386,021 个点以及 1,775,513,185 条边。测试用的图空间分区数为 24,副本数为 3。
关于 LDBC-SNB
关联数据基准委员会(LDBC,Linked Data Benchmark Council),是图(Graph)和 RDF 数据管理的基准指南制定者。社交网路基准(SNB,Social Network Benchmark)是关联数据基准委员会(LDBC)开发的软件基准(Benchmark)之一。关于 LDBC-SNB 数据集,具体请参考以下文档:
-
LDBC-SNB Specification
-
LDBC-SNB DOCs
-
LDBC-SNB 测试数据集生产工具
Nebula Commit
-
nebula-graphd version c9f84b1
-
nebula-storaged version c9f84b1
-
nebula-metad version c9f84b1
测试说明
压测工具使用基于 Go 语言的 k6,具体请参阅 k6 官方网站;客户端使用的是 nebula-go
图表中横坐标轴的 “50_vu“、“100_vu “等中的” vu“表示的是 k6 使用的概念 “virtual user”,即性能测试中的并发数;50_vu 表示 50 个并发用户,100_vu 表示 100 个并发用户,以此类推…
性能基线使用正式发布的 3.2.0 版本
ResponseTime = Latency(服务端处理时长)+ 网络回传结果时长 + 客户端反序列化结果时长
基线测试
注:下图涉及的词语解释
-
QPS 即吞吐率
-
Latency 即服务端耗时
-
ResponseTime 即客户端耗时
-
RowSize 即请求返回行数
用例和结果
查询带边属性
GO {} STEP FROM {} OVER KNOWS yield KNOWS.creationDate
一跳・吞吐率
一跳・服务端耗时(ms)
一跳・客户端耗时(ms)
一跳・请求返回行数
二跳・吞吐率
二跳・服务端耗时(ms)
二跳・客户端耗时(ms)
二跳・请求返回行数
三跳・吞吐率
三跳・服务端耗时(ms)
三跳・客户端耗时(ms)
三跳・请求返回行数
查询带目的点属性
GO {} STEP FROM {} OVER KNOWS yield $$.Person.firstName
一跳・吞吐率
一跳・服务端耗时(ms)
一跳・客户端耗时(ms)
一跳・请求返回行数
二跳・吞吐率
二跳・服务端耗时(ms)
二跳・客户端耗时(ms)
二跳・请求返回行数
三跳・吞吐率
三跳・服务端耗时(ms)
三跳・客户端耗时(ms)
三跳・请求返回行数
查询带边属性 + 目的点属性
GO {} STEP FROM {} OVER KNOWS yield DISTINCT KNOWS.creationDate as t, $$.Person.firstName, $$.Person.lastName, $$.Person.birthday as birth | order by $-.t, $-.birth | limit 10
一跳・吞吐率
一跳・服务端耗时(ms)
一跳・客户端耗时(ms)
一跳・请求返回行数
二跳・吞吐率
二跳・服务端耗时(ms)
二跳・客户端耗时(ms)
二跳・请求返回行数
三跳・吞吐率
三跳・服务端耗时(ms)
三跳・客户端耗时(ms)
三跳・请求返回行数
LOOKUP
LOOKUP ON Person WHERE Person.firstName == ''{}'' YIELD Person.firstName, Person.lastName, Person.gender, Person.birthday, Person.creationDate, Person.locationIP, Person.browserUsed
吞吐率
服务端耗时(ms)
客户端耗时(ms)
请求返回行数
FETCH 点
FETCH PROP ON Person {} YIELD Person.firstName, Person.lastName, Person.gender, Person.birthday, Person.creationDate, Person.locationIP, Person.browserUsed
吞吐率
服务端耗时(ms)
客户端耗时(ms)
请求返回行数
FETCH 边
FETCH PROP ON KNOWS {} -> {} YIELD KNOWS.creationDate
吞吐率
服务端耗时(ms)
客户端耗时(ms)
请求返回行数
MATCH 索引
MATCH (v:Person) WHERE v.Person.firstName == ''{}'' RETURN v
吞吐率
服务端耗时(ms)
客户端耗时(ms)
请求返回行数
MATCH 一跳
MATCH (v1:Person)-[e:KNOWS]->(v2:Person) WHERE id(v1) == {} RETURN v2
吞吐率
服务端耗时(ms)
客户端耗时(ms)
请求返回行数
MATCH 两跳
MATCH (v1:Person)-[e:KNOWS*2]->(v2:Person) WHERE id(v1) == {} RETURN v2
吞吐率
服务端耗时(ms)
https://www-cdn.nebula-graph.com.cn/nebula-website-5.0/images/blogs/3.3.0%20benchmark%20report/metrics/Match2Hop%20Latency.png
客户端耗时(ms)
请求返回行数
插入点
INSERT VERTEX
Comment (creationDate, locationIP, browserUsed, content, length) VALUES {}:(''{}'', ''{}'', ''{}'', ''{}'', {})
吞吐率
服务端耗时(ms)
客户端耗时(ms)
请求返回行数
插入边
INSERT EDGE LIKES (creationDate) VALUES {}→{}:(''{}'')
吞吐率
服务端耗时(ms)
客户端耗时(ms)
请求返回行数
MatchTest1
match (v:Person) where id(v) == {} return count(v.Person.firstName)
吞吐率
服务端耗时(ms)
客户端耗时(ms)
请求返回行数
MatchTest2
match (v:Person)-[e:KNOWS]-(v2) where id(v) == {} and v2.Person.locationIP != ''yyy'' return length(v.Person.browserUsed) + length(v2.Person.gender)
吞吐率
服务端耗时(ms)
客户端耗时(ms)
请求返回行数
MatchTest3
match (v:Person)-[e:KNOWS]-(v2) where id(v) == {} and v2.Person.locationIP != ''yyy'' with v, v2 as v3 return length(v.Person.browserUsed) + (v3.Person.gender)
吞吐率
服务端耗时(ms)
客户端耗时(ms)
请求返回行数
MatchTest4
MATCH (m)-[:KNOWS]-(n) WHERE id(m)=={} OPTIONAL MATCH (n)<-[:KNOWS]-(l) RETURN length(m.Person.lastName) AS n1, length(n.Person.lastName) AS n2, l.Person.creationDate AS n3 ORDER BY n1, n2, n3 LIMIT 10
吞吐率
服务端耗时(ms)
客户端耗时(ms)
请求返回行数
MatchTest5
MATCH (m)-[:KNOWS]-(n) WHERE id(m)=={} MATCH (n)-[:KNOWS]-(l) WITH m AS x, n AS y, l RETURN x.Person.firstName AS n1, y.Person.firstName AS n2, CASE WHEN l.Person.firstName is not null THEN l.Person.firstName WHEN l.Person.gender is not null THEN l.Person.birthday ELSE ''null'' END AS n3 ORDER BY n1, n2, n3 LIMIT 10
吞吐率
服务端耗时(ms)
客户端耗时(ms)
请求返回行数
查询带边属性_count
GO {} STEP FROM {} OVER KNOWS yield KNOWS.creationDate | return count(*)
一跳・吞吐率
一跳・服务端耗时(ms)
一跳・客户端耗时(ms)
一跳・请求返回行数
二跳・吞吐率
二跳・服务端耗时(ms)
二跳・客户端耗时(ms)
二跳・请求返回行数
三跳・吞吐率
三跳・服务端耗时(ms)
三跳・客户端耗时(ms)
三跳・请求返回行数
查询带目的点属性_count
GO 1 STEP FROM {} OVER KNOWS yield $$.Person.firstName | return count(*)
一跳・吞吐率
一跳・服务端耗时(ms)
一跳・客户端耗时(ms)
一跳・请求返回行数
二跳・吞吐率
二跳・服务端耗时(ms)
二跳・客户端耗时(ms)
二跳・请求返回行数
三跳・吞吐率
三跳・服务端耗时(ms)
三跳・客户端耗时(ms)
三跳・请求返回行数
LOOKUP_count
LOOKUP ON Person WHERE Person.firstName == ''{}'' YIELD Person.firstName | count(*)
吞吐率
服务端耗时(ms)
客户端耗时(ms)
请求返回行数
Match_count
MATCH (v:Person) WHERE v.Person.firstName == ''{}'' RETURN count(*)
吞吐率
服务端耗时(ms)
客户端耗时(ms)
请求返回行数
Match1Hop_count
MATCH (v1:Person)-[e:KNOWS]->(v2:Person) WHERE id(v1) == {} RETURN count(*)
吞吐率
服务端耗时(ms)
客户端耗时(ms)
https://www-cdn.nebula-graph.com.cn/nebula-website-5.0/images/blogs/3.3.0%20benchmark%20report/metrics/Match1HOP_count%20ResponseTime%20(ms)%20.png
请求返回行数
Match2Hop_count
MATCH (v1:Person)-[e:KNOWS*2]->(v2:Person) WHERE id(v1) == {} RETURN count(*)
吞吐率
服务端耗时(ms)
客户端耗时(ms)
请求返回行数
3.3.0 vs 3.2.0(Baseline)
以下数据选取 P99 值。
查询带边属性
GO {} STEP FROM {} OVER KNOWS yield KNOWS.creationDate
一跳・吞吐率
一跳・服务端耗时(ms)
一跳・客户端耗时(ms)
二跳・吞吐率
二跳・服务端耗时(ms)
二跳・客户端耗时(ms)
三跳・吞吐率
三跳・服务端耗时(ms)
三跳・客户端耗时(ms)
查询带目的点属性
GO {} STEP FROM {} OVER KNOWS yield $$.Person.firstName
一跳・吞吐率
一跳・服务端耗时(ms)
一跳・客户端耗时(ms)
二跳・吞吐率
二跳・服务端耗时(ms)
二跳・客户端耗时(ms)
三跳・吞吐率
三跳・服务端耗时(ms)
三跳・客户端耗时(ms)
查询带边属性 + 目的点属性
GO {} STEP FROM {} OVER KNOWS yield DISTINCT KNOWS.creationDate as t, $$.Person.firstName, $$.Person.lastName, $$.Person.birthday as birth | order by $-.t, $-.birth | limit 10
一跳・吞吐率
一跳・服务端耗时(ms)
一跳・客户端耗时(ms)
二跳・吞吐率
二跳・服务端耗时(ms)
二跳・客户端耗时(ms)
三跳・吞吐率
三跳・服务端耗时(ms)
三跳・客户端耗时(ms)
LOOKUP
LOOKUP ON Person WHERE Person.firstName == ''{}'' YIELD Person.firstName, Person.lastName, Person.gender, Person.birthday, Person.creationDate, Person.locationIP, Person.browserUsed
吞吐率
服务端耗时(ms)
客户端耗时(ms)
FETCH 点
FETCH PROP ON Person {} YIELD Person.firstName, Person.lastName, Person.gender, Person.birthday, Person.creationDate, Person.locationIP, Person.browserUsed
吞吐率
服务端耗时(ms)
客户端耗时(ms)
FETCH 边
FETCH PROP ON KNOWS {} -> {} YIELD KNOWS.creationDate
吞吐率
服务端耗时(ms)
客户端耗时(ms)
MATCH 索引
MATCH (v:Person) WHERE v.Person.firstName == ''{}'' RETURN v
吞吐率
服务端耗时(ms)
客户端耗时(ms)
MATCH 一跳
MATCH (v1:Person)-[e:KNOWS]->(v2:Person) WHERE id(v1) == {} RETURN v2
一跳・吞吐率
一跳・服务端耗时(ms)
一跳・客户端耗时(ms)
MATCH 两跳
MATCH (v1:Person)-[e:KNOWS*2]->(v2:Person) WHERE id(v1) == {} RETURN v2
吞吐率
服务端耗时(ms)
客户端耗时(ms)
插入点
INSERT VERTEX
Comment (creationDate, locationIP, browserUsed, content, length) VALUES {}:(''{}'', ''{}'', ''{}'', ''{}'', {})
吞吐率
服务端耗时(ms)
客户端耗时(ms)
插入边
INSERT EDGE LIKES (creationDate) VALUES {}→{}:(''{}'')
吞吐率
服务端耗时(ms)
客户端耗时(ms)
MatchTest1
match (v:Person) where id(v) == {} return count(v.Person.firstName)
吞吐率
服务端耗时(ms)
客户端耗时(ms)
MatchTest2
match (v:Person)-[e:KNOWS]-(v2) where id(v) == {} and v2.Person.locationIP != ''yyy'' return length(v.Person.browserUsed) + length(v2.Person.gender)
吞吐率
服务端耗时(ms)
客户端耗时(ms)
MatchTest3
match (v:Person)-[e:KNOWS]-(v2) where id(v) == {} and v2.Person.locationIP != ''yyy'' with v, v2 as v3 return length(v.Person.browserUsed) + (v3.Person.gender)
吞吐率
服务端耗时(ms)
客户端耗时(ms)
MatchTest4
MATCH (m)-[:KNOWS]-(n) WHERE id(m)=={} OPTIONAL MATCH (n)<-[:KNOWS]-(l) RETURN length(m.Person.lastName) AS n1, length(n.Person.lastName) AS n2, l.Person.creationDate AS n3 ORDER BY n1, n2, n3 LIMIT 10
吞吐率
服务端耗时(ms)
客户端耗时(ms)
MatchTest5
MATCH (m)-[:KNOWS]-(n) WHERE id(m)=={} MATCH (n)-[:KNOWS]-(l) WITH m AS x, n AS y, l RETURN x.Person.firstName AS n1, y.Person.firstName AS n2, CASE WHEN l.Person.firstName is not null THEN l.Person.firstName WHEN l.Person.gender is not null THEN l.Person.birthday ELSE ''null'' END AS n3 ORDER BY n1, n2, n3 LIMIT 10
吞吐率
服务端耗时(ms)
客户端耗时(ms)
查询带边属性_count
GO {} STEP FROM {} OVER KNOWS yield KNOWS.creationDate | return count(*) ;
吞吐率
服务端耗时(ms)
客户端耗时(ms)
查询带目的点属性_count
GO 1 STEP FROM {} OVER KNOWS yield $$.Person.firstName | return count(*)
一跳・吞吐率
一跳・服务端耗时(ms)
一跳・客户端耗时(ms)
二跳・吞吐率
二跳・服务端耗时(ms)
二跳・客户端耗时(ms)
三跳・吞吐率
三跳・服务端耗时(ms)
三跳・客户端耗时(ms)
LOOKUP_count
LOOKUP ON Person WHERE Person.firstName == ''{}'' YIELD Person.firstName | count(*)
吞吐率
服务端耗时(ms)
客户端耗时(ms)
Match_count
MATCH (v:Person) WHERE v.Person.firstName == ''{}'' RETURN count(*)
吞吐率
服务端耗时(ms)
客户端耗时(ms)
Match1Hop_count
MATCH (v1:Person)-[e:KNOWS]->(v2:Person) WHERE id(v1) == {} RETURN count(*)
吞吐率
服务端耗时(ms)
客户端耗时(ms)
Match2Hop_count
MATCH (v1:Person)-[e:KNOWS*2]->(v2:Person) WHERE id(v1) == {} RETURN count(*)
吞吐率
服务端耗时(ms)
客户端耗时(ms)
新增测试用例 - LDBC GO 属性过滤深度优化
测试用例和结果
Go3StepDistinctDst
GO 3 STEP FROM {0} OVER KNOWS REVERSELY YIELD DISTINCT KNOWS._dst as dst | YIELD count(*);
吞吐率
服务端耗时(ms)
客户端耗时(ms)
Go3StepDistinctDstProp
GO 3 STEP FROM {0} OVER KNOWS WHERE $$.Person.firstName == \"{1}\" YIELD distinct id($$) , $$.Person.locationIP | yield count(*)
吞吐率
服务端耗时(ms)
客户端耗时(ms)
3.3.0 vs 3.2.0
以下数据选取 P99 值。
Go3StepDistinctDst
GO 3 STEP FROM {0} OVER KNOWS REVERSELY YIELD DISTINCT KNOWS._dst as dst | YIELD count(*);
吞吐率
服务端耗时(ms)
客户端耗时(ms)
请求返回行数
Go3StepDistinctDstProp
GO 3 STEP FROM {0} OVER KNOWS WHERE $$.Person.firstName == \"{1}\" YIELD distinct id($$) , $$.Person.locationIP | yield count(*)
吞吐率
服务端耗时(ms)
客户端耗时(ms)
请求返回行数
-
NebulaGraph 的开源地址:https://github.com/vesoft-inc/nebula 觉得使用体验还不错的话,给我们的 GitHub 点个 ❤️ 鼓励下开源路上的我们呢~
-
交流图数据库技术?加入 NebulaGraph 交流群请先填写下你的 NebulaGraph 名片,NebulaGraph 小助手会拉你进群~
PV/UV/IP、QPS/TPS、Throughput
一、PV/UV/IP
1.1 名词解释
PV (Page View) 页面浏览量 用户每一次对网站中的每个页面访问均被记录 1 次。
用户对同一页面的多次刷新,访问量累计。
UV (Unique Visitor) 独立访客 通过访问电脑的 cookies 实现。
IP 通过访问电脑的 ip 实现。
1.2 UV、IP 的区别
1. 比如你是 ADSL 拨号上网,拨一次号自动分配一个 IP,进入了网站,就算一个 IP;断线了而没清理 Cookies,又拨号一次自动分配一个 IP,又进入了同一个网站,又统计到一个 IP,这时统计数据里 IP 就显示统计了 2 次。UV 没有变,是 1 次。
2. 同一个局域网内 2 个人,在 2 台电脑上访问同一个网站,他们的公网 IP 是相同的。IP 就是 1,但 UV 是 2。
二、QPS/TPS
QPS:Queries Per Second 意思是 “每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。
TPS:TransactionsPerSecond 的缩写,也就是事务数 / 秒。它是软件测试结果的测量单位。
一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数,最终利用这些信息来估计得分。客户机使用加权协函数平均方法来计算客户机的得分,测试软件就是利用客户机的这些信息使用加权协函数平均方法来计算服务器端的整体 TPS 得分。
三、Throughput
一个系统的吞度量(承压能力)与 request 对 CPU 的消耗、外部接口、IO 等等紧密关联。单个 reqeust 对 CPU 消耗越高,外部系统接口、IO 影响速度越慢。系统吞吐能力越低。
系统吞吐量几个重要參数:QPS(TPS)、并发数、响应时间
QPS(TPS):每秒钟 request / 事务 数量
并发数: 系统同一时候处理的 request / 事务数
响应时间: 一般取平均响应时间
(非常多人常常会把并发数和 TPS 理解混淆)
理解了上面三个要素的意义之后,就能推算出它们之间的关系:
QPS(TPS)= 并发数 / 平均响应时间 或者 并发数 = QPS * 平均响应时间
一个典型的上班签到系统,早上 8 点上班。7 点半到 8 点这 30 分钟的时间里用户会登录签到系统进行签到。公司员工为 1000 人,平均每一个员上登录签到系统的时长为 5 分钟。能够用以下的方法计算。
QPS = 1000/(30*60) 事务 / 秒
平均响应时间为 = 5*60 秒
并发数 = QPS * 平均响应时间 = 1000/(30*60) *(5*60)=166.7
一个系统吞吐量通常由 QPS(TPS)、并发数两个因素决定,每套系统这两个值都有一个相对极限值。在应用场景訪问压力下,仅仅要某一项达到系统最高值。系统的吞吐量就上不去了,假设压力继续增大。系统的吞吐量反而会下降。原因是系统超负荷工作,上下文切换、内存等等其他消耗导致系统性能下降。
决定系统响应时间要素
我们做项目要排计划,能够多人同一时候并发做多项任务,也能够一个人或者多个人串行工作,始终会有一条关键路径,这条路径就是项目的工期。
系统一次调用的响应时间跟项目计划一样,也有一条关键路径,这个关键路径是就是系统响应时间。
关键路径是有 CPU 运算、IO、外部系统响应等等组成。
我们今天的关于一个2core4GB的 mysql server 的 QPS 和 TPS 能在多少?和mysql的qps一般多少的分享已经告一段落,感谢您的关注,如果您想了解更多关于MySQL-TPS,QPS 到底是什么、mysql状态查看 QPS/TPS/缓存命中率查看、NebulaGraph v3.3.0 性能报告,Match count QPS 有 2~8 倍提升,3 跳查询 QPS 时延低至原 1/3、PV/UV/IP、QPS/TPS、Throughput的相关信息,请在本站查询。
本文标签: