Files
SQS-service/doc/api/benchmark-comparison-2026-04-12.md
T

6.9 KiB
Raw Blame History

Сравнительный benchmark shared-sqs vs Yandex MQ

Дата: 2026-04-12 05:45 UTC

Область сравнения

Этот отчёт фиксирует результаты сравнительных тестов по основным пользовательским сценариям shared-sqs и Yandex MQ.

Методика

  • Запуск выполнялся с удалённой ВМ 5.172.178.213 в каталоге ~/terra/SQS-service.
  • Для сравнения использовался один и тот же AWS CLI клиент.
  • Базовый прогон: tests/benchmark_compare_32k.sh.
  • Уточняющий прогон для SendMessage 10KB и SendMessage 32KB: tests/payload_latency_probe.sh.
  • Для большинства операций использовано 7 итераций.
  • Для throughput использовалось 5 воркеров по 10 сообщений 1KB.
  • Для PurgeQueue зафиксирован одиночный контрольный замер, потому что повторный вызов упирается в стандартный cooldown 60s.

Покрытие API

Сравнение включало операции, которые есть у обоих сервисов:

  • GetQueueUrl
  • ListQueues
  • GetQueueAttributes
  • SetQueueAttributes
  • SendMessage
  • SendMessageBatch
  • ReceiveMessage
  • DeleteMessage
  • DeleteMessageBatch
  • ChangeMessageVisibility
  • ChangeMessageVisibilityBatch
  • PurgeQueue

Операции, которые есть в shared-sqs, но не участвуют в прямом сравнении с Yandex MQ:

  • TagQueue
  • UntagQueue
  • ListQueueTags

Итоги по latency

Формат значений: min / avg / max / p95, миллисекунды.

Операция Yandex MQ shared-sqs Вывод
GetQueueUrl 766 / 1346 / 2266 / 2060 739 / 752 / 770 / 760 shared-sqs заметно стабильнее
ListQueues 765 / 786 / 817 / 811 740 / 756 / 775 / 762 shared-sqs быстрее
GetQueueAttributes 804 / 820 / 847 / 828 738 / 752 / 768 / 765 shared-sqs быстрее
SetQueueAttributes 805 / 816 / 835 / 835 750 / 765 / 803 / 774 shared-sqs быстрее
SendMessage 1KB 804 / 811 / 824 / 823 748 / 760 / 770 / 767 shared-sqs быстрее
SendMessage 10KB 916 / 967 / 996 / 987 880 / 913 / 965 / 951 shared-sqs быстрее
SendMessage 32KB 905 / 930 / 948 / 947 883 / 904 / 939 / 928 shared-sqs быстрее
SendMessageBatch 10 784 / 803 / 827 / 820 718 / 746 / 782 / 759 shared-sqs быстрее
ReceiveMessage 782 / 826 / 869 / 864 738 / 748 / 777 / 751 shared-sqs быстрее
DeleteMessage 783 / 800 / 823 / 814 727 / 742 / 757 / 755 shared-sqs быстрее
DeleteMessageBatch 10 818 / 845 / 872 / 864 742 / 783 / 821 / 810 shared-sqs быстрее
ChangeMessageVisibility 810 / 842 / 894 / 854 778 / 805 / 814 / 814 shared-sqs быстрее
ChangeMessageVisibilityBatch 10 806 / 829 / 848 / 841 803 / 824 / 838 / 836 почти паритет, но shared-sqs чуть быстрее
PurgeQueue 867 801 shared-sqs быстрее, но это одиночный контрольный замер

Throughput

Тест: SendMessage 1KB, 5 воркеров по 10 сообщений.

Провайдер Успешно Общее время Пропускная способность
Yandex MQ 50 / 50 9116 ms ~5 msg/s
shared-sqs 50 / 50 8580 ms ~5 msg/s

Вывод по throughput:

  • В этом сценарии наблюдается паритет по грубому msg/s.
  • shared-sqs завершает тот же объём немного быстрее по wall-clock time.
  • Ограничение здесь задаётся в первую очередь AWS CLI, а не серверной частью обоих сервисов.

Основные выводы

  1. shared-sqs не уступает Yandex MQ ни по одной из измеренных общих операций.
  2. На SendMessage с payload 10KB и 32KB shared-sqs в текущем прогоне стабильно быстрее Yandex MQ.
  3. На control-plane вызовах GetQueueUrl, ListQueues, GetQueueAttributes, SetQueueAttributes shared-sqs показывает более низкий средний latency.
  4. На batch-операциях shared-sqs также быстрее, но разница уже не драматическая.
  5. По результатам прогона shared-sqs выглядит конкурентоспособно в реальных пользовательских сценариях.

Важное примечание по качеству измерений

  • В первом длинном прогоне tests/benchmark_compare_32k.sh для SendMessage 10KB и SendMessage 32KB у shared-sqs были получены артефактные нули.
  • Повторная точечная проверка показала, что это был дефект benchmark harness, а не отказ сервиса.
  • Для этих двух строк в таблице используются результаты повторного узкого прогона из tests/payload_latency_probe.sh.

Что сознательно не включено

  • Кросс-кластерные transport-level расследования, уже вынесенные в отдельные технические документы.
  • Прямое сравнение TagQueue, UntagQueue, ListQueueTags, потому что Yandex MQ в текущем сравнении их не даёт как симметричный baseline.

Финальный практический вывод

shared-sqs выглядит конкурентоспособно относительно managed Yandex MQ: сервис стабильно проходит базовые и batch-операции, не проигрывает по latency и в большинстве измеренных точек оказывается быстрее. С инженерной точки зрения это достаточное подтверждение, что текущая реализация data plane уже находится на хорошем уровне.