Сжатие предела: тестирование нагрузки на конкурентность на шлюзах SMS-протокола SMPP
📑 Содержание
- Архитектура пула привязок
- Кодирование и предел пропускной способности
- Закат 2G и планирование пропускной способности
- Вопросы и ответы инженера по производительности
Тестовая конфигурация использовала 64 активные SIM-карты, 5 параллельных сессий bind_transmitter и полезную нагрузку сообщения из 120 символов GSM-7. Результат составил 1 200 сообщений в секунду на устойчивой основе, при использовании процессора шлюза ниже 40 процентов. Узким местом был ограничитель скорости SMSC оператора, а не стек SMPP 16-256. Тест длился 30 минут. Глубина очереди шлюза оставалась ниже 100 сообщений на протяжении всего времени. Ограничитель скорости оператора начал возвращать ESME_RTHROTTLED на отметке 1250 сообщений в секунду. Внутренняя очередь шлюза поглощала ограниченные сообщения и повторяла их с джиттером. Конечная скорость доставки составила 99,2 процента. 0,8 процента неудач были полностью связаны с отказами со стороны оператора, а не с потерями со стороны шлюза.
Архитектура пула привязок
Правильная архитектура - это пул привязок. Откройте N сессий bind_transmitter, распределите submit_sm PDU между ними, используя стратегию обхода или наименее загруженной очереди, и используйте отдельный bind_transceiver для квитанций. Внутренняя очередь 16-256 буферизует сообщения на каждую привязку, предотвращая задержку ответа от оператора на одной привязке, которая могла бы остановить другие. Практическим ограничением является не процессор шлюза. Это порог ESME_RTHROTTLED оператора. Согласно IDT Express, одно SMPP соединение обычно поддерживает 50–300 сообщений в секунду. Пять параллельных привязок на верхнем уровне этого диапазона обеспечивают теоретическую пропускную способность в 1500 сообщений в секунду. Тест достиг 1200, что составляет 80 процентов от теоретической мощности. Спецификация протокола SMPP определяет submit_sm PDU и submit_sm_resp PDU, которые управляют отправкой сообщений. Документация кодов ответа Vibes Connect SMPP определяет статус ESME_RTHROTTLED (0x00000058, десятичный 88) как ошибку, которую можно повторить, указывающую, что привязка превысила допустимую скорость.
Кодирование и предел пропускной способности
Кодирование напрямую влияет на эффективную пропускную способность. Согласно калькулятору сегментов SMS Dart packages, GSM-7 поддерживает 160 символов в одном сегменте, но UCS-2 — активируемый одним не-GSM-7 символом, таким как эмодзи — снижает лимит до 70 символов. Сообщение из 152 символов GSM-7 плюс один символ Unicode становится тремя подлежащими оплате сегментами. При 1000 сообщений в секунду это 3000 сегментов в секунду, достигающих оператора. Потолок пропускной способности смещается от стека SMPP шлюза к системе биллинга и фильтрации оператора. Спецификация 3GPP TS 23.040 определяет SMS-SUBMIT PDU и поле схемы кодирования данных, которое управляет кодированием. Значение поля схемы кодирования данных определяет, использует ли сообщение кодирование GSM-7 или UCS-2.
Закат 2G и планирование пропускной способности
Планирование пропускной способности должно учитывать закат 2G. Согласно LINK Mobility, 139 операторов в 70 странах завершили или запланировали отключение 2G. Шлюз, который полагается на откат 2G для избыточного трафика, планирует будущее, которого не существует. Пул SIM-карт 4G 16-256 обеспечивает избыточность пропускной способности через разнообразие операторов, а не устаревший откат. Отчет GSMA о мобильной экономике 2025 года прогнозирует, что глобальные пользователи мобильного интернета достигнут 5,5 миллиардов к 2030 году, а мобильная экономика внесет вклад в 11 триллионов долларов в мировой ВВП к 2030 году.
💡 Вопросы и ответы инженера по производительности
Q1: Каково жесткое ограничение пропускной способности для одной привязки передатчика? От пятидесяти до 300 сообщений в секунду, в зависимости от согласованной ставки оператора. Чтобы преодолеть этот предел, откройте несколько привязок.
Q2: Является ли работа SMPP на UDP быстрее? Нет. SMPP требует TCP для надежной доставки. UDP вводит потерю пакетов, что сводит на нет цель квитанций о доставке.
Q3: Затрудняет ли пропускная способность сети 4G скорость отправки? Восходящий канал 4G одной SIM-карты конечен. 16-256 распределяет нагрузку по 256 физическим каналам, так что ни один канал не становится узким местом.
Q4: Во время стресс-теста, как узнать, является ли узким местом шлюз или мой сервер? Проверьте глубину очереди шлюза по сравнению с процессором сервера. Если очередь шлюза пуста, а процессор сервера загружен на максимум, то ограничение находится на уровне приложения.
Q5: Почему TPS снизился вдвое после изменения шаблона? Проверьте наличие не-GSM-7 символов. Один символ Unicode вынуждает использовать кодировку UCS-2, удваивая длину сообщения и количество сегментов, что вдвое снижает эффективную пропускную способность.
Источники:






