Sui.

帖子

分享您的知识。

290697tz.
Jul 28, 2025
专家问答

对 Sui 的交易吞吐量进行基准测试的最佳方法是什么?

我正在研究 Sui 的性能声明,并想在 Testnet 上对交易吞吐量进行基准测试. 我应该使用什么工具和方法? *

  • Sui
  • Move
1
14
分享
评论
.

答案

14
Owen.
Owen4662
Jul 30 2025, 03:14

要对 Sui 的交易吞吐量进行基准测试,请使用 Sui SDK 提交大量具有不同对象依赖关系的交易. 专注于独立的自有对象操作,以最大限度地实现并行执行. 使用可编程交易区块 (PTB) 对多个操作进行批处理,并在固定时间内测量每秒交易量 (TPS). 通过端到端延迟监控结果sui_getTransactionBlocks并分析端到端延迟. 确保您的工作负载避免共享对象争用,这会限制并行性. 为了准确起见,请在专用的测试网 RPC 端点上运行测试,并在多次运行中汇总数据.

7
评论
.
Ashford.
Jul 31 2025, 07:59

要对Sui的交易吞吐量进行有效的基准测试并验证其绩效声明**,您可以使用多种工具、技术和方法. 在Sui Testnet上进行测试可以帮助您衡量网络处理各种类型交易的情况,并确保系统在负载下按预期运行. 以下是对 Sui 的交易吞吐量进行基准测试的结构化方法:

1. 定义要衡量的关键指标

在开始之前,定义要衡量的具体指标. 交易吞吐量的常见基准包括:

*每秒交易量 (TPS):这是衡量网络吞吐量的主要指标. *延迟(交易确认时间):网络处理和确认交易所需的时间. *汽油消耗量:衡量每笔交易的汽油成本及其随不同交易类型的变化.

2. 使用 Sui 的内置基准测试工具

Sui 提供了几种对性能进行基准测试和衡量的方法:

a)Sui 客户端 CLI

Sui CLI(sui client) 可用于与测试网进行交互,也可用于模拟交易. 通过使用该simulate-transaction命令,您可以衡量预期的汽油成本和交易延迟.

示例:

sui client simulate-transaction --gas-budget 10000 --transaction <transaction_file>

这将为您估算汽油量,并帮助您衡量在测试网上模拟交易所花费的时间.

b)Sui 基准测试脚本(自定义脚本)

你可以使用 Sui 的SDK(使用 TypeScript、Python 或其他支持的语言)来编写基准测试脚本. 这些脚本可以模拟交易并将其以指定速率发送到测试网,从而允许您测量吞吐量.

示例:

const { SuiClient, TransactionBlock } = require('@mysten/sui.js');

const client = new SuiClient({ rpcUrl: "https://testnet.sui.io/rpc" });

async function benchmarkTransactions(numTransactions: number) {
  const startTime = Date.now();
  
  for (let i = 0; i < numTransactions; i++) {
    const txn = new TransactionBlock();
    // Add the move call or transaction logic
    await client.submitTransaction(txn);
  }
  
  const endTime = Date.now();
  console.log(`Processed ${numTransactions} transactions in ${endTime - startTime}ms`);
}

benchmarkTransactions(1000);  // Benchmark 1000 transactions

该脚本将帮助您跟踪在给定时间范围内可以处理多少笔交易,并计算TPS.

3. 使用压力测试工具

要进行更广泛的测试和模拟高负载,您可以使用压力测试工具将大量交易推送到测试网:

a)火炮JMeter

  • 这些是负载测试工具,可以将其配置为向 Sui 的测试网发送大量交易(或请求).
  • 例如,使用Artillery,您可以创建模仿真实用户行为的场景,并将大量的API请求发送到您的Sui RPC端点以测量响应时间吞吐量.

火炮为例:

config:
  target: 'https://testnet.sui.io/rpc'
  phases:
    - duration: 60
      arrivalRate: 100  # 100 requests per second
scenarios:
  - flow:
      - post:
          url: "/submit_transaction"
          json:
            transaction: "your_transaction_data_here"

此设置将每秒模拟 100 个向Sui 测试网发出的请求,持续 60 秒,并测量TPS延迟.

b)蝗虫

Locust 是另一款高度可配置的负载测试工具. 您可以通过定义模拟用户的行为、指定请求速率和测量吞吐量来创建负载测试场景.

Locust为例:

from locust import HttpUser, task, between

class SuiTestUser(HttpUser):
    wait_time = between(1, 2)

    @task
    def send_transaction(self):
        self.client.post("/submit_transaction", json={"transaction": "your_transaction_data_here"})

这可以模拟大量并发用户,并帮助您衡量负载下的性能.

4. 监控节点性能和资源使用情况

*CPU、内存、磁盘:测量在繁重的事务负载期间节点上使用了多少 CPU、内存和磁盘. *网络延迟:监控网络延迟,尤其是验证器节点RPC 端点之间的延迟,因为高延迟会影响吞吐量. *Sui 的内置指标:使用prometheus或类似监控工具监控Sui的内置指标,例如成功交易数量失败交易燃气使用量.

5. 使用多个费用等级进行基准测试

Sui 支持多个免费套餐. 对不同费用等级的交易进行基准测试以了解费用结构如何影响吞吐量非常重要.

  • 测试低、中、高费用级别的交易,看看汽油费是否影响交易处理速度.
  • 尝试不同的燃气预算,以优化性能,同时保持天然气成本合理.

6. 检查延迟和区块时间

另一个要衡量的指标是交易的延迟区块时间. 高吞吐量不一定意味着低延迟,因此请监视:

*完成时间:交易需要多长时间才能得到完全确认并添加到账本中? *区块时间一致性:区块生产是否一致,还是在高负载下会出现延迟?

7. 使用 Sui Explorer 进行监控

*Sui Explorer和其他区块链浏览器可以帮助您查看每个区块的交易量的吞吐量,并深入了解交易确认时间.

8. 分析结果和基准比较

进行测试后:

*分析吞吐量 (TPS):比较 Sui 在不同负载下的表现. 寻找吞吐量显著下降的模式或瓶颈. *衡量延迟:查看处理和确认交易需要多长时间. *网络/节点影响:确保网络拥塞或节点性能问题不会影响性能.

方法摘要:

  1. 使用 Sui CLI来模拟交易并收集天然气估算值.
  2. 压力测试使用ArtilleryjMeterLocust等工具来测量 TPS 和延迟. 3.在测试期间监控节点上的资源使用情况(CPU、内存、磁盘、网络).
  3. 跨多个收费等级进行测试,了解气体结构如何影响吞吐量.
  4. 使用 Sui Explorer和其他监控工具收集有关吞吐量和性能的实时数据.
  5. 对不同的燃气预算进行基准测试,以优化速度和成本.

通过结合这些工具和方法,您可以清楚地了解TestnetSui的交易吞吐量,并评估其在各种负载和配置下的性能.

7
评论
.
Arnold.
Arnold3036
Jul 30 2025, 08:14

使用Sui 基准测试工具(sui-benchmark) 或自定义脚本对 TPS 进行压力测试.

####1. 快速测试 (CLI)

# Install sui-benchmark  
cargo install --git https://github.com/MystenLabs/sui sui-benchmark  

# Run load test (adjust --tx-count)  
sui-benchmark --testbed testnet --workload transfer-object --tx-count 1000

####2. 自定义 TS 脚本

import { SuiClient } from '@mysten/sui.js/client';
const client = new SuiClient({ url: 'https://fullnode.testnet.sui.io' });

// Send parallel TXs
const txs = Array(100).fill(0).map(() => client.transferObject(...));
await Promise.all(txs); // Measure time vs success rate

###关键指标 -TPS:每秒交易量(计入已提交的交易次数).
-延迟:是时候结束了.
-错误率:TX 失败.

6
评论
.
Paul.
Paul4340
Jul 31 2025, 09:45

要在测试网上对Sui的交易吞吐量进行基准测试并评估其性能声明,您需要仔细设计测试方法,并使用正确的工具来模拟真实的交易负载. 以下是衡量Sui性能的详细方法和推荐工具:

1. 定义基准目标

*交易吞吐量:衡量 Sui 在各种条件下每秒可以处理多少笔交易 (TPS). *延迟:衡量处理和确认交易所需的时间. *可扩展性:测试 Sui 的性能如何随着节点、验证器和交易量的增加而扩展.

2. 使用工具

