Пост
Поделитесь своими знаниями.
Как лучше всего оценить пропускную способность транзакций Sui?
*Я изучаю заявления Суи о производительности и хочу сравнить пропускную способность транзакций в Testnet. Какие инструменты и методологии мне следует использовать? * *
- Sui
- Move
Ответы
14Чтобы оценить пропускную способность транзакций Sui, используйте Sui SDK для отправки большого количества транзакций с различными зависимостями объектов. Сосредоточьтесь на независимых операциях с собственными объектами, чтобы максимизировать параллельное выполнение. Используйте программируемые блоки транзакций (PTB) для пакетирования нескольких операций и измерения количества транзакций в секунду (TPS) в течение фиксированного периода времени. Отслеживайте результаты с помощью sui_getTransactionBlocks
сквозного анализа задержек и анализируйте их. Убедитесь, что ваша рабочая нагрузка позволяет избежать конкуренции за общие объекты, которая ограничивает параллелизм. Для обеспечения точности проводите тесты на выделенной конечной точке RPC в тестовой сети и агрегируйте данные за несколько запусков.
Чтобы эффективно оценить пропускную способность транзакций компании Sui и подтвердить ее заявления**, вы можете использовать несколько инструментов, методов и методологий. Тестирование наSui Testnetпоможет оценить, насколько хорошо сеть обрабатывает различные типы транзакций, и убедиться, что система работает должным образом при нагрузке. Вот структурированный подход к тестированию**пропускной способности транзакций Sui:
1.Определите ключевые метрики для измерения
Прежде чем начать, определите, какие конкретные показатели вы хотите измерить. Общие критериипропускной способности транзакцийвключают в себя:
*Количество транзакций в секунду (TPS): это основной показатель для измерения пропускной способности сети. *Задержка (время подтверждения транзакции): время, необходимое для обработки и подтверждения транзакции сетью. *Потребление газа: измерьте стоимость газа за транзакцию и ее изменение в зависимости от типа транзакций.
2.Используйте встроенные инструменты тестирования Sui
Sui предоставляет несколько способов тестирования и измерения производительности:
a)Интерфейс командной строки Sui Client
Sui CLI(sui client
) можно использовать для взаимодействия с тестовой сетью, а также для моделирования транзакций. Используя эту simulate-transaction
команду, вы можете оценить ожидаемую стоимость газа и задержку транзакций.
Пример:
sui client simulate-transaction --gas-budget 10000 --transaction <transaction_file>
Это даст вам оценку газа и поможет измерить время, необходимое для моделирования транзакций в тестовой сети.
b)Скрипты тестирования Sui(пользовательские скрипты)
Вы можете написатьсценарии бенчмаркинга, используяSDKот Sui (на 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 Testnetв течение 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.Мониторинг производительности узлов и использования ресурсов
*Процессор, память, диск: измерьте, сколько ресурсов процессора, памяти и диска используется узлами во время больших нагрузок на транзакции. Сетевая задержка: отслеживайте задержку в сети, особенно между узламивалидатораи конечными точкамиRPC, поскольку высокая задержка может повлиять на пропускную способность. Встроенные метрики Sui: отслеживайте встроенные метрики Sui, такие какколичество успешных транзакций,неудачных транзакцийирасход газа, используяprometheusили аналогичные инструменты мониторинга.
5.Бенчмарк с несколькими уровнями оплаты
Sui поддерживаетнесколько уровней платности. Важно сравнивать транзакции на разных уровнях комиссий, чтобы понять, как структура комиссий влияет на пропускную способность.
- Протестируйтетранзакции с низкими, средними и высокими комиссиями, чтобы узнать, влияет ли плата за газ на скорость обработки транзакций.
- Поэкспериментируйте с различными**бюджетами на газ, чтобы оптимизировать производительность и при этом сохранить разумные затраты на газ.
6.Проверьте задержку и время блокировки
Еще один показатель, который необходимо измерить, —задержкаивремя блокировкитранзакций. Высокая пропускная способность не обязательно означает низкую задержку, поэтому следите за:
*Время до завершения: сколько времени нужно, чтобы транзакция была полностью подтверждена и добавлена в бухгалтерскую книгу? *Стабильность сроков обработки: Стабильно ли производство блоков или при высокой нагрузке возникают задержки?
7.Используйте Sui Explorer для мониторинга
Sui Explorerи другиеобозреватели блокчейновпомогут вам оценить пропускную способность с точки зрениятранзакций на блоки получить представление о времени подтверждения транзакций*.
8.Анализ результатов и сравнение эталонов
После проведения тестов:
*Проанализируйте пропускную способность (TPS): сравните производительность Sui при разных нагрузках. Ищите закономерности или узкие места, при которых пропускная способность значительно падает. *Измерьте задержки: узнайте, сколько времени требуется для обработки и подтверждения транзакций. *Влияние на сеть и узлы: убедитесь, что производительность не снижается из-за перегрузки сети или проблем с производительностью узлов.
Краткое описание методологии:
1.Используйте Sui CLIдля моделирования транзакций и сбора оценок газа. 2.Стрессовый тестс использованием таких инструментов, какАртиллерия,JMeterилиLocust, для измерения скорости в секунду и времени ожидания. 3.Отслеживайте использование ресурсовна узлах во время тестирования (процессор, память, диск, сеть). 4.Протестируйте на нескольких уровнях оплаты, чтобы понять, как газовые структуры влияют на пропускную способность. 5.Используйте Sui Explorerи другие инструменты мониторинга для сбора данных о пропускной способности и производительности в реальном времени. 6.Сравнивайте различные бюджеты на газовдля оптимизации скорости и стоимости.
Комбинируя эти инструменты и методологии, вы сможете получить четкое представление о пропускной способностиSui по транзакциямвTestnetи оценить его производительность при различных нагрузках и конфигурациях.
ИспользуйтеSui Benchmark Tools(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). -**Задержка: время до завершения. -Частота ошибок: неисправные TX.
Чтобы протестировать пропускную способность транзакций**Sui в тестовой сети и оценить ее показатели производительности, вам необходимо тщательно разработать подход к тестированию и использовать правильные инструменты для моделирования реалистичной нагрузки на транзакции. Ниже приведены подробная методология и рекомендуемые инструменты для сравнительного анализа производительности Sui:
1.Определите цели бенчмаркинга
*Пропускная способность транзакций: измерьте, сколько транзакций в секунду (TPS) Sui может обрабатывать в различных условиях. *Задержка: измерьте время, необходимое для о��работки и подтверждения транзакции. *Масштабируемость: проверьте, как производительность Sui масштабируется по мере увеличения количества узлов, валидаторов и объема транзакций.
2.Используемые инструменты
Вот несколько инструментов и методологий для сравнительного анализа пропускной способности транзакций:
####Sui Client и RPC
*Sui CLI: используйте официальный интерфейсSui CLIдля отправки транзакций, запросов к состояниям блоков и оценки эффективности транзакций.
sui client
может помочь измерить время, затрачиваемое на выполнение транзакции, и оценить пропускную способность транзакций при различных условиях нагрузки.
####Инструменты нагрузочного тестирования
*Locust(или другие инструменты нагрузочного тестирования, такие какArtillery,Gatling): эти инструменты отлично подходят для моделирования высоких нагрузок и привлечения трафика в вашу тестовую сеть. 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
####Загрузка настраиваемых транзакций
-
Создайте собственный скрипт для массовой отправки транзакцийSuiчерез RPC API. Это может быть базовый скриптPythonилиNode.js, который взаимодействует с тестовой сетью Sui и измеряет:
-
Время, затраченное на отправку пакета транзакций.
-
Средняя задержка и пропускная способность в зависимости от нагрузки.
Пример использованияPythonи библиотекиrequests:
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 Metrics: Sui может использовать некоторые конечные точкиметрикдля мониторинга производительности валидатора и состояния системы. Их можно использовать для измерения фактической пропускной способности системы с точки зрения сети (например, среднего значения TPS за определенный период).
####Услуги внешнего бенчмаркинга
- Если вам нужно провести сравнение с другими блокчейнами или даже сравнить Sui с другими сетями, такие сервисы, как VRFот Chainlink (для случайности) илиLighthouse**, могут предоставить межсетевые тесты.
- Вы можете использоватьDefillamaдля сравнительного анализа Sui и других блокчейн-проектов, если они публикуют данные о производительности.
3.Методология бенчмаркинга
####Пропускная способность одной транзакции
- Проверьтевремя, необходимое для прохождения одной транзакциипо всей сети и получения подтверждения. Измерьте задержку и сравните ее между различными типами транзакций (например, создание объекта или передача объекта).
####Пропускная способность пакета (несколько транзакций)
- Чтобы провести стресс-тестирование сети, отправьтепакет транзакцийподряд и отслеживайте пропускную способность (TPS). Это даст вам представление о том, как Sui обрабатывает операции с большими объемами.
####Параллельное тестирование и нагрузочное тестирование
- Проверьте, насколько хорошо Sui работает при различныхнагрузках, смоделировав взаимодействие нескольких пользователей или ботов с сетью. Постепенно увеличивайте нагрузку и измеряйте:
*СОВЕТЫпо мере увеличения нагрузки. *Задержкадля отдельных транзакций под нагрузкой.
####Моделирование транзакций в реальном мире
- Сравнивайте результаты с реалистичными транзакциями**, такими как создание NFT, перевод монет и выполнение логики смарт-контрактов. Это отражает реальную производительность сети в различных условиях.
####Стресс-тест
- Протестируйте работу в экстремальных условиях (например, отправка тысяч транзакций за короткое время), чтобы увидеть, как Sui масштабируется и выявить узкие места.
4.Ключевые метрики для измерения
*Количество транзакций в секунду (TPS): количество успешных транзакций, обрабатываемых системой в секунду. *Задержка: время, необходимое для подтверждения транзакции после отправки. Измерьте среднюю и пиковую задержку. *Использование газа: отслеживайте, сколько газа используется за транзакцию, чтобы понять, сколько стоит выполнение транзакций разных типов. *Время блоков: измерьте время, необходимое для создания блоков и включения транзакций в блок.
5.Анализ и интерпретация результатов
После запуска тестов:
*Сопоставление количества оборотов в секунду в зависимости от нагрузки: это помогает визуализировать эффективность Sui в условиях растущей нагрузки на транзакции. *Задержки: обратите внимание на скачки задержек при нагрузке на систему. Внезапное увеличение задержки может указывать на проблемы с обработкой. *Поведение при масштабировании: оцените, повышается ли пропускная способность по мере добавления в сеть большего количества ресурсов (узлов/валидаторов).
6.Другие соображения
*Задержка сети: убедитесь, что вы проводите тестирование с сервера, географически близкого к Sui Testnet, чтобы избежать задержек во внешней сети. *Валидаторы: посчитайте, сколько активныхвалидаторовучаствует в тестировании, чтобы оценить, насколько хорошо сеть масштабируется по мере увеличения количества узлов.
7.Распространенные ловушки, которых следует избегать
*Перегрузка RPC: помните об ограничении скорости**на Testnet RPC. Не отправляйте слишком много запросов слишком быстро, так как это может искусственно повлиять на ваши результаты. *Нестабильность тестовой сети: имейте в виду, что тестовые сети не всегда так же стабильны, как основные сети, поэтому на результаты тестирования могут повлиять временные сетевые проблемы.
Заключение
Чтобы эффективно оценить пропускную способность транзакцийSui, вам необходимо смоделировать реалистичные нагрузки, используяпакетирование транзакций,инструменты нагрузочного тестированияи APISui RPC. Измеряйте ключевые показатели, такие какTPS,задержкаирасход газа, и убедитесь, что тестирование проводилось при одновременных нагрузкахистрессовых условиях**. Результаты позволят вам получить представление о масштабируемости, задержках и эффективности системы Sui в различных сценариях, а также оценить ее реальные возможности.
Чтобы сравнить TPS (количество транзакций в секунду) от Sui:
sui-benchmark
Используйте инструменты сравнительного анализа Sui— для тестов с контролируемой нагрузкой. 2.Развертывайте собственные рабочие нагрузки— моделируйте транзакции в реальном мире (переводы, смарт-контракты). 3.Монитор с метриками— отслеживайте TPS, задержку и процент успеха с помощью Prometheus/Grafana. 4.Testnet и Local— сравните общедоступную тестовую сеть с частной локальной сетью для получения базового значения. 5.Проверьте загрузку валидатора— высокий TPS зависит от производительности валидатора.
sui-tps
Совет: Ознакомьтесь с документацией Sui, где вы найдете новейшие инструменты, такие как.
Используйте sui-benchmark
инструмент Sui с настраиваемыми рабочими нагрузками в Testnet для точного измерения TPS. Сосредоточьтесь на параллельных транзакциях и скорректируйте скорость отправки, чтобы найти точку насыщения.
###Лучший способ сравнить пропускную способность транзакций Sui (тестовая и основная сеть)
####1. Инструменты для бенчмаркинга -Используйте интерфейс командной строки и скрипты(базовый уровень)
# 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)
|Задержка| | < 1 с (без общих объектов) |
Gas Used / TX
|Эффективность газа| | ~50—500 тыс. на таксометр |
-
Используйте инструмент sui-benchmark, который входит в репозиторий Sui GitHub. Он позволяет моделировать тысячи транзакций в секунду с использованием нескольких рабочих.
-
Клонируйте репозиторий и запустите cargo run --release --bin sui-benchmark -- --помогите изучить такие варианты бенчмаркинга, как скорость TPS, целевые объекты и количество потоков.
-
Создайте собственный локальный кластер Sui (sui-test-validator) для контролируемых тестов или проведите тест в Testnet, учитывая, что нагрузка на публичные сети переменная.
-
Выберите тип транзакции для тестирования: transfer_object, coin_split или собственные функции модуля Move. Каждая из них отличается газовым профилем и сложностью обработки объектов.
-
Создайте большую партию объектов (или общих объектов) и заранее профинансируйте тестовые счета, чтобы устранить проблемы с доступностью монет.
-
Используйте флаги --num-workers, --num-threads и --target-tps для масштабирования теста и отслеживания статистики задержек и пропускной способности.
-
Включите сбор метрик с помощью Prometheus и Grafana, чтобы отслеживать задержки, процент успеха и расход газа с течением времени.
-
Проводите тесты в разных условиях сети и узлов, чтобы определить предел. Из-за задержки валидатора скорость передачи данных в локальной сети выше, чем у Testnet.
-
Для сравнения сравните простые и сложные транзакции (например, базовые переводы и вызовы, изменяющие общие объекты), чтобы увидеть, как тип транзакции влияет на пропускную способность.
-
Документируйте потребление газа, частоту ошибок и подтвержденную TPS (по сравнению с представленными TPS), чтобы составить исчерпывающий профиль производительности.
Чтобы оценить пропускную способность транзакций Sui в Testnet, начните с настройки локального валидатора или используйте официальную сеть Testnet с контролируемой средой транзакций. Используйте инструмент sui-benchmark из репозитория Sui GitHub, который предназначен для моделирования больших объемов транзакций с настраиваемыми параметрами. Вы также можете создавать скрипты транзакций с помощью TypeScript или Rust SDK для параллельной отправки пакетов транзакций и всестороннего измерения производительности. Отслеживайте такие показатели, как TPS (количество транзакций в секунду), задержку и процент успеха, используя панели управления Prometheus и Grafana, если вы используете свой собственный узел. Для более детального управления смоделируйте реалистичные рабочие нагрузки, такие как монетные дворы NFT, переводы активов или вызовы, специфичные для DApp.
Обязательно изолируйте переменные, отключив ненужные процессы протоколирования, синхронизации и фоновых процессов во время сравнительного анализа. Используйте флаги --num-workers и --num-transactions в интерфейсе командной строки теста для тестирования различных сценариев нагрузки. Также следует сравнить пропускную способность общих объектов с транзакциями с собственными объектами, поскольку выполнение общих объектов может быть более сложным. Собирайте журналы и регистрируйте частоту ошибок для выявления узких мест, особенно связанных с потреблением газа и задержками достижения консенсуса. Повторите тест в разных условиях сети, чтобы оценить стабильность и согласованность.
Чтобы сравнить пропускную способность Sui в Testnet, выполните следующие действия:
Инструменты: Sui Benchmarker: официальный инструмент в репозитории Sui GitHub (sui-benchmarker).
Настраиваемые скрипты: используйте sui-sdk или CLI для отправки пакетных текстовых сообщений.
Сторонние нагрузочные тестеры: такие инструменты, как Chainhammer (если они адаптированы к Sui).
Метод: Используйте несколько учетных записей и отправляйте параллельные транзакции.
Отслеживайте TPS (такс/сек) и задержку.
Различные типы налогов (например, переводы монет или звонки Move).
Выполняйте тесты в разное время, чтобы избежать ограничения скорости RPC.
Используйте локальные полные узлы или выделенные RPC для получения точных и неоспоримых результатов.
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
Знаете ответ?
Пожалуйста, войдите в систему и поделитесь им.
Sui is a Layer 1 protocol blockchain designed as the first internet-scale programmable blockchain platform.
Заработай свою долю из 1000 Sui
Зарабатывай очки репутации и получай награды за помощь в развитии сообщества Sui.
- Как максимизировать прибыль, держа SUI: стейкинг и ликвидный стейкинг615
- Почему BCS требует точного порядка полей для десериализации, когда структуры Move содержат именованные поля?65
- «Ошибки проверки нескольких источников» в публикациях модуля Sui Move — автоматическое устранение ошибок55
- Ошибка Sui Move — невозможно обработать транзакцию Не найдено действительных газовых монет для транзакции419
- Сбой транзакции Sui: объекты, зарезервированные для другой транзакции410