1
wellsc 2021-11-30 10:42:38 +08:00
ng 的数据有这么弱吗?你的数据哪来的
|
2
murmur 2021-11-30 10:42:56 +08:00
那你应该能搜出 nginx 百万连接的文章啊,而且 2019 年就开始吹了
他的连接是 48w ,但是并发是 1.8w/s 建立数,测试数据是心跳包,这个应该比 web 页面还轻一点吧 |
3
maskerTUI 2021-11-30 10:43:03 +08:00
用脚思考都知道答案
|
4
ipwx 2021-11-30 10:43:39 +08:00
通用机和定制机,当然在某些极端场景下表现有差别。
|
5
supuwoerc 2021-11-30 10:50:10 +08:00 69
公众号啊,那没事了。
按照公众号上吹的,我能二十天精通了 xx ,一个月成为了 xx 架构师,三年步入年薪百万。 现实:回复“资料”下载资料,百度云下载速度:8k/s ,打开资料来源 csdn+某某培训班。 |
6
yanbo92 2021-11-30 10:57:58 +08:00 via iPhone
根据我的认知,这还是 nginx 的时代
|
7
dolphintwo 2021-11-30 11:02:46 +08:00
都是百万连接啊,谁也别笑谁,( Nginx 真好用
|
8
Jooooooooo 2021-11-30 11:08:27 +08:00 4
没做过真正的业务喜欢吹这种数字
|
9
xiao109 2021-11-30 11:10:11 +08:00
你连上数据库啥也不干只查看一下数据库版本你也可以
|
10
libook 2021-11-30 11:11:33 +08:00 6
https://www.nginx.com/blog/nginx-websockets-performance/
2014 年的文章。 “Even with 50,000 active WebSocket connections, NGINX required less than 1 Gb memory and less than 1 core of CPU capacity” 所以单机负载 3w-5w 的信息不知道是什么来源。 Nginx 这种用 C 写的优化怪物,Go 是无论如何都跟不上的,当然不排除有些非通用场景需要依靠定制化来优化性能,但应该也比不上开发 Nginx module 或者直接魔改 Nginx ,如果追求极致的话。 |
11
plko345 2021-11-30 11:28:08 +08:00 via Android 2
lvs > nginx >= haproxy > go 写的
|
12
abcbuzhiming OP |
13
FakNoCNName 2021-11-30 11:41:37 +08:00
@abcbuzhiming 反向代理需要和真正的后端建立一次连接,一个主机连接服务时能建立的 socket 是有限的( 0xFFFF ),所以他们 100W 的单机连接是怎么来的?
|
14
wslzy007 2021-11-30 11:42:56 +08:00
并发连接数这种为测试而测试的数据没太多实际意义,高并发下的 QPS 更有参考价值,另外同比资源占用也是个重要指标,否则一笑而过吧~
|
15
starcraft 2021-11-30 11:43:20 +08:00 via Android
这种 go 写出来的给 ngx 提鞋都不配。
|
16
ly841000 2021-11-30 11:48:57 +08:00
@abcbuzhiming 不稳定是因为系统,不是因为 Nginx ,想要更高连接需要对内核进行大量调节
|
17
nash 2021-11-30 11:52:40 +08:00
少看点公众号文章,多读点书
|
18
rrfeng 2021-11-30 11:59:24 +08:00 8
你信不信它这个网关前面可能还挂了一层 nginx ……
|
19
ila 2021-11-30 12:00:37 +08:00 via Android
公众号看标题就能排雷
|
20
dddd1919 2021-11-30 12:01:50 +08:00
吓死了,买个课程压压惊
|
21
Illusionary 2021-11-30 12:02:26 +08:00 3
是的,我是在抖音看的
|
22
ysc3839 2021-11-30 12:03:45 +08:00 via Android
我之前在服务器上搭建 WebDAV ,因为嫌 nginx 配置文件太复杂,就用了个 Golang 写的 WebDAV server ,nginx 反向代理它。
结果仅仅用 16 个线程下载,就会出现前面几个连接有速度,后面直接连不上了,ssh 上去看发现 WebDAV server 的进程跑满了 CPU ,此时停止下载还是一直跑满,完全连不上。 最后换成了 nginx ,32 线程轻轻松松。 |
24
ysc3839 2021-11-30 12:16:56 +08:00 via Android
@binux 当然有可能是那个 WebDAV server 自己实现有问题。
但是用户感觉上就是,随便找一个开源的 Golang 程序,性能大概率是不如 nginx 这种使用 C/C++,且开发了多年,使用广泛的程序好的。 |
25
shyangs 2021-11-30 12:37:53 +08:00
一個主機連接服務時能建立的 socket 是有限的,他們 100W 的單機連接是怎麼來的?
|
26
gesse 2021-11-30 12:45:05 +08:00
盲猜 caddy 改?
|
27
mgcnrx11 2021-11-30 12:47:35 +08:00 via iPhone
多网卡、虚拟网卡、弄大一些 fd 也可以冲到 100w
|
29
jasonkayzk 2021-11-30 12:59:59 +08:00
@supuwoerc #5 笑死我了,哈哈
|
30
bruce0hh 2021-11-30 13:21:16 +08:00 via Android
https://mp.weixin.qq.com/s/JLKbE-fsrjQNiMZH5mIX3g
贴个 OSC 开源社区公众号的链接,本文由石墨文档技术杜旻翔分享 |
31
0312birdzhang 2021-11-30 13:43:16 +08:00
看标题被吓到了,点进来放心了
|
32
bipy 2021-11-30 13:49:14 +08:00
针对性优化跟通用方案没什么可比的吧
|
33
iyaozhen 2021-11-30 13:56:52 +08:00
nginx 没那么若,字节整个网关都是 nginx 集群搭的。当然 go 有 go 的好处,很多细节可控(性能不是重点),可以二次编程 百度的网关 BFE 就是 Go 写的,你可以看看。https://github.com/baidu/bfe-book
|
34
MEX 2021-11-30 14:14:46 +08:00
文章没说是单机 100w 连接额....单机不带业务场景也测最多也就 50w 连接,而且还是不带业务逻辑的情况下。
不使用 NGINX 的原因并不是性能差异问题,NGINX 的性能是很优秀的,不使用的原因单纯从成本角度考虑,使用四层负载加上 GO 挂载 TLS 证书,比七层负载的成本更低。 |
35
40EaE5uJO3Xt1VVa 2021-11-30 14:32:05 +08:00
人有多大胆,Nginx 有多大产
|
36
ytmsdy 2021-11-30 14:40:03 +08:00
呵呵,就算用 IIS 跑,咱们普通人的并发量也到达不了 IIS 的瓶颈!
|
37
cache 2021-11-30 14:53:22 +08:00
@shyangs
想要单机百万连接多配几个 ip 就行了,只是这种评测没什么意义 [AnyIP: Bind a whole subnet to your Linux machine – Widodh]( https://blog.widodh.nl/2016/04/anyip-bind-a-whole-subnet-to-your-linux-machine/) |
38
xz410236056 2021-11-30 15:04:06 +08:00
@supuwoerc #5 百度云现在下载无会员也有几 M 了
|
39
salmon5 2021-11-30 15:15:55 +08:00
C1000K 不是古代的技术吗?
|
42
vanton 2021-11-30 16:07:10 +08:00
nginx 百万级没问题。
go 要想超过 nginx ,可能性不大,基本可以认为是胡扯。 |
43
lzs5240 2021-11-30 16:10:49 +08:00
OpenResty Tengine 不都是 nginx
|
44
leavic 2021-11-30 16:15:01 +08:00
哪天 C 语言培训或者教程书籍之类的火了,nginx 就性能碾压全世界了
|
45
kilala2020 2021-11-30 16:15:24 +08:00
吹 go 并发都已经这么卷了么?汇编>C>=C++>java>Go ,大概是这样?
|
46
Xusually 2021-11-30 16:22:33 +08:00 1
推 go 就算了,踩 nginx 是几个意思?
|
47
hmli 2021-11-30 17:40:26 +08:00 17
不是,你们**有些人**真就一点原文不看,看了个标题就开始闭着眼写命题作文呗?
我翻遍全文也没找到哪里有提到说 4c8g 单机 48w 连接, 下面作者的实测里倒是有一个 16c32g 单机 1~1.8W 连接的数据。 我也没看到作者哪里有提到说"nginx"不行,得换 golang 才厉害的论点,只看到在他的”网关 2.0“里因为业务需求把 nginx 网关换成了自研。 还是说你们都是评论 bot 吗? 看到“公众号” "Golang" "并发”, 就触发你们的关键词了? |
48
sujin190 2021-11-30 17:59:54 +08:00
看到“nginx 的单机负载也就是 3w-5w 连接”才是被惊了,你不是用的假 nginx 吧
|
49
newmlp 2021-11-30 18:43:25 +08:00
通用和定制的问题,你要上 dpdk 单机百万也不是不可以
|
50
miniliuke 2021-11-30 19:05:34 +08:00
nginx 不是号称 1000w 连接,100w 的 qps 吗......
|
51
adoal 2021-11-30 19:43:54 +08:00
benchmarking 这种事,笑笑就好
|
52
oncethink 2021-11-30 20:08:17 +08:00
兄弟们,以后还是要注意来源请求,看了原文再评论
|
53
wanguorui123 2021-11-30 20:13:17 +08:00
数据库磁盘 IO 才是瓶颈
|
54
lesismal 2021-11-30 20:50:41 +08:00 2
连接数不等于 qps ,如果百万连接数建立起来放那不用,也没什么压力呀,所以你看石墨的文章里,好像只是 5s 广播一次不算太大的消息吧,48w/5s ,不到 10w qps ,这个确实没什么压力,对于很多语言都没压力
基于以上,楼主缺少正常的压力数据指标来对比性能是没什么意义的 另外, “然后我在 v2 搜了一下,好家伙,有人宣称自己写出了单机 100w 连接数的网络库。一看也是 go 。” 这好像是在说我?但是宣称这个词感觉怪怪的 我这也备上了 websocket 百万连接的测试例子,有兴趣的同学完全可以自己跑下试试、而不是觉得这只是宣称,因为这应该是事实: https://github.com/lesismal/nbio-examples/tree/master/websocket_1m 老帖子在这: https://www.v2ex.com/t/763906 https://www.v2ex.com/t/794435 鸟窝老师还有篇帖子对比 RPC 框架的,我的另一个仓库也在里面 https://colobu.com/2021/08/01/benchmark-of-rpc-frameworks/ 百万连接也好、RPC 也好,有兴趣的同学,建议自己跑代码亲测对比,而不是只看别人仓库文档里的数据,因为一些朋友交流下来,自测结果跟一些公司出品项目自带文档里的排名数据对不上,这其中可能有环境差异的因素,也可能有一些其他因素,但请以自测为准。 |
55
Deeymmm 2021-11-30 21:54:16 +08:00
@FakNoCNName 0xffff 是端口上限吧,不是连接数上限
|
57
pengtdyd 2021-11-30 22:01:08 +08:00
go 啥时候能干过 c 了,这帮人吹牛皮不打草稿。我大 Rust 都没这么狂过。
|
58
akira 2021-11-30 22:13:50 +08:00
生产环境链接数没上过千的表示 毫无压力,你们继续。。
|
59
BBCCBB 2021-11-30 22:38:20 +08:00
nginx 单机没有这么弱吧?
很早 linkedin 基于 netty 就能做到单机 50w+ socket 连接了. |
60
eason1874 2021-11-30 22:40:01 +08:00 2
Nginx 是通用 Web Server ,有一系列 Filter 要跑,在用不上这些 Filter 的专用场景比不上专用软件再正常不过了
脱离业务需求去比较,没多大意义。再厉害的狙击枪在近战时也比不上一把菜刀 看了 #30 发的链接,那篇文章里没有说 Nginx 性能怎么样,只说了他们的 Nginx 只用到一个小功能,不值得用。“Nginx 仅使用 TLS 解密,请求透传,产生了大量的资源浪费” |
61
nl101531 2021-11-30 23:34:01 +08:00 via iPhone
梦回大跃进
|
62
kkbblzq 2021-12-01 01:01:07 +08:00
楼上的大部分回复,我知道为啥现在网上带节奏这么容易了。
|
63
zachgenius 2021-12-01 08:00:33 +08:00
现在应该还是 NGINX/apache 是主流。性能不够加机器啊,搞一些魔改最后运维和 debug 成本远高于加机器。大多数普通”互联网“公司可能到最后倒闭了都未必能跑满 nginx 的最大并发量
|
64
tairan2006 2021-12-01 08:30:02 +08:00
看了原文,决定先把楼主 block 了
|
65
yl20181003 2021-12-01 09:01:10 +08:00 via Android
已经屏蔽楼主,纯带节奏
|
66
suyuyu 2021-12-01 09:16:44 +08:00
营销号日常作妖
|
67
hourui 2021-12-01 09:38:25 +08:00
但凡看过 nginx 源码的人,不会有这种疑问的。
|
68
kerro1990 2021-12-01 09:47:23 +08:00
nginx 百万毫无压力,看下代码实现就知道了
|
69
runze 2021-12-01 09:48:33 +08:00
@ysc3839 很正常嘛
随便找一个开源的 C/C++/Whatever 程序,性能大概率是不如 nginx 这种使用 C/C++,且开发了多年,使用广泛的程序好的 |
71
icy37785 2021-12-01 12:01:30 +08:00 via iPhone
楼主在这里带节奏,底下一堆不是喷 go 的就是喷公众号的,
没看公众号原文就喷的我都能理解, 有些喷起来像连楼主这个帖子都没看的,我确实理解不了。 总不能是机器人吧。 |
72
millken 2021-12-01 15:45:44 +08:00
写得好的情况下,golang fasthttp server 的性能是可以超越 nginx 的,fasthttp 下可以实现 zero allocate 。
|
73
SteveWoo 2021-12-01 15:52:40 +08:00
推送服务用 c++、golang 分别写过接入层。8C/16G 单机压测 120w 长连接,生产稳定 100w 长连接(实际上只管连接 4C 也够了,但是业务加了些拆包的东东)。
并发长连接数量得益于 linux 内核多路复用升级跟普通开发没啥关系,懂其原理很容易实现 C1000K 。 对于网关产品还要考虑稳定性、热更、平滑升级、上面有同学提到 QPS:“并发连接数这种为测试而测试的数据没太多实际意义,高并发下的 QPS 更有参考价值” “单机负载也就是 3w-5w 连接” 这个说法是把 nginx 当做 1:1 的透传代理来用,因为后向转发本地要占用一个端口,单网卡,ip 范围最多就 65535 ,这里本机多配置些 IP 就可以了。 |
74
SteveWoo 2021-12-01 15:56:26 +08:00
结论:nginx 很牛,没有落后时代;那些人也没有吹水;楼主要提升认知。
|
75
saberlong 2021-12-01 18:42:38 +08:00 via Android
golang 之前确实有篇单机 100 万连接实践。本质上是讲 golang 在 100 万连接下怎么优化的。比较采用常规的一个链连接 2 个 go 程方案与通过 syscall
直接使用 epoll 方案之间的内存占用和延迟差别等。和 100 万并发不是同个概念。文章里实现单机 100 万连接的一些设置以及测试方式还是可以借鉴的。其它语言也能做到 |
76
abcbuzhiming OP @hmli
你自己看原文不仔细,原文和内容我贴出来 https://mp.weixin.qq.com/s/jl14D6XYJ5PeR3rmYAPdpQ 4.1 压测准备 选择一台配置为 4 核 8G 的虚拟机,作为服务机,目标承载 48w 连接; 选择八台配置为 4 核 8G 的虚拟机,作为客户机,每台客户机开放 6w 个端口。 ====== @sujin190 我都说了好多遍了,是 Nginx 做反向代理时的连接数,连文章的出处我都给了 ====== @tairan2006 赶紧屏,永不相见。 @yl20181003 你这种数字 id 跑来说别人带节奏? @icy37785 你们这帮数字 id 连一个首贴没有说别人带节奏?我没说清楚文章来源,数据来源是怎么的? |
77
icy37785 2021-12-03 00:03:03 +08:00 via iPhone
@abcbuzhiming #74 原来不是带节奏,是单纯的不具备中文理解能力呀,那没事了,ban 了,再见。
|
78
opengps 2021-12-12 18:16:15 +08:00 via Android
用 ng 转发会受到系统可用端口数量制约,直接写个服务只需要一个端口,就承受外边连进来的链接
|