首先:基准测试通常是虚假的。一旦开始添加数据库调用,模板渲染,会话解析等,发送回几个字节将为您 带来 截然不同的结果(请注意数量级的差异)
然后解决本地问题-开发机器与生产之间的开放文件/套接字限制,基准测试工具(ab / wrk)与Go服务器之间的资源竞争,本地环回适配器或OS
TCP堆栈(以及TCP堆栈调整) ),等等。
此外:
ab
不被高度重视- 仅HTTP / 1.0,因此不执行keepalive
- 您的其他指标差异很大-例如,查看每个工具报告的平均延迟-绝对延迟要高得多
- 您的
ab
测试也可以运行,12s
而不是5s
wrk测试。 - 甚至8k req / s都是巨大的负载- 每小时2800 万个 请求。即使在进行数据库调用,整理JSON结构等之后降至3k / req / s,您仍然能够处理大量负载。尽早不要太拘泥于这些基准。
我不知道您使用的是哪种机器,但我的3.5GHz i7-4771的iMac可以在单线程上以每秒64k req / s的速度响应,并响应
w.Write([]byte("Hello Worldn"))简短答案:使用
wrk并牢记基准测试工具存在很大差异。



