/homebox

A Toolbox for Home Local Networks

Primary LanguageTypeScript

Homebox

家庭网络工具箱,主要用于组建家庭局域网时的一些调试、检测、压测工具。

需要家庭内有一个较强服务端,否则服务端可能会成为瓶颈。测试端需要使用现代新版浏览器,比如 Chrome/Firefox 等。如果测速的是高速网络,请尝试保证机器 CPU 性能足够强劲

Feature

  • 面向未来浏览器设计
  • 高达 10G 的浏览器速度测试
  • 自带 Ping 检测
  • 丰富的自定义测速参数
  • 服务端无需固态要求
  • 友好的 UI 交互
  • 针对低速网络(< 2.5G)优化测速资源占用

v1 进度追踪看板

Screenshot

dark-theme

light-theme

Install

Docker

首先你需要有一台服务器,只要能支持安装 Docker 即可,比如群辉、FreeNas、unRaid、CentOS 等等,暂时只支持 x86 服务器。

安装并启动 xgheaven/homebox 镜像,默认情况下暴露的端口是 3300。 然后在浏览器中输入 http://server.ip:3300 即可,如果重映射了端口,请输入映射后的端口

Binary

直接在 Release 下载对应版本即可。

解压之后直接执行编译好的二进制文件即可。

Usage

输入网址之后,会看到分为两种测试模式,分别是单次测速和持续压测。

  • 单次测速的模式下,会依次执行 Ping/Download/Upload 测试,一般可以直接用这个模式。
  • 持续压测的模式下,可以无限制以最高速度压测链路,通常可以用于设备移动中链路稳定性测试、多设备压测、路由器转发散热性能测试等。

Terminal(WIP)

某些极端情况下,机器性能不足或者浏览器版本过低,可以直接通过复制浏览器中提供的测速脚本,在终端中测速。 一方面方便某些懒人不愿意打命令行,另一方面脱离了浏览器的环境,测速性能和准确度会更高

Design

由于众所周知的原因,浏览器中 js 的效率是比较低的,而且在网络请求的时候,还是占用大量的内存。 所以为了避免主线程的卡顿,所有的请求都是在 Web Worker 中进行的。

但仅仅一个 Worker 是支撑不住万兆网络的测速要求的,因为一个 Worker 并发请求的能力依旧很低。 比如使用 curl 单链接单进程最高可以达到 2GB/s 的速度,核算过来大约 16Gbps。 而一个 Worker 就算是开启多请求并发的速度,也仅仅只能达到 500MB/s,可见性能有多低。

解决方案也很简单,创建多个 Worker 叠加测速,来叠加到万兆网络的要求。 但是多个 Worker 对机器的性能要求很高,如果只是用于千兆网络测速,而机器性能又比较弱,就会导致测速不准。

这就是为什么会有两种模式的原因,高速模式低速模式。 在高速模式下,会启用多 Worker,而低速模式下,仅仅启用一个 Worker 来减少资源的占用。

Tests

  • 在 2017 款 13 寸 Macbook 上,低速配置下能够实现 4G 下载速度以及 3G 上传速度
  • 在 2019 款 16 寸 Macbook 上,在开启高速模式下,最高可以达到 12G 的下载速度以及 10G 的上传速度

Powered by

  • Golang(gin)
  • TypeScript
  • React