是 Nginx 已经落后时代了,还是那些人在吹水?

2021-11-30 10:36:28 +08:00
 abcbuzhiming
刚刚看到一篇公众号,石墨文档说他们改造自己 websocket 网关,看了一眼是用 go 实现的,里面的有个数据很吓人,4 核心 8GB ,单机 48w 连接。

然后我在 v2 搜了一下,好家伙,有人宣称自己写出了单机 100w 连接数的网络库。一看也是 go 。

我记得 nginx 的单机负载也就是 3w-5w 连接,网上极少见有人能搞到 10w 连接的。上面这些 50w 和 100w 单机连接数的真的不是在吹牛?
12788 次点击
所在节点    问与答
78 条回复
nl101531
2021-11-30 23:34:01 +08:00
梦回大跃进
kkbblzq
2021-12-01 01:01:07 +08:00
楼上的大部分回复,我知道为啥现在网上带节奏这么容易了。
zachgenius
2021-12-01 08:00:33 +08:00
现在应该还是 NGINX/apache 是主流。性能不够加机器啊,搞一些魔改最后运维和 debug 成本远高于加机器。大多数普通”互联网“公司可能到最后倒闭了都未必能跑满 nginx 的最大并发量
tairan2006
2021-12-01 08:30:02 +08:00
看了原文,决定先把楼主 block 了
yl20181003
2021-12-01 09:01:10 +08:00
已经屏蔽楼主,纯带节奏
suyuyu
2021-12-01 09:16:44 +08:00
营销号日常作妖
hourui
2021-12-01 09:38:25 +08:00
但凡看过 nginx 源码的人,不会有这种疑问的。
kerro1990
2021-12-01 09:47:23 +08:00
nginx 百万毫无压力,看下代码实现就知道了
runze
2021-12-01 09:48:33 +08:00
@ysc3839 很正常嘛
随便找一个开源的 C/C++/Whatever 程序,性能大概率是不如 nginx 这种使用 C/C++,且开发了多年,使用广泛的程序好的
heyjei
2021-12-01 10:47:07 +08:00
@rrfeng 哈哈哈哈哈,必须的,前面必须还得一个 Nginx 来做负载均衡🐶
icy37785
2021-12-01 12:01:30 +08:00
楼主在这里带节奏,底下一堆不是喷 go 的就是喷公众号的,
没看公众号原文就喷的我都能理解,
有些喷起来像连楼主这个帖子都没看的,我确实理解不了。
总不能是机器人吧。
millken
2021-12-01 15:45:44 +08:00
写得好的情况下,golang fasthttp server 的性能是可以超越 nginx 的,fasthttp 下可以实现 zero allocate 。
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 就可以了。
SteveWoo
2021-12-01 15:56:26 +08:00
结论:nginx 很牛,没有落后时代;那些人也没有吹水;楼主要提升认知。
saberlong
2021-12-01 18:42:38 +08:00
golang 之前确实有篇单机 100 万连接实践。本质上是讲 golang 在 100 万连接下怎么优化的。比较采用常规的一个链连接 2 个 go 程方案与通过 syscall
直接使用 epoll 方案之间的内存占用和延迟差别等。和 100 万并发不是同个概念。文章里实现单机 100 万连接的一些设置以及测试方式还是可以借鉴的。其它语言也能做到
abcbuzhiming
2021-12-02 20:20:35 +08:00
@hmli
你自己看原文不仔细,原文和内容我贴出来

https://mp.weixin.qq.com/s/jl14D6XYJ5PeR3rmYAPdpQ

4.1 压测准备
选择一台配置为 4 核 8G 的虚拟机,作为服务机,目标承载 48w 连接;
选择八台配置为 4 核 8G 的虚拟机,作为客户机,每台客户机开放 6w 个端口。

======

@sujin190
我都说了好多遍了,是 Nginx 做反向代理时的连接数,连文章的出处我都给了


======
@tairan2006 赶紧屏,永不相见。
@yl20181003 你这种数字 id 跑来说别人带节奏?

@icy37785 你们这帮数字 id 连一个首贴没有说别人带节奏?我没说清楚文章来源,数据来源是怎么的?
icy37785
2021-12-03 00:03:03 +08:00
@abcbuzhiming #74 原来不是带节奏,是单纯的不具备中文理解能力呀,那没事了,ban 了,再见。
opengps
2021-12-12 18:16:15 +08:00
用 ng 转发会受到系统可用端口数量制约,直接写个服务只需要一个端口,就承受外边连进来的链接

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

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

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

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

© 2021 V2EX