<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
    <title>bigfish的网络博客 - HTTP</title>
    <subtitle>记录技术和生活</subtitle>
    <link rel="self" type="application/atom+xml" href="https://blog.laofu.online/tags/http/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://blog.laofu.online"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-10-11T23:18:00+08:00</updated>
    <id>https://blog.laofu.online/tags/http/atom.xml</id>
    <entry xml:lang="zh">
        <title>Go 和 Rust 性能谁更快？一次 HTTP 实测告诉你差距在哪里</title>
        <published>2026-10-11T23:18:00+08:00</published>
        <updated>2026-10-11T23:18:00+08:00</updated>
        
        <author>
          <name>bigfish</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.laofu.online/blog/go-rust-http-performance-benchmark/"/>
        <id>https://blog.laofu.online/blog/go-rust-http-performance-benchmark/</id>
        
        <summary type="html">&lt;p&gt;Go 和 Rust 做同一个 HTTP 服务，谁能处理更多请求？这次实测的答案不是一句“Rust 更快”就能概括：在 5,000 个连接下，Rust 的固定文本吞吐高 78.2%，JSON 序列化高 85.8%；但把主要工作换成固定 CPU 计算后，两端只差约 1%。连接数继续增加，Go 的默认配置还会先遇到 OOM，而设置内存软上限后，问题又变成延迟超标。&lt;/p&gt;
&lt;p&gt;这篇文章整理一次 Go 与 Rust HTTP 服务的公平复测，重点看四件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在相同资源和负载下，吞吐与 P99 尾延迟差多少；&lt;/li&gt;
&lt;li&gt;JSON 工作是否会放大两套实现的差异；&lt;/li&gt;
&lt;li&gt;更多连接是在提高并发，还是只是在制造排队；&lt;/li&gt;
&lt;li&gt;Go 的内存策略改变后，原本的 OOM 结论还是否成立。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;先把结论说窄：在本次 1 个逻辑 CPU、512 MiB 内存的测试环境中，Rust 版本在轻量 HTTP 和 JSON 场景中明显领先；固定 CPU 计算场景则几乎打平。Go 在高连接数下的默认配置会 OOM，但设置 &lt;code&gt;GOMEMLIMIT=384MiB&lt;/code&gt; 后，15,000 连接可以稳定完成测试，20,000 连接仍然超过延迟目标。&lt;/p&gt;
&lt;p&gt;这些结论只适用于本次实现、依赖、负载和运行环境，不能直接变成“Rust 在所有服务中都比 Go 快”的语言排名。&lt;/p&gt;</summary>
        
    </entry>
</feed>
