Apache APISIX vs NGINX

更新时间 2/2/2024

据 W3Techs 统计,截至 2022 年 6 月,NGINX 是全球使用最广泛的 Web 服务器,占据了全球网站 33.6% 的份额。它在全球范围内被广泛采用,许多用户对 NGINX 的性能表现深表信赖,常将其用作性能对比的基准。

实测结果

在实际测试中,我们对 APISIX 和 NGINX 在一个简单场景下的性能进行了比较,结果如下:

  • APISIX 单 CPU 核心的 QPS(每秒查询次数)达到了 58,080;相比之下,NGINX 单 CPU 核心 QPS 仅为 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 CORE,内存 4GCPU 1 CORE,内存 4G
CPU 使用率100%100%

测试环境:

  • 主机 M1 Macbook Pro

  • 操作系统 Debian

APISIX_VS_NGINX_1

感兴趣的朋友不妨亲自动手实践下,该测试结果是比较容易复现的。

技术思考

APISIX 和 NGINX 性能对比

APISIX 的性能不应该超过 NGINX。从 APISIX 官方公布的软件架构图可以得知,合理的预期是 APISIX 的性能应该低于 NGINX。然而,“事出反常必有妖”,让我们一起探讨在进行 NGINX 压力测试时可能会遇到的一些异常情况。

APISIX_VS_NGINX_2

结论是:APISIX 的性能结果符合预期,NGINX 的性能结果也符合预期。然而,需要注意的是,APISIX 的测试场景是在长连接下进行的,而 NGINX 的测试场景则是在短连接下进行的,因此在 QPS 表现上的差异是合理的。长连接通常用于需要持续通信的场景,例如实时聊天或持续数据传输。短连接则适用于临时性通信需求,例如HTTP请求响应模式中的普通网页访问。

APISIX_VS_NGINX_3

以下是 NGINX 的合理配置示例。使用此配置,您将发现 NGINX 在单核性能上有显著的改善,通常至少会提升一倍。

APISIX_VS_NGINX_4

为什么 NGINX 默认使用短连接

NGINX,作为一款于 2004 年诞生的开源项目,如今已经走过了将近 20 年的历程,堪称开源软件领域的一位老前辈。为了确保用户能够持续获得一致的体验并实现不断迭代,NGINX 一直致力于向前兼容的功能迭代。因此,它是少数几个默认采用 HTTP 1.0 协议的 Web 代理服务之一。这一决策已经延续了十多年,预计未来 NGINX 可能会永远保持这一默认设置。

在微服务、云原生和人工智能信息蓬勃发展的时代,工程师更加期望选择一款可靠、省心的软件,能够立即投入使用。他们更希望默认配置就是生产环境中的最佳实践。因此,如今的开源软件更倾向于抛弃历史包袱,专注于高效解决问题。

微信咨询

获取方案