分享一下我是如何对以太坊兼容链进行性能测试的 这是第三步:运行jmeter开展测试
项目地址:https://github.com/sunchengzhu/eth-jmeter
相关文章:以太坊兼容链性能测试1—准备工作、以太坊兼容链性能测试2—性能数据统计
eth_getBalance
、eth_getBlockByNumber
、eth_call
、eth_sendRawTransaction
,其他接口有需要可以根据现有的代码改造。通过两个workflow开展压测,query.yml是非交易接口eth_getBalance
、eth_getBlockByNumber
、eth_call
的压测,而tx.yml则是原生转账和调用uniswap swapExactTokensForETH
的交易接口eth_sendRawTransaction
两个场景的压测。tx.yml会多一步触发eth_performace的ethStats.yml,统计交易性能数据。
query.yml的接口是实时返回的,可以直接在客户端这边统计性能数据,我设置了5s秒打印一次summary,summary数据格式如下:
[INFO] summary + 4099 in 00:00:06 = 683.9/s Avg: 176 Min: 160 Max: 498 Err: 0 (0.00%) Active: 120 Started: 120 Finished: 0
query.yml如果有error能直接在控制台打印出来,并体现在summary的Err数中:
<img src="https://typora-1304641378.cos.ap-shanghai.myqcloud.com/images/image-20230816215300025.png" alt="image-20230816215300025" style="zoom:80%;" />
交易从同一助记词生成的一批账户发起(账户充值见前面的文章),账户数量通过下方的size配置,从第一个账户到最后一个账户按序签名并发送交易,在jmeter设置的执行时间内不断循环这个过程。
<img src="https://typora-1304641378.cos.ap-shanghai.myqcloud.com/images/image-20231107172145909.png" alt="image-20231107172145909" style="zoom:80%;" />
助记词的具体值mnemonicValue在Run workflow时由用户自己传入,以保护其不被泄漏。gasPriceValue等则配置在tx.yml中,不同环境设置其相应的值。
fork到自己的仓库(需要fork项目到自己的仓库以使用Actions)
设置GitHub个人访问令牌,跟性能数据统计中的步骤一样,这里不再赘述。
选择fantom_testnet环境,输入助记词strike gather blush lens excite ridge flock random empty remember text universe
(这个助记词的账户有钱)和你自己的Gist ID触发workflow
可以在eth-performance的ethStats中看到交易性能数据
以上用了默认的jmeter线程配置,可以再建一个test分支,通过mvn jmeter:gui
加载并修改jmx文件不断调整线程数,达到链的性能瓶颈。
<img src="https://typora-1304641378.cos.ap-shanghai.myqcloud.com/images/image-20230816221940890.png" alt="image-20230816221940890" style="zoom:80%;" />
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!