Giter Club home page Giter Club logo

homebox's Introduction

Homebox

家庭网络工具箱。用于组建家庭局域网时,对网络进行调试、检测、压测的工具集合。

Feature

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

v1 进度追踪看板

dark-theme

light-theme

Requirement

  • 本软件需要一个服务端进行部署,然后通过客户端访问网页进行测试
  • 当需要对万兆以上网络测试的时候,需要保证客户端的性能(主要为 CPU 单核)足够强劲,否则可能会成为瓶颈。 具体的要求可以看后文的性能测试

Install

Docker

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

docker run -d -p 3300:3300 --name homebox xgheaven/homebox

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

Binary

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

解压之后直接执行编译好的二进制文件,各个平台的执行方式应该不用我教了吧。

Usage

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

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

默认情况下,设备会以低速模式运行,适用于大部分网络情况。 也可以在高级配置中切换为高速模式,此时会将客户端资源榨干的方式尽可能压榨网络流量,用于万兆以上的高速网络。

Terminal(WIP)

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

Design

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

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

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

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

Performance

目前我暂时没有万兆以上的移动端设备,如果哪位小伙伴有的话,可以将结果告诉我

以下为客户端测试

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

Powered by

  • Golang(gin) 服务端
  • TypeScript 前端语言
  • React 前端框架
  • Rspack 前端打包工具
  • 其他依赖请查看相应文件

homebox's People

Contributors

lqs avatar xgheaven avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

homebox's Issues

testing analytics

hey guys
can we capture the client connection type (5g/4g) and operator and location ? to be used as a reference for speed at a specific area

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.