以下是一些用于对交易吞吐量进行基准测试的工具和方法:

####Sui 客户端和 RPC

*Sui CLI:使用官方的Sui CLI来提交交易、查询区块状态和衡量交易性能.

  • sui client可以帮助测量执行交易所花费的时间,这可以帮助您评估不同负载条件下的交易吞吐量.

####负载测试工具

*Locust(或其他负载测试工具,例如ArtilleryGatling):这些工具非常适合模拟高负载和生成测试网流量. Locust 允许您定义自定义交易场景并模拟多个用户同时发送交易.

  • 您可以编写一个Locust脚本,该脚本连接到 Sui Testnet RPC 端点并发送交易(例如,创建或传输对象),同时测量处理这些交易所花费的时间.

基准测试的 Locust 脚本示例:

 from locust import HttpUser, task, between

 class SuiBenchmark(HttpUser):
     wait_time = between(1, 3)  # Simulate user wait time between actions

     @task
     def send_transaction(self):
         response = self.client.post("/sui/transaction", json={
             # Your transaction payload here
         })
         assert response.status_code == 200

####自定义交易加载

  • 创建自定义脚本,通过 RPC API 批量发送Sui 交易. 这可以是一个基本的PythonNode.js脚本,用于与Sui测试网进行交互并测量:

  • 发送一批交易所花费的时间.

  • 平均延迟和吞吐量随负载变化而变化.

使用Pythonrequests库的示例:

import time
import requests

def send_transaction():
    url = "https://rpc.sui.io"
    headers = {'Content-Type': 'application/json'}
    data = {
        "method": "sui_executeTransaction",
        "params": [transaction_data],  # Your transaction data here
    }
    response = requests.post(url, json=data, headers=headers)
    return response.status_code

def benchmark_transactions(n):
    start_time = time.time()
    for _ in range(n):
        send_transaction()
    end_time = time.time()
    print(f"Processed {n} transactions in {end_time - start_time} seconds")

benchmark_transactions(1000)  # Benchmark 1000 transactions

####特定于 Sui 的基准测试工具

*Sui Explorer:您还可以使用Sui Explorer在基准测试期间手动监控交易、检查区块高度和跟踪交易速度. *Sui 指标:Sui 可能会公开一些指标端点,以监控验证器性能和系统运行状况. 您可以使用它们从网络的角度来衡量实际的系统吞吐量(例如,一段时间内的平均 TPS).

####外部基准测试服务

  • 如果您需要对比其他区块链进行基准测试,甚至需要将Sui与其他网络进行比较,则Chainlink的VRF(用于随机性)或Lighthouse等服务可以提供跨链基准.
  • 如果Sui和其他区块链项目发布性能数据,您可以使用defillama对它们进行比较分析.

3. 基准测试方法学

####单笔交易吞吐量

  • 测试单笔交易在整个网络中进行确认所需的时间. 测量延迟并将其与不同的交易类型(例如,对象创建与对象传输)进行比较.

####批处理吞吐量(多笔交易)

  • 要对网络进行压力测试,请快速连续发送一批交易**,然后跟踪吞吐量 (TPS). 这将使您了解 Sui 如何处理大批量操作.

####并发和负载测试

  • 通过模拟多个用户或机器人与网络互动,测试 Sui 在不同的负载下的表现如何. 逐渐增加负荷并测量:

*TPS随着负载的增加. *负载下单笔交易的延迟.

####模拟现实世界中的交易

  • 使用真实交易进行基准测试,例如创建 NFT、转移硬币和执行智能合约逻辑. 这反映了网络在不同条件下的真实性能.

####压力测试

*测试极端条件(例如,在短时间内发送数千笔交易),以查看Sui如何扩展并识别任何瓶颈.

4. 要衡量的关键指标

*每秒交易数 (TPS):系统每秒成功处理的交易数. *延迟:交易提交后确认交易所需的时间. 测量平均延迟和峰值延迟. *汽油使用量:跟踪每笔交易使用了多少汽油,以了解执行不同交易类型的成本. *区块时间:衡量生成区块以及将交易纳入区块所花费的时间.

5. 分析和解释结果

运行测试后:

*绘制 TPS 与负载的关系:这有助于可视化 Sui 在不断增加的交易负载下的表现. *延迟:在系统承受压力时注意延迟峰值. 延迟的突然增加可能表明处理出现瓶颈. *扩展行为:评估随着向网络添加更多资源(节点/验证器),吞吐量是否有所提高.

