在 TLS 上 Go 比 Nginx 厉害这么多吗?

2022-09-01 15:49:50 +08:00
 dzdh

是我测试流程有问题吗?或者环境?

:2222的是 go 写的 https server 。代码很简单。都是标准库的。 根路径就返回个 index.html 内容是 404 not found

nginx 10 秒 1771 go 就 10 秒 6.9w

go 的 tlsconfig 如下

tlsCfg := &tls.Config{
    SessionTicketsDisabled: false,
    ClientSessionCache:     tls.NewLRUClientSessionCache(1000)
}

nginx ssl 配置部分如下

ssl_certificate   .pem;
ssl_certificate_key  .key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers on;

证书是 rsa2048

而且还有测试期间,nginx 部分就 cpu100% go 部分就 cpu50%上下。

服务器是阿里云的性能突发实例。

6655 次点击
所在节点    Go 编程语言
49 条回复
picone
2022-09-01 20:18:50 +08:00
wdlth
2022-09-02 00:21:29 +08:00
估计你的 nginx 用的 OpenSSL 没编译好。

Running 10s test @ https://localhost:443/
6 threads and 1000 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 139.92ms 104.60ms 999.46ms 93.38%
Req/Sec 1.15k 529.66 6.22k 81.98%
61417 requests in 10.10s, 51.31MB read
Requests/sec: 6079.15
Transfer/sec: 5.08MB

双核轻量云,nginx 1.20 boringssl
ngv2
2022-09-02 00:39:06 +08:00
散了吧,楼主的测试根本不准

配置:Oracle A1 ARM64 4C24G

curl https://test.example.com/ -s -D-

HTTP/2 200
server: nginx/1.23.1
date: Thu, 01 Sep 2022 16:37:53 GMT
content-type: text/plain; charset=utf-8
content-length: 13

测试命令:wrk -c1000 -d10 -t6 https://test.example.com/

Running 10s test @ https://test.example.com/
6 threads and 1000 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 11.86ms 42.40ms 1.76s 99.55%
Req/Sec 15.35k 4.33k 43.39k 74.52%
737772 requests in 10.07s, 157.57MB read
Requests/sec: 73232.29
Transfer/sec: 15.64MB
dingyaguang117
2022-09-02 00:47:15 +08:00
Qps 相差 40 倍,带宽却几乎差不多。顺着这个往下查就行了
ngv2
2022-09-02 01:11:03 +08:00
我树莓派 4B 都能跑 11 K/s

Running 10s test @ test.example.com
6 threads and 500 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 44.72ms 78.06ms 814.26ms 95.19%
Req/Sec 2.47k 1.32k 7.09k 66.45%
116597 requests in 10.10s, 24.90MB read
Requests/sec: 11544.61
Transfer/sec: 2.47MB
smallthing
2022-09-02 03:54:01 +08:00
我也是 wsl2 结果完全不一样。怕的你的 wsl 的 hostname 访问到 ipv6 或者别的什么去了。可能大部分时间都在这上面,用 ip 地址试试看呗?
JohnBull
2022-09-02 11:30:15 +08:00
造句:用一句话把三个不相干的东西连起来并让别人无言以对
Senorsen
2022-09-02 13:03:12 +08:00
这个 ip 为啥遮住了,用的不是 localhost 吗?如果不是的话,走了网络栈出去的话,显然没有控制好变量吧?
ngv2
2022-09-03 11:51:43 +08:00
Vultr - Optimized Cloud Compute - CPU Optimized
8 vCPUs 16 GB Memory

测试结果为 14 万 /秒


$ wrk -c1000 -d10 -t8 https://test.example.com/

Running 10s test @ https://test.example.com/
8 threads and 1000 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 9.27ms 10.67ms 108.29ms 85.90%
Req/Sec 18.49k 7.28k 47.43k 77.99%
1444385 requests in 10.09s, 242.37MB read
Requests/sec: 143170.65
Transfer/sec: 24.02MB

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/877014

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX