协程框架高并发翻车了?三个C++ Web框架实测,结果出乎意料
协程框架高并发翻车了?三个C++ Web框架实测,结果出乎意料 上一版测完总觉得哪里不对,于是改了配置又跑了一遍——这次结果老实多了。 前言:为什么重新测了一遍 这篇文章其实是第二版了。上一篇发出来之后我越想越不对劲——当时每个容器只给了 512MB 内存,fd 上限也没显式调高,跑 10K 并发的时候实际上根本没撑到一万个连接。wrk 报了一堆 connect 8983 错误,真正建立的有效连接也就一千出头,所谓的"高并发 10K"测试本质上测的还是千级并发。那组数据里 Hical 高并发"遥遥领先"的结论,现在看有水分。 这次我把配置拉满了:每容器 1024MB 内存、nofile 上调到 65536,VM 内核参数也做了对应调优(somaxconn、tcp_max_syn_backlog、端口范围等),确保 wrk 发起的一万个连接能真正建立起来。同时精简了文章的对比范围——压测还是 6 个框架一起跑的(数据完整保留在文章末尾),但本文只聚焦 Hical、Drogon、Cinatra 三个第一梯队选手做深入分析。这三个在上一版常规场景里已经拉开了和其余框架的差距,继续带着 91 QPS 的 cpp-httplib 同框只会让图表失真。 结果确实和上次不一样,尤其是高并发部分的排名翻了个个儿。先把结论放在前面:常规负载下三个框架打得很近,但各自有各自的强项——Hical 在 JSON 和中间件场景领先,Cinatra 在纯吞吐和 JSON Echo 上更快,Drogon 在高并发场景下表现最好。 测试环境 宿主机硬件: 项目 配置 处理器 Intel Core i7-11700K @ 3.60GHz(8核16线程) 内存 32 GB 存储 SSD(900 GB) 宿主系统 Windows 10 Enterprise LTSC 2021 虚拟化环境: 项目 配置 虚拟化平台 Oracle VM VirtualBox 7.1(半虚拟化接口: KVM) Guest OS Ubuntu 24.04.3 LTS Server VM 分配 16 GB RAM / 8 CPU Docker Engine 29.4.3 + Compose v5.1.3 每框架容器 4 CPU + 1GB RAM,nofile=65536 压测工具 wrk 4.1.0(独立容器),4 线程 默认并发 100 连接 持续时间 30 秒 编译器 GCC 14.2(Ubuntu 24.04) 优化级别 Release(-O2) 采样方式 每场景连续跑 3 轮,取算术平均值 注:所有框架运行在同一台 VM 的 Docker 容器中,wrk 也在同一 Docker 网络内发起请求(容器间通信,无宿主机网络栈介入)。VirtualBox 虚拟化会引入一定开销,绝对 QPS 数值会低于裸机,但各框架的相对排名通常稳定。 ...