V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
PINGms
V2EX  ›  分享创造

精确测量本地到多个云服务的速度(很可能是最好的 HTTP ping)

  •  5
     
  •   PINGms · 2018-07-05 23:27:06 +08:00 · 10374 次点击
    这是一个创建于 2318 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这次主要的改进是每个服务器有“多个 HTTP 请求”测试,很大程度上解决了“抖动”(网络和浏览器的不稳定性)。

    页面: http://www.pingms.com/ (每个服务器有五个 HTTP 请求)
    代码: https://github.com/pingms/pingms (求 star )

    最后,再次感谢 @codehz 对这个小工具的巨大改善。
    第 1 条附言  ·  2018-07-12 15:50:14 +08:00
    添加了一些新功能:
    1. 点击城市名称可以测试下载。
    2. 目前只有“搬瓦工”的“ CN2 ”不能测试下载,有相关提示(“ No Download ”)。
    3. 有“超时检测”,超过六秒就进入下一个任务。
    4. 添加了“搬瓦工”(官方测速地址,找他们客服要的)和“ HostUS ”。
    5. 改善了 UI。
    第 2 条附言  ·  2018-07-15 14:50:10 +08:00
    删除了“ HostUS ”,他们的测速地址突然出问题了:有的测速地址强制 HTTPS,测试结果搞的很难看,而且没有意义。添加了“ RamNode ”和“ Host1Plus ”。
    第 3 条附言  ·  2018-07-15 19:10:34 +08:00
    腾讯“网址安全中心”已经没有把这个域名列为“恶意网站”了。Safari 应该不会报警了。

    感谢 @ltq918 @yuhuigreed 的帮助!
    113 条回复    2019-02-11 11:13:46 +08:00
    1  2  
    jrient
        1
    jrient  
       2018-07-06 09:19:34 +08:00
    用来挑选 vps 非常舒服,感谢
    Telegram
        2
    Telegram  
       2018-07-06 09:49:52 +08:00 via iPhone
    排序动作,很帅
    tyzxyz
        3
    tyzxyz  
       2018-07-06 09:52:02 +08:00   ❤️ 3
    好棒,能不能做成并行的,等结果好慢
    PINGms
        4
    PINGms  
    OP
       2018-07-06 10:24:21 +08:00
    @jrient 多谢夸奖 :-)
    PINGms
        5
    PINGms  
    OP
       2018-07-06 10:28:52 +08:00
    @Telegram 这个都是 @codehz 的功劳:

    https://github.com/pingms/pingms/pull/1

    事实上,他做的效果更酷:

    页面: https://codehz.github.io/pingms/
    代码: https://github.com/codehz/pingms

    为了更好的兼容性,我把长条的颜色特效去掉了。
    PINGms
        6
    PINGms  
    OP
       2018-07-06 10:30:47 +08:00
    @tyzxyz 多谢反馈,正在考虑这个问题……
    FanWall
        7
    FanWall  
       2018-07-07 00:07:53 +08:00 via Android
    谢谢分享
    wjm2038
        8
    wjm2038  
       2018-07-07 00:14:49 +08:00 via Android
    可以自定义次数么
    To5tE
        9
    To5tE  
       2018-07-07 08:07:16 +08:00
    863ms
    Frankfurt
    834ms
    Amsterdam
    823ms
    Paris
    795ms
    London
    920ms
    Singapore
    762ms
    Tokyo
    667ms
    New Jersey
    640ms
    Chicago
    609ms
    Seattle
    664ms
    Atlanta
    715ms
    Miami
    658ms
    Dallas

    这结果不对吧
    lniwn
        10
    lniwn  
       2018-07-07 09:02:01 +08:00 via Android
    不错的工具,能并行就更棒了
    PINGms
        11
    PINGms  
    OP
       2018-07-07 09:57:48 +08:00
    @FanWall :-)
    PINGms
        12
    PINGms  
    OP
       2018-07-07 09:59:20 +08:00
    @wjm2038 目前不能“自定义次数”,用于测速的 HTTP 请求有四个(对于每个服务器),个人觉得已经足够了。
    PINGms
        13
    PINGms  
    OP
       2018-07-07 10:01:25 +08:00
    @To5tE 如果怀疑数值不准确,请 F12 Network,然后刷新——可以看到精确毫秒数值……当然,我已经检查过几次了,应该没问题哈。
    PINGms
        14
    PINGms  
    OP
       2018-07-07 10:02:49 +08:00
    @lniwn 反馈已经收到,正在研究……
    misaka19000
        15
    misaka19000  
       2018-07-07 10:12:02 +08:00
    背景全绿。。。盯着看了会延时信息之后再看其他页面感觉有点眼花
    PINGms
        16
    PINGms  
    OP
       2018-07-07 11:45:40 +08:00
    @misaka19000 晕倒……因为这个工具运行需要时间嘛,当时搞这个颜色就是为了眼睛轻松点,然后自我感觉良好……请问什么背景颜色更好呢?(现在仍然觉得这个颜色不错,眼睛很放松呀)
    lhx2008
        17
    lhx2008  
       2018-07-07 11:56:48 +08:00
    可以弄成多线程的吗,太慢了
    PINGms
        18
    PINGms  
    OP
       2018-07-07 12:59:13 +08:00
    @lhx2008 收到反馈(已经有几个人提到这件事情)——是的,可以弄成“多线程”加快测试速度,主要的顾虑是:是否会影响精度?“抖动”(网络和浏览器的不稳定性)是否加大?作为测量工具,精确的结果永远是最重要的。
    lhx2008
        19
    lhx2008  
       2018-07-07 13:09:31 +08:00
    @PINGms 你可以用假设检验的方法,在多机上进行多次实验。看看影响是否在可接受范围内
    huyudong1991
        20
    huyudong1991  
       2018-07-07 13:14:53 +08:00 via Android
    感谢,非常需要且好用
    xxxxxshuai0
        21
    xxxxxshuai0  
       2018-07-07 13:14:56 +08:00 via Android
    赞一个,star 走起:)
    atlantis
        22
    atlantis  
       2018-07-07 13:19:07 +08:00
    楼主要是能把搬瓦工加进来就更好了
    inhzus
        23
    inhzus  
       2018-07-07 13:24:07 +08:00 via Android
    ping 不通就就卡在那儿了。。可以考虑设置一个 timeout ?(也有可能是我电脑问题的吧
    whwq2012
        24
    whwq2012  
       2018-07-07 13:35:48 +08:00 via Android
    但是 ping 不是服务器连接稳定性的唯一的标准啊,如果能加上文件下载上传测试,或者长时间 ping (几分钟)就好了
    PINGms
        25
    PINGms  
    OP
       2018-07-07 13:37:01 +08:00
    @huyudong1991 多谢夸奖 :-)
    PINGms
        26
    PINGms  
    OP
       2018-07-07 13:37:21 +08:00
    @xxxxxshuai0 多谢支持!
    PINGms
        27
    PINGms  
    OP
       2018-07-07 13:42:00 +08:00
    @atlantis 唉,“搬瓦工”有个麻烦事:他们官方没有测速地址……

    能找到的最好的列表是:
    https://www.bandwagonhost.net/test-ip

    这东西看起来不专业呀:都是 IP 地址,而且首页( http://IP/)是“ Forbidden ”——所以就没弄了。
    PINGms
        28
    PINGms  
    OP
       2018-07-07 13:50:22 +08:00
    @inhzus 反馈已经收到。虽然我没有遇到“卡在那儿了”……这东西是不会“卡死”的(使用了“ img.onerror ”),等待一下就会过去……“设置一个 timeout ”是个好办法……这应该是网络问题,不是“电脑问题”。
    PINGms
        29
    PINGms  
    OP
       2018-07-07 13:51:59 +08:00
    @whwq2012 哥们,这东西不能测试“稳定性”的。
    PINGms
        30
    PINGms  
    OP
       2018-07-07 14:01:25 +08:00
    @lhx2008 是呀,需要很多测试研究,最担心的问题:几个线程一起跑,有可能“抖动”( JS 测量时间不准确了,网络不稳定了……特别是手机……台式电脑和光纤应该没有问题)。
    CloudnuY
        31
    CloudnuY  
       2018-07-07 16:05:10 +08:00
    单线程还是有些慢,我通常手机 VPS 测速地址然后用 fping 命令批量测,结果也可以,还能大致测到丢包率
    xiaolanger
        32
    xiaolanger  
       2018-07-07 16:28:25 +08:00
    如果多线程担心稳定的话,加一个点哪个测哪个的功能吧?
    mhycy
        33
    mhycy  
       2018-07-07 17:10:20 +08:00
    可惜,这些服务商的测速节点都是优化过的
    BitBoX
        34
    BitBoX  
       2018-07-07 18:07:34 +08:00
    界面比以前好看多了。
    daocheng
        35
    daocheng  
       2018-07-07 18:16:52 +08:00
    是否丢包是个重点,能显示丢包的数据吗
    PINGms
        36
    PINGms  
    OP
       2018-07-07 18:45:25 +08:00
    @CloudnuY 确实整个过程速度偏慢,但是稳妥呀……正在研究 fping ……
    PINGms
        37
    PINGms  
    OP
       2018-07-07 18:47:35 +08:00
    @xiaolanger 收到反馈,确实可以添加“点哪个测哪个”,重点反复测试某个服务器。
    Tink
        38
    Tink  
       2018-07-07 18:53:03 +08:00 via iPhone
    能支持 tcping 就好了,这个 ping 速度说明不了问题
    Tink
        39
    Tink  
       2018-07-07 18:54:13 +08:00 via iPhone
    另外能不能自定义添加云服务商?
    PINGms
        40
    PINGms  
    OP
       2018-07-07 18:55:06 +08:00
    @mhycy 最好“都是优化过的”——这样就等于没有优化了,因为最主要的是速度排名 :-) 排名仅仅针对每个云服务内部几个节点(没有云服务的排名)。
    PINGms
        41
    PINGms  
    OP
       2018-07-07 18:56:14 +08:00
    @BitBoX 这个都是 @codehz 的功劳啦。
    PINGms
        42
    PINGms  
    OP
       2018-07-07 19:00:23 +08:00
    @daocheng 目前没有这个功能,只有“毫秒数值”。
    PINGms
        43
    PINGms  
    OP
       2018-07-07 19:04:39 +08:00
    @Tink 这个就是走的 TCP 呀( HTTP )。目前的 UI 没有“自定义添加云服务商”功能,啊,是根本就没有用户输入功能。
    B1ock
        44
    B1ock  
       2018-07-07 19:18:56 +08:00
    这是双程的吧...
    x7395759
        45
    x7395759  
       2018-07-07 20:18:08 +08:00
    ping 无法说明真实速度,真正的速度全看缘份
    wzy44944
        46
    wzy44944  
       2018-07-07 21:14:42 +08:00
    最好加上大包 ping,或者测试上传下载速度。单纯 ping 代表不了网络质量好的时候的优劣
    F0nebula
        47
    F0nebula  
       2018-07-07 21:58:20 +08:00
    @PINGms #5 兼容性方面会有什么问题呢 抱歉 对前端不是太了解
    Pythondr
        48
    Pythondr  
       2018-07-07 22:04:23 +08:00 via Android
    有点儿意思
    Livid
        49
    Livid  
    MOD
       2018-07-07 22:13:02 +08:00 via Android
    很不错的工具,丢掉第一个结果是一种很专业的做法,赞 👍
    1024MB
        50
    1024MB  
       2018-07-07 22:53:01 +08:00
    有没有打算把国内的也搞上?
    PINGms
        51
    PINGms  
    OP
       2018-07-07 22:56:40 +08:00
    @B1ock 是的,一个来回的时间,而且故意请求“ 404 ”页面(数据的大小几乎一模一样)。
    PINGms
        52
    PINGms  
    OP
       2018-07-07 23:01:32 +08:00
    @x7395759 不能同意你的说法,ping 的毫秒数值直接影响速度……是主要因素,不是唯一因素。
    MOmc
        53
    MOmc  
       2018-07-07 23:02:55 +08:00 via iPhone
    Mark !!!
    PINGms
        54
    PINGms  
    OP
       2018-07-07 23:03:13 +08:00
    @wzy44944 是呀,我也有想法搞“上传下载速度”的功能……
    PINGms
        55
    PINGms  
    OP
       2018-07-07 23:04:28 +08:00
    @F0nebula 很简单啦:“古董设备”上面长条不见了。
    PINGms
        56
    PINGms  
    OP
       2018-07-07 23:05:31 +08:00
    @Pythondr 多谢夸奖。
    PINGms
        57
    PINGms  
    OP
       2018-07-07 23:13:48 +08:00
    @Livid 多谢夸奖,得到你的点赞是很大的荣幸。
    PINGms
        58
    PINGms  
    OP
       2018-07-07 23:17:26 +08:00
    @1024MB 有这个打算,这个要做许多改动——添加一大堆的云服务,肯定要用户选择“测试目标”,全部测试一遍太夸张了。
    edsheeran
        59
    edsheeran  
       2018-07-08 05:28:25 +08:00 via iPhone
    @x7395759 ping 是 ping,測速是測速,兩個東西
    F0nebula
        60
    F0nebula  
       2018-07-08 08:54:17 +08:00
    @PINGms #55 可是颜色渐变真的非常漂亮而且直观呢
    至于古董设备的兼容性问题 相信 pingms 用户的浏览器应该是最新版的吧
    blueshark
        61
    blueshark  
       2018-07-08 11:52:12 +08:00
    不支持 IP 地址格式吗?
    PINGms
        62
    PINGms  
    OP
       2018-07-08 12:40:36 +08:00
    @edsheeran 我不知道怎么解释了,就说一点吧:ping 直接反映网络质量。
    PINGms
        63
    PINGms  
    OP
       2018-07-08 12:48:28 +08:00
    @F0nebula 唉,就是不知道呀……根本不知道 pingms 用的什么浏览器(没有统计),所以做法有些保守了。
    PINGms
        64
    PINGms  
    OP
       2018-07-08 12:49:59 +08:00
    @blueshark 支持 IP 的测试地址,修改代码就可以了。
    F0nebula
        65
    F0nebula  
       2018-07-08 14:48:45 +08:00
    @PINGms #63 那可否加一个选项?
    edsheeran
        66
    edsheeran  
       2018-07-08 18:14:08 +08:00 via iPhone
    @PINGms 你回覆錯人了吧
    ltq918
        67
    ltq918  
       2018-07-09 00:34:37 +08:00
    同卡在那,DigitalOcean 反复卡住,状态一直是 pending
    xuanliang
        68
    xuanliang  
       2018-07-09 00:46:32 +08:00
    需要 ICMP Ping,TCP Ping 探测延迟。可以试试我们做的 https://cloudping.accesshub.cn

    支持 15 个公有云服务商 125 个可用区,提供 API 接口。
    ltq918
        69
    ltq918  
       2018-07-09 00:46:41 +08:00
    好吧,这一个 pending 卡了 8.3 分钟,然后又来了一个 ...
    lovelinghan
        71
    lovelinghan  
       2018-07-09 14:37:05 +08:00
    mark
    PINGms
        72
    PINGms  
    OP
       2018-07-09 14:39:49 +08:00
    @F0nebula 是的,最好是做成自动检查浏览器版本,自动判断。
    PINGms
        73
    PINGms  
    OP
       2018-07-09 14:42:43 +08:00
    @ltq918 这不科学呀…… bug 已经收到……这些地址都没有被“墙”,怎么会搞到“ 8.3 分钟”,晕倒。
    PINGms
        74
    PINGms  
    OP
       2018-07-09 14:52:55 +08:00
    @edsheeran “尴尬而不失礼貌的微笑”……
    ltq918
        75
    ltq918  
       2018-07-09 15:04:27 +08:00 via iPhone
    @PINGms 只要卡住就是 8.3 分钟,只在 DigitalOcean 遇到
    PINGms
        76
    PINGms  
    OP
       2018-07-10 14:10:41 +08:00
    @ltq918 收到,这个“检测超时”的功能有点麻烦:代码很容易写,测试不好搞。测试的时候,需要倒腾一个反应特别慢的服务器,查看代码是否运行正常……然后我这边没有“稳定特别慢”的服务器,别说“ 8.3 分钟”,顶多 5 秒钟就出来了。
    ltq918
        77
    ltq918  
       2018-07-10 16:31:59 +08:00
    @PINGms 用 php sleep() 一下呢
    codehz
        78
    codehz  
       2018-07-10 20:14:59 +08:00
    @PINGms #63 我看了一下,其实你直接把那里 background 改成 rgb(calc(var(--delay) / var(--max-delay) * 200), calc(255 - var(--delay) / var(--max-delay) * 128), 0); 应该就可以了。。。不用 linear-gradient 的话应该有足够的兼容性
    PINGms
        79
    PINGms  
    OP
       2018-07-11 09:29:13 +08:00
    @ltq918 已经搞定了,现在超过六秒,就会认为超时,进入下一个任务,百分之百不会卡死了。有一个暴力的测试方法,直接去掉“加载测试目标”(注释掉那一行),测试永远都超时 :-)
    PINGms
        80
    PINGms  
    OP
       2018-07-11 09:45:10 +08:00
    @codehz 收到,认真测试了,古董小米 Android 7 上面还是没有长条 :-/
    codehz
        81
    codehz  
       2018-07-11 09:49:51 +08:00
    @PINGms #80 不对啊,按道理 var 都支持了,没道理拼接一个 rgb 会炸。。。不如做个 Fallback,写两行,前面一行用固定值,后面一行用动态的,这样就可以解决了
    PINGms
        82
    PINGms  
    OP
       2018-07-11 22:42:28 +08:00
    @codehz 多谢指点,“ fallback ”确实是个好办法!
    chuanqirenwu
        83
    chuanqirenwu  
       2018-07-12 09:14:53 +08:00
    你的域名被标记为假冒平安银行的网站
    PINGms
        84
    PINGms  
    OP
       2018-07-12 11:42:44 +08:00
    @codehz 不灵光呀,目前测试结果是“ fallback ”不顶用 :-/
    PINGms
        85
    PINGms  
    OP
       2018-07-12 11:46:00 +08:00
    @chuanqirenwu Chrome/Firefox/iPad/小米都正常,然后我打开了 360 浏览器……终于重现了你说的问题……已经发送消息给 360 了,希望他们会处理吧。
    codehz
        86
    codehz  
       2018-07-12 11:47:43 +08:00
    @PINGms #84 你怎么写的
    PINGms
        87
    PINGms  
    OP
       2018-07-12 12:57:44 +08:00
    @codehz 代码是:

    background: DarkOliveGreen;
    background: rgb(calc(var(--delay) / var(--max-delay) * 200), calc(255 - var(--delay) / var(--max-delay) * 128), 0);

    测试:Chrome/Firefox 正常,“古董设备”( Android 7.1.2 MIUI 9.5 )没有“长条”。真的很头痛……
    codehz
        88
    codehz  
       2018-07-12 13:00:07 +08:00
    也许可以根据 UA 直接替换实现,看看 miui 的 ua 是啥,在 js 里把 miui 全部用 fallback 的样式替换掉好了
    PINGms
        89
    PINGms  
    OP
       2018-07-12 14:46:15 +08:00
    @codehz 哥们,这样弄不太好吧,还有其他品牌的“古董设备”呀。
    PINGms
        90
    PINGms  
    OP
       2018-07-12 14:48:02 +08:00
    @chuanqirenwu 已经搞定,请再次测试一下。给 360 点赞,反应速度真的很快。
    codehz
        91
    codehz  
       2018-07-12 14:50:20 +08:00
    @PINGms #89 或者那不显示色条就好了阿。。。反正又不是必备的。。。
    PINGms
        92
    PINGms  
    OP
       2018-07-12 15:39:41 +08:00
    @codehz 个人觉得还是要照顾“古董设备”——没有“长条”很难看的,一大块的空白。
    Level6
        93
    Level6  
       2018-07-12 19:26:56 +08:00 via iPhone
    PINGms
        94
    PINGms  
    OP
       2018-07-13 10:17:01 +08:00
    @Level6 收到,多谢反馈。目前我这边不能重现这个问题,正在调查……
    raopeize
        95
    raopeize  
       2018-07-13 19:58:59 +08:00
    收藏
    artandlol
        96
    artandlol  
       2018-07-14 08:39:02 +08:00 via iPhone
    有没有 vps 到世界各地的 curl 版
    PINGms
        97
    PINGms  
    OP
       2018-07-14 11:36:04 +08:00
    @raopeize 多谢支持!
    PINGms
        98
    PINGms  
    OP
       2018-07-14 11:37:22 +08:00
    @artandlol 这个只是“ HTTP ping ”。
    PINGms
        99
    PINGms  
    OP
       2018-07-14 12:05:58 +08:00
    @codehz 已经搞定兼容性了,颜色特效在“古董设备”上面正常显示。方法是 JS 计算颜色的数值,然后传递给 CSS。
    yuhuigreed
        100
    yuhuigreed  
       2018-07-14 17:52:45 +08:00 via iPhone
    @Level6 同样这个提示
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1681 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 85ms · UTC 16:50 · PVG 00:50 · LAX 08:50 · JFK 11:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.