请教懂 arm 和家庭宽带的大佬,自建 tcp 服务器集群 用手机主板的可性能 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
joyanhui
V2EX    程序员

请教懂 arm 和家庭宽带的大佬,自建 tcp 服务器集群 用手机主板的可性能

 
  •   joyanhui 2023-09-10 21:48:26 +08:00 2906 次点击
    这是一个创建于 829 天前的主题,其中的信息可能已经有所发展或是发生改变。

    oneman 算是物联网项目。
    因为接入设备数量比较多,测试期间已经有几千台活跃的客户端设备。 断断续续折腾几个月,走了很多弯路。目前是用的自定义的 tcp 协议。
    因为利润非常低,但是设备数量增速很快,测试期间这几千设备用云服务器,算了一下可能会亏...所以想降低服务器费用。

    主要有两个功能:1 设备离线检测 2 其他的功能

    离线检测功能

    tcp 实现的。然后用一个入口文件实现了服务器的伪集群。
    设备自己走 http 查询 cdn 上的文件检索自己要连接的服务器地址,然后和对应的 tcp 服务器定期发生一个心跳包。 然后实现了离线检测功能。用的 golang+gnet 。但是需要频繁检查 map 里面对应的设备一些配置情况

    其他的功能

    走的 tcp 短连接,这个频率不高,对服务器 内存和 cpu 开支很小 但是对服务器下行带宽占用多一些。

    服务器这边 最大的性能开支,就是带宽开支和 tcp 大量长连接的内存和 cpu 占用。

    家庭宽带

    我自己有三条宽带都有动态公网 ip ,且不在同一个城市。其中一条宽带还有 ups 和发电机,想用这三条宽带做一个高可用性伪集群。不用云服务。

    家宽的,下行带宽够大所以带宽开支可以忽略。 然后存在两个问题,请教。1 、是可否用 arm 手机集群 2 、是家宽的 tcp 并发有什么限制吗?

    可否用 arm 手机主板做服务器集群

    用 手机主板集成机箱 放一堆手机主板 otg 有线网 跑 arm linux 可行吗? 用 x86 的话多出来的硬件开支和电费 是否值得

    不是很明白 cpu 不同架构的性能差距,服务器这边除了维持大量 tcp 连接资源,就是需要频繁查询 map,算是 hash 运算,不知道这两个情况下,arm 是否比 x86 更合适。
    手机的 cpu 缓存也比较小,但是不知道同性能下功耗和硬件投入是不是都要比 x86 小很多。

    没有多少数据需要写硬盘的。

    家宽的 tcp 并发数量

    之前测试过 udp,同时收太多包会丢包。不知道 tcp 有没有限制。因为目前手上 x86 路由器太老了性能不够,自己测试的时候连接数多了开发机还没事,路由器 cpu 先 100%了,也没能测出来。

    第 1 条附言    2023-09-14 04:55:34 +08:00
    感谢各位,最后自己实际测试了一下。

    换了一个 8 核 64G 的软件路由 临时测试了一下家宽的并发数上限,4 万左右,山东电信。超过 后无法再建立新的 tcp 连接。

    准备只把部分功能当到家宽里面。


    不选择 arm 的那些盒子和开发板 是因为内存太小,并发上来后内存占用很大,因为运算比较简单,cpu 占用不高,但是内存成为瓶颈。

    最后也找了一个 骁龙 835+6G ( 200 元左右)的手机 实际测试自己的场景下,手机确实比 x86 更合适自己的场景,性能和功耗 都适合。
    artnowben
        1
    artnowben  
       2023-09-10 22:26:32 +08:00
    感觉有一个性能比较高的 TCP 协议栈就可以。
    一个高性能的 TCP 协议栈,比 linux kernel 的协议栈的性能可能高百、千、万倍。
    例如 dperf 的 TCP 协议栈可以支持几十亿并发。
    https://dperf.org/
    https://github.com/baidu/dperf
    hefish
        2
    hefish  
       2023-09-10 22:32:28 +08:00
    我觉着还是云服务器+家宽+zerotier/tailscale 。。。也不知道 OP 现在软路由是啥配置,我家里 J4125 + 16G 内存,感觉跑点小业务挺流畅。
    OceanBreeze
        3
    OceanBreeze  
       2023-09-10 22:35:39 +08:00
    @hefish zerotier 这两天我用了一下很卡,提交个打印任务给家里的打印机,要 1 分钟。
    hefish
        4
    hefish  
       2023-09-10 22:53:56 +08:00
    @OceanBreeze 主要看 ping 值,我移动到电信的话,ping 有 300-600ms ,这个时候肯定是卡顿。 然后我发现电信到电信的话,基本上 ping 是 50ms 以内,这时候就流畅多了。远程桌面都很流畅。
    OceanBreeze
        5
    OceanBreeze  
       2023-09-10 2254:48 +08:00
    @hefish 哦,我是联通到电信,回头试试用电信到电信。
    wangbin526
        6
    wangbin526  
       2023-09-10 23:30:08 +08:00 via Android   1
    不懂你为什么说带宽开支最大,物联网一般都是大并发的小微请求,可以选各家限定总流量的轻量云服务器,便宜很多
    如果下行时效不是非常高的话并且数据量不大,没必要保持 TCP 链接,用 go fiber 开 http 服务器,这货特别适合大并发的微小请求,偶独享 2 核+8G 的轻量云能支撑近 50 万传感器定时上传,平均 QPS 2 万+,峰值 5 万+,服务器还挺闲
    下行也有时效要求的话就再开个 emqx 走 mqtt ,仅用于发下行消息和订阅离线通知,定时上传还是走 fiber ,emqx 的登录和需要频繁检测的都丢 redis 缓存,这样服务器花不了多少钱
    slowman
        7
    slowman  
       2023-09-10 23:39:40 +08:00
    几千个长连接不算什么压力吧
    是不是程序写的不行
    ebi5oowiiy1llo
        8
    ebi5oowiiy1llo  
       2023-09-11 00:11:53 +08:00 via Android
    手机的主要问题是兼容性问题,系统非常不好搞,想省钱可以找一些 arm 开发板来做,或者淘二手笔记本,性能一般比手机好不少,耗电也较低
    另外家宽连接数限制通常是设备跟不上,比如一般家用光猫能抗 2w 左右连接,再多就丢包死机之类的
    运营商也有限制,一般比较高,得实际测一测才知道
    yinmin
        9
    yinmin  
       2023-09-11 00:32:30 +08:00
    手机 arm 不行吧,推荐几款 arm 设备,你可以多买几台做个集群:
    (1) cm311-1a 机顶盒,70 元/台,4 核 CPU ,能安装 armbian (debian/ubuntu),优点是便宜、省电,缺点是百兆网卡
    (2) R2S ,2xx 元/台,4 核 CPU ,能安装 armbian (debian/ubuntu),优点是千兆网卡,缺点是没显示器接口,机器不能挂

    再贵些的 arm 就不推荐了,不如 x86 的小盒子,也很省电。

    关于家宽的 tcp 并发,这个涉及做 NAT 转换设备的性能。你要改成桥接模式,然后自己的路由器拨号,软路由的性能是比较强劲的,并发几千不是问题。
    cctv6
        10
    cctv6  
       2023-09-11 00:46:41 +08:00
    之前有搭建过 mqtt 的服务,50 万个设备同时连接,带宽占用也才几 M 。
    现在几千台活跃设备,使用什么云服务器,价格大概多少呢?我感觉如果用云的话,服务器成本应该不会太高。
    mayli
        11
    mayli  
       2023-09-11 09:29:14 +08:00
    感觉是软解轮子不行 想用一个不好用的硬件抗?
    150530
        12
    150530  
       2023-09-11 10:41:20 +08:00
    @yinmin 可以考虑 rk3399 的板子,比 R2S 的 rk3328 性能好(差不多翻倍),4+32 的黄鱼一百二三左右,基本都是千兆且带 hdmi
    lengrongec
        13
    lengrongec  
       2023-09-11 11:49:09 +08:00
    可以搞个垃圾玩客云刷机 armLinux 先做做测试
    ggvm
        14
    ggvm  
       2023-09-11 12:03:31 +08:00
    感觉评论都说到点子上了。

    个人认为家宽的稳定性存在问题,用云服务起码可以保证服务的稳定性,调试和维护也方便。如果嫌国内云服务费太贵,可以考虑一些性价比高的 包年服务云主机。
    joyanhui
        15
    joyanhui  
    OP
       2023-09-14 03:01:10 +08:00
    @ebi5oowiiy1llo 请教,桥接的情况下,一般的光猫可以吗? 2w 的连接的不太够用。光猫不太好换。
    joyanhui
        16
    joyanhui  
    OP
       2023-09-14 03:04:37 +08:00
    @cdlnls 主要还是数据上报频率和数据量,只是空的 mqtt 连接的话 可以接近 0 带宽了。 场景不同。
    joyanhui
        17
    joyanhui  
    OP
       2023-09-14 03:08:29 +08:00
    @artnowben 非常感谢!!
    joyanhui
        18
    joyanhui  
    OP
       2023-09-14 03:11:45 +08:00
    @hefish 这... 我有公网 ip 而且是面向外网的服务。 目前的需求和 zerotier/tailscale 没有关系。
    joyanhui
        19
    joyanhui  
    OP
       2023-09-14 03:25:49 +08:00
    @wangbin526 场景不太一样。我正文里面有描述。我需要维持长连接,频繁短连接测试过性能开支更大。
    gofiber 记得基于 fasthttp 的吧? 测试过 fasthttp 性能只有 gnet http 的 20%左右。应该比 tcp 更低了,。定时数据上报我这边带宽占用的比较多,数据量不低。部分走的自定义 tcp 数据量比较大的时候会设备端会 zlib 压缩后上报 也只能节省有限的带宽。
    http 和 mqtt 上层协议是我前面几个月走过的弯路,中间测试过使用类似 coap 的自定义 udp 因为高峰期丢包太多的问题也放弃了。目前是设备段是优先 udp,udp 丢包率太高的时候会切换到 tcp 。
    joyanhui
        20
    joyanhui  
    OP
       2023-09-14 03:36:00 +08:00
    @yinmin 感谢,但是我搜了一下 cm311-1a R2S 的主频核心数 二级缓存和内存频率 都低于 比较常见的可以刷 armdian 的手机主板,价格好像没有太大优势。
    几千的并发只是目前 小范围测试的情况下,上线后不止这个数量。
    ebi5oowiiy1llo
        21
    ebi5oowiiy1llo  
       2023-09-17 01:23:11 +08:00 via Android
    @joyanhui 桥接拨号后就不受光猫性能限制了
    joyanhui
        22
    joyanhui  
    OP
       2023-09-20 18:29:13 +08:00
    @ebi5oowiiy1llo 非常感谢
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5239 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 40ms UTC 05:58 PVG 13:58 LAX 21:58 JFK 00:58
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86