V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
UserName99
V2EX  ›  宽带症候群

测速网站是什么工作原理,服务器怎么扛住大量用户同时测速的巨大流量的

  •  
  •   UserName99 · 158 天前 · 3568 次点击
    这是一个创建于 158 天前的主题,其中的信息可能已经有所发展或是发生改变。
    对于一些热门测速网站来说,虽然可以有多个测速节点,但是相对于所有可能要测速的用户来说每个节点还是要面对大量用户,总会有机会出现同一个节点同时有很多人测速的情况。现在家庭带宽普遍比较高了,假设某个节点同一时间有 10 个千兆宽带用户测速,服务端要想正常测速带宽得大于客户端才行,那服务端就得万兆带宽才行了,而且当并发大于 10 个人时还会更大。如果服务器真的是万兆带宽那成本会很高,测速又是免费的,感觉不太可能是这样的,所以实际上测速网站是怎么工作的呢。
    还有一个问题,测速时测下行是直接从服务器下载一个大文件吗,如果是这样,那测上行时上传的文件又是从哪来的。
    6 条回复    2024-07-01 14:35:56 +08:00
    geekvcn
        1
    geekvcn  
       158 天前   ❤️ 1
    国内测速节点一般是运营商的,口子想给多大给多大,但是由于最近需要省结算费用了,外省跑别的省的节点可能被限速 1Mbps 。欧美数据中心对等互联,对于 IDC 来说口子并不是那么值钱,所以很多赞助节点。国内商宽价格非常高,所以基本没除运营商之外的测速节点。具体测试是用什么协议不能一概而论,但是网页测试基本用的 websocket 。https://github.com/openspeedtest/Speed-Test 自己读源码
    longlonglanguage
        2
    longlonglanguage  
       158 天前
    应该是和运行商有合作吧,要不然就是 cdn 节点。至于上传比较简单,随机内容生成就行了,反正服务器也没真的准备接收,对多个服务器节点上传,app 再对这些多个线程网速汇总就行了。我个人理解是这样的。
    totoro625
        3
    totoro625  
       158 天前
    “服务端要想正常测速带宽得大于客户端才行”

    小于也不是不行,也就是测不出来最大网速罢了,可以多弄几个服务端并发

    test.ustc.edu.cn 而言,大部分测速的人宽带都很低的,跑不满
    onion83
        4
    onion83  
       157 天前   ❤️ 1
    你们看看源代码就知道了,包括 speedtest.net 或者主流的测速程序,后端就是用 php 写的( https://github.com/bg6cq/speedtest/tree/master/backend ),核心代码 67 行,文件名被命名为:garbage.php 每天真承受百亿流量,却被承受各种 “低性能的、落后的、垃圾语言”的侮辱。
    kanepan19
        5
    kanepan19  
       156 天前
    @onion83 人家关心的是带宽够不够, 没讨论执行效率。
    onion83
        6
    onion83  
       156 天前
    @kanepan19

    关于带宽: https://www.v2ex.com/t/1053729?p=1#r_14932666
    关于原理:测速原理非常简单,不一定需要一个实体的静态文件。下载时客户端计算时间内收到字节数(服务器不开 gzip 压缩,输出随机字符串),上传时候服务器计算单位时间接收到的字节数即可。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1066 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:15 · PVG 03:15 · LAX 11:15 · JFK 14:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.