6. 其他注意事项

*网络延迟:确保您在地理位置靠近 Sui 测试网的服务器上进行测试,以避免外部网络延迟. *验证器:考虑有多少活跃的验证者参与您的测试,以评估网络随着节点的增加而扩展的程度.

7. 需要避免的常见陷阱

*重载 RPC:注意测试网 RPC 上的速率限制. 避免过快地发送过多请求,因为这可能会人为地影响您的结果. *测试网不稳定性:请记住,测试网并不总是像主网一样稳定,因此任何测试结果都可能受到临时网络状况的影响.

结论

要有效地对Sui的交易吞吐量进行基准测试,您需要使用交易批处理负载测试工具Sui RPC API来模拟实际负载. 测量TPS延迟气体使用量等关键指标,并确保在并发负载压力条件下进行测试. 结果将使您深入了解 Sui 的可扩展性、延迟及其在不同场景中的表现,从而使您能够评估其真实能力.

6
评论
.
Evgeniy CRYPTOCOIN.
Jul 29 2025, 13:57

要对 Sui 的 TPS(每秒交易量)进行基准测试:

  1. 使用 Sui 的基准测试工具sui-benchmark进行受控负载测试.
  2. 部署自定义工作负载— 模拟真实交易(转账、智能合约).
    3.使用指标监控— 通过 Prometheus/Grafana 跟踪 TPS、延迟和成功率.
  3. 测试网与本地网络— 比较公共测试网与私有本地网络的基准.
  4. 检查验证器负载— 高 TPS 取决于验证器性能.

sui-tps**提示:**查看 Sui 的文档,了解最新的工具,例如.

5
评论
.
Alya.
Alya-14
Jul 31 2025, 06:19

在 T sui-benchmarkestnet 上使用带有自定义工作负载的 Sui 工具进行准确的 TPS 测量. 专注于可并行化交易,调整提交率以找到饱和点.

5
评论
.
Bekky.
Bekky1762
Jul 29 2025, 13:18

###对 Sui 交易吞吐量进行基准测试的最佳方式(测试网/主网)

####1. 基准测试工具 -Sui CLI + 脚本(基本)

 # Generate 1000 simple transfer TXs
 for i in {1..1000}; do
   sui client transfer-sui --to 0xRECEIVER --amount 1 --gas-budget 5000000 &
 done

-TypeScript 负载测试器(高级)

 import { SuiClient, TransactionBlock } from '@mysten/sui.js';

 const client = new SuiClient({ url: 'https://fullnode.testnet.sui.io' });
 const SENDER = '0xYOUR_WALLET';
 const RECEIVER = '0xTARGET';

 async function sendBatch(txCount: number) {
   const startTime = Date.now();
   const promises = Array(txCount).fill(0).map(() => {
     const tx = new TransactionBlock();
     tx.transferObjects([tx.gas], RECEIVER);
     return client.signAndExecuteTransactionBlock({ 
       transactionBlock: tx, 
       signer: SENDER_KEY 
     });
   });
   await Promise.all(promises);
   const tps = txCount / ((Date.now() - startTime) / 1000);
   console.log(`TPS: ${tps}`);
 }

-Sui 基准测试套件 (SBK)(官方)

 git clone https://github.com/MystenLabs/sui-benchmark
 cd sui-benchmark
 cargo run -- --test-tps --tx-count 10000 --num-workers 16

####2. 需要跟踪的关键指标 | 指标 | 如何测量 | 目标(测试网)| | ----------------------| ------------------| |TPS| (Successful TXs) / (Total Time)| 1K—5K(取决于汽油)| |延迟| Finality Time (P50/P99)| < 1s(无共享对象)| |燃气效率| | 每台 TX 约 50K—500 Gas Used / TXK |

4
评论
.
BigSneh.
Jul 28 2025, 03:39
  1. 使用 Sui 基准测试工具,该工具包含在 Sui GitHub 存储库中. 它允许您使用多个工作线程每秒模拟数千笔交易.

  2. 克隆仓库并运行 cargo run--release--bin sui-benchmark--help 来探索 TPS 速率、目标对象和线程数等基准测试选项.

3.启动你自己的 Sui 本地集群(sui-test-validator)进行控制测试,或者在 Testnet 上进行基准测试,注意公共网络的负载是可变的.

  1. 选择要测试的交易类型:transfer_object、coin_split 或自定义 Move 模块函数. 每种都有不同的气体分布和物体处理的复杂性.

  2. 生成大量对象(或共享对象)并预先为测试账户注资,以消除硬币可用性瓶颈.

  3. 使用--num-workers、--num-threads 和--target-tps 标志来扩展测试规模,同时跟踪延迟和吞吐量统计数据.

  4. 通过 Prometheus 和 Grafana 启用指标收集,以观察延迟、成功率和一段时间内的耗气量.

  5. 在不同的网络和节点条件下运行测试以了解上限——由于验证器延迟,localnet 显示的 TPS 将高于 Testnet.

  6. 为了进行比较,对简单和复杂的交易(例如,基本传输与共享对象变异调用)进行基准测试,以了解交易类型如何影响吞吐量.

  7. 记录气体消耗、错误率和确认的 TPS(与提交的 TPS 相比),以生成全面的性能概况.

2
评论
.
SuiLover.
Jul 28 2025, 03:49

要对 Sui 在 Testnet 上的交易吞吐量进行基准测试,首先要设置本地验证器或在受控的交易环境下使用官方测试网. 使用 Sui GitHub 存储库中的套件基准测试工具,该工具专为使用可配置参数模拟大量交易而设计. 您还可以使用 TypeScript 或 Rust 开发工具包编写交易脚本,以并行发送批量交易并衡量端到端性能. 如果您正在运行自己的节点,则使用 Prometheus 和 Grafana 仪表板监控 TPS(每秒交易量)、延迟和成功率等指标. 要实现更精细的控制,可以模拟 NFT 铸币厂、资产转移或 Dapp 专属调用等真实工作负载.

确保通过在基准测试期间禁用不必要的日志记录、同步和后台进程来隔离变量. 在基准 CLI 中使用--num-workers 和--num-transactions 标志来测试各种负载场景. 您还应将共享对象的吞吐量与自有对象事务的吞吐量进行比较,因为共享对象的执行可能更加复杂. 捕获日志和错误率以检测瓶颈,尤其是与燃气使用量和共识延迟有关的瓶颈. 在不同的网络条件下重复测试以评估稳定性和一致性.

2
评论
.
Thorfin.
Jul 30 2025, 07:22

要对 Sui 在测试网上的吞吐量进行基准测试:

工具: Sui Benchmarker:Sui GitHub 存储库中的官方工具(sui-benchmark).

自定义脚本:使用 sui-sdk 或 CLI 发送批处理 txs.

第三方负载测试器:Chainhammer 等工具(如果适用于 Sui).

方法: 使用多个账户并发送并行交易.

跟踪 TPS(tx/秒)和延迟.

不同的交易类型(例如硬币转账与 Move 呼叫).

在不同的时间运行测试以避免 RPC 限制.

使用本地全节点或专用 RPC 获得准确、无争议的结果.

2
评论
.
theking.
Aug 23 2025, 09:45

You should begin by setting up a Testnet environment using sui start --testnet or switch your CLI to Testnet to ensure you’re testing in the correct network context. Once ready, use a stress-testing methodology by generating and sending many independent transactions in parallel, especially those that involve owned object operations—this leverages Sui’s parallel execution model and avoids shared-object contention bottlenecks. You can employ the Sui CLI with sui client batch to submit a file of preconstructed transactions at high concurrency, or write a custom script using the JavaScript SDK to fire many signAndExecuteTransactionBlock calls concurrently. Always monitor throughput metrics like transactions per second (TPS), latency, and conflict rates using CLI feedback or logs—you can script repeated dry-runs to establish baseline costs before actual deployment. To get realistic performance, ensure your workload avoids shared-object hotspots, and measure under high-load scenarios where parallelism shines. After each test, analyze metrics, check for ConflictTransaction errors, and reflect on bottlenecks—then adjust your object and call patterns and test again. Building this in iterations gives you a step-by-step understanding of throughput ceilings under realistic conditions. Read more here: https://docs.sui.io/build/parallel-execution

1
评论
.

你知道答案吗?

请登录并分享。