A Toolbox for Home Local Networks
家庭网络工具箱。用于组建家庭局域网时,对网络进行调试、检测、压测的工具集合。
首先你需要有一台服务器,只要能支持安装 Docker 即可,比如群辉、FreeNas、unRaid、CentOS 等等,暂时只支持 x86 服务器。
docker run -d -p 3300:3300 --name homebox xgheaven/homebox
安装并启动 xgheaven/homebox
镜像,默认情况下暴露的端口是 3300
。
然后在浏览器中输入 http://your.server.ip:3300
即可。
直接在 Release 下载对应版本即可。
解压之后直接执行编译好的二进制文件,各个平台的执行方式应该不用我教了吧。
输入网址之后,会看到分为两种测试模式,分别是单次测速和持续压测。
默认情况下,设备会以低速模式运行,适用于大部分网络情况。 也可以在高级配置中切换为高速模式,此时会将客户端资源榨干的方式尽可能压榨网络流量,用于万兆以上的高速网络。
某些极端情况下,机器性能不足或者浏览器版本过低,可以直接通过复制浏览器中提供的测速脚本,在终端中测速。 一方面方便某些懒人不愿意打命令行,另一方面脱离了浏览器的环境,测速性能和准确度会更高
由于众所周知的原因,浏览器中 JavaScript 的效率是比较低的,再加上网络请求的时候,需要占用大量的内存。 所以为了避免主线程的卡顿,所有的请求都是在 Web Worker 中进行的。
但仅仅一个 Worker 是支撑不住万兆网络的测速要求的,因为一个 Worker 并发请求的能力依旧很低。 比如使用 curl 单链接单进程最高可以达到 2GB/s 的速度,核算过来大约 16Gbps。 而一个 Worker 就算是开启多请求并发的速度,也仅仅只能达到 500MB/s,可见性能有多低。
解决方案也很简单,创建多个 Worker 叠加测速,来叠加到万兆网络的要求。 但是多个 Worker 对机器的性能要求很高,如果只是用于千兆网络测速,而机器性能又比较弱,就会导致测速不准。
这就是为什么会有两种模式的原因,高速模式和低速模式。 在高速模式下,会启用多 Worker,而低速模式下,仅仅启用一个 Worker 来减少资源的占用。
目前我暂时没有万兆以上的移动端设备,如果哪位小伙伴有的话,可以将结果告诉我
以下为客户端测试