qi-web 跑到 122k RPS 之路
qi-web 是用奇语写的 Web 框架,风格像 Express / Fiber。一开始纯 qi 实现,吞吐一般;通过把热路径 Rust 化,最终实测 ~122k RPS——比 Express 快约 5.5 倍,比 Node.js 快约 25%。
瓶颈在哪
- GC 全局锁:
Mutex<RuntimeEnvironment>是真正的 hot path 杀手,换成RwLock+ 原子计数后明显改善。 - 请求解析:把字符串切分密集的解析下沉到 Rust。
- 路由匹配:用 Rust 侧的 trie 镜像,qi 层只做注册。
最小服务器长这样
包 主程序;
导入 Web::{应用, 上下文, 响应, 创建应用, 配置, 获取, 文本, 运行应用};
函数 处理(上下文值: 上下文) : 响应 {
返回 文本("ok");
}
函数 入口() {
变量 应用值: 应用 = 创建应用();
应用值 = 配置(应用值, "127.0.0.1", 6790);
应用值 = 获取(应用值, "/", 处理);
运行应用(应用值);
}性能不是吹的——基准用 wrk -t4 -c100 -d10s 实测。