Apache APISIX vs NGINX

February 2, 2024

Technology

W3Techsの2022年6月までの統計によると、NGINXは世界で最も広く使用されているウェブサーバーであり、33.6%という大きな市場シェアを占めています。その広範な採用と称賛に値するパフォーマンスにより、ユーザー間で高い信頼を築いており、比較のための頻繁なベンチマークとなっています。

パフォーマンステスト結果

実際のテストでは、APISIXNGINXのパフォーマンスを単純なシナリオで比較し、以下の結果を得ました:

  • APISIXは、単一のCPUコアで58,080のQPSパフォーマンスを示し、同じハードウェアでのNGINXの37,154を上回りました。

  • APISIXのパフォーマンスはNGINXを56%上回っています。

テスト構成とストレステスト結果

APISIXNGINX
単一コアQPS5808037151
ストレステスト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コア, 4GB RAMCPU 1コア, 4GB RAM
CPU使用率100%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の単一コアパフォーマンスが大幅に向上し、通常は少なくとも2倍になります。

APISIX_VS_NGINX_4

なぜNGINXはデフォルトで短寿命接続を使用するのか?

2004年に生まれたNGINXは、オープンソースプロジェクトの長老であり、20年近くの歴史を持っています。ユーザーの継続的な反復と一貫した体験を確保するために、NGINXの機能進化は前方互換性を重視する傾向があります。これにより、NGINXはHTTP 1.0プロトコルをデフォルトで使用する数少ないWebプロキシサービスの1つとなっています。このデフォルト設定は10年以上続いており、今後も変更される可能性は低いと推測されます。

マイクロサービス、クラウドネイティブソリューション、AI情報の爆発的な増加の時代において、エンジニアは信頼性が高く、手間のかからないソフトウェアを求めています。彼らは、生産環境でのベストプラクティスに沿ったデフォルト設定も高く評価しています。その結果、現代のオープンソースソフトウェアは歴史的な負担を捨て、効率的に問題を解決することに焦点を当てる傾向があり、それにはメリットとデメリットがあります。

Tags: