Apache APISIX против NGINX

February 2, 2024

Technology

Согласно статистике W3Techs по состоянию на июнь 2022 года, NGINX является наиболее широко используемым веб-сервером в мире, занимая значительную долю рынка в 33,6%. Его широкое распространение и достойная производительность завоевали высокий уровень доверия среди пользователей, что делает его частым эталоном для сравнения.

Результаты тестирования производительности

В практическом тестировании мы сравнили производительность APISIX и NGINX в простом сценарии, и получили следующие результаты:

  • APISIX демонстрирует производительность QPS в 58 080 на одном ядре CPU, превосходя производительность NGINX, которая составляет 37 154 на том же оборудовании.

  • Производительность APISIX превышает NGINX на впечатляющие 56%.

Конфигурация теста и результаты нагрузочного тестирования

APISIXNGINX
QPS на одном ядре5808037151
Нагрузочное тестированиеAPISIX_VS_NGINX_1_SSAPISIX_VS_NGINX_2_SS
Основные конфигурацииroutes:
  -
    uri: /hello
    upstream:
      nodes:
        "127.0.0.1:1980": 1
#END
http {
    access_log off;

    server {
        listen 1990;

        location / {
            proxy_pass http://127.0.0.1:1980;
        }
    }
}
ОборудованиеCPU 1 ядро, 4 ГБ ОЗУCPU 1 ядро, 4 ГБ ОЗУ
Использование CPU100%100%

Тестовая среда:

  • Хост: M1 Macbook Pro

  • Операционная система: Debian

APISIX_VS_NGINX_1

Если вам интересно, стоит попробовать повторить тест самостоятельно, результаты которого относительно легко воспроизвести.

Технические аспекты

Согласно официально опубликованной архитектурной схеме APISIX, разумно ожидать, что производительность APISIX должна быть ниже, чем у NGINX. Однако "необычные случаи часто указывают на скрытые проблемы". Давайте рассмотрим некоторые аномальные сценарии, которые могут возникнуть во время нагрузочного тестирования NGINX.

APISIX_VS_NGINX_2

Перейдем к сути: результаты производительности APISIX соответствуют ожиданиям, и то же самое касается NGINX. Однако важно понимать, что тестовый сценарий для APISIX сосредоточен на производительности QPS при длительных соединениях, в то время как для NGINX это короткие соединения. Поэтому разница в производительности QPS является обоснованной.

Длительные соединения обычно используются в сценариях, требующих непрерывной коммуникации, таких как чат в реальном времени или непрерывная передача данных. Короткие соединения, с другой стороны, подходят для временных коммуникационных нужд, таких как обычный доступ к веб-страницам в режиме запрос-ответ HTTP.

APISIX_VS_NGINX_3

Ниже приведен пример разумной конфигурации для NGINX. С этой конфигурацией вы обнаружите значительное улучшение производительности NGINX на одном ядре, обычно как минимум в два раза.

APISIX_VS_NGINX_4

Почему NGINX по умолчанию использует короткие соединения?

Родившийся в 2004 году, NGINX является ветераном среди открытых проектов, приближаясь к своему двадцатилетию. Чтобы обеспечить непрерывную итерацию пользователей и стабильный опыт, эволюция функций NGINX склоняется в сторону прямой совместимости. Это делает его одним из немногих веб-прокси-сервисов, которые по умолчанию используют протокол HTTP 1.0. Эта настройка по умолчанию сохраняется уже более десяти лет, и предполагается, что NGINX вряд ли изменит ее в будущем.

В эпоху микросервисов, облачных решений и взрыва информации в области ИИ инженеры ищут программное обеспечение, которое надежно и не вызывает проблем, позволяя им сразу приступить к работе. Они также ценят конфигурации по умолчанию, которые соответствуют лучшим практикам производства. Следовательно, современное открытое программное обеспечение стремится избавиться от исторического багажа и сосредоточиться на эффективном решении проблем, имея как преимущества, так и недостатки.

Tags: