奕链 YiLink · 在线网络工具箱

网络状态,
逐项自检

测网速、查延迟、看局域网里谁在线上。手机、平板、电脑同一个网址,无需安装客户端。

读数样例
目标探测 · aliyun-dns
34.5ms丢包 0.0%
下行带宽
91.4Mbps
局域网在线设备
7台2 台新接入
样例读数 · 实际数值以控制台实测为准
项目档案 架构 · 代码 · 学习档案 监控台 健康总览 · 排障工作台
工作台
当前:跟随系统
本机遥测 / 连接中

网络运行态势

所有数字均来自服务器实时探测,每 15 秒刷新一次,刷新时间与数据来源标注在本卡片底部。

活跃连接--
引擎运行时长--
累计请求--
探测目标健康度
--
正在同步
等待本地接口响应
奕链 YiLink · 在线网络工具箱

测网速、查延迟、看局域网里谁在线上
读数都可核验

不用安装客户端。手机、平板、电脑打开同一个网址, 登录账户后把一台设备设为主设备,即可测延迟与丢包、跑带宽测试, 并查看局域网里有哪些设备在线。

开始使用

连通性诊断开箱可用;其余工具见下方「快捷入口」,登录后把一台设备设为主设备即可

看这个项目是怎么做的

4 个子项目 · 规模数字均可对照仓库核验

无需安装客户端 手机 / 平板 / 电脑同一网址 当前延迟 -- ms 数据来自服务器实时探测
技术详情
Reactor 运行中 · epoll LT · 2 个工作线程 HTTP :8080 HTTPS :443 · Let's Encrypt 证书 keep-alive 60s
以下为 基准测试结果 · 2026-09-19,服务器单机实测,不是当前实时指标。
并发连接稳定
0+
峰值吞吐
0 req/s
P99 延迟
0 ms
测试通过
0/6

项目成果

规模与验证结论 · 均可对照仓库核验
可独立讲述的子项目
0个
主站 HTTP 端点
0个
DC-Lab 网络断言(8 阶段)
0项全过
版本迭代
0个标签

快捷入口

全部工具在此 · 侧栏与 Ctrl+K 亦可直达

最近任务

诊断任务自动归档 · 本地保存最近 50 条

还没有诊断任务。开始一次检测,系统会自动生成报告和证据链。

连通性测试

发送 /ping 请求,测量往返延迟

点击按钮开始测试

服务健康

运行时长、连接数、总请求数

—

客户端信息

你的公网出口 IP、端口和请求头

—

下载测速

下载 2 MiB 数据,计算带宽

—

上传测速

上传 1 MiB 数据,计算带宽

—

请求头回显

查看服务器收到的 Header

—

目标探测

服务器主动探测目标主机可达性

输入目标后开始探测

宽带测速

延迟抖动 → 下载 → 上传,实时仪表盘;测量浏览器与本机服务器之间的真实吞吐

0.00
Mbps
点击下方按钮开始
⬇ 下载速率
—
⬆ 上传速率
—
⏱ 延迟(RTT)
—
〰 抖动(Jitter)
—
当前连接信息
历史记录(本机保存最近 10 次)
测速完成后自动记录

持续测试

单次测速升级为持续采样:时间序列曲线 · 定时窗口 · 服务端带宽上限

未运行
并发线程 采样间隔 带宽上限 Mbps (0 = 不限)
定时窗口 至 跨天窗口(22:00 至次日 06:00)按「窗口起始日」归属星期
还没有采样点——点「开始持续测试」后曲线实时绘制
下载速率(Mbps,左轴) 延迟 RTT(ms,右轴) 带宽上限
瞬时吞吐 (Mbps)
—
滑动均值 · 30 点 (Mbps)
—
峰值 (Mbps)
—
累计流量
—
采样点 / 时长
—
最近延迟 (ms)
—
如实说明:带宽上限是服务端真限速——每个采样线程把自己的目标速率 以 rate=<N>m 下发给 /speed/download,由服务端按 「时间戳 + 非阻塞分块发送」的令牌桶真正卡住节奏(不是靠浏览器少读来装样子)。 请求体积(size)仍等于本轮预算,两道约束共同保证长期吞吐收敛到设定值。 限速发生在服务端 Reactor 事件循环内的非阻塞发送路径上,不含任何 sleep, 因此限速期间 /ping、/health 的响应时间不受影响。 采样循环刻意不受页面可见性影响:切到其它标签页仍继续采集。但浏览器会对后台标签的 定时器做节流(隐藏超过约 5 分钟后可能降到每分钟一次),因此后台期间曲线的时间间隔 可能被拉长——这是浏览器的限制,不代表采样停止;回到前台会立即恢复正常节奏。
说明:测速结果为浏览器 ↔ 本服务器之间的吞吐,受本机网络栈限制。 若部署到公网服务器,则测得的是你到该服务器的真实网速。下载大小 2 MiB,上传大小 1 MiB。 目标探测由服务器以非阻塞 connect + poll 发起(worker 线程执行,超时默认 3s),可探测任意 host:port。

主机视角

哪台设备登录,哪台就是主机(不限于电脑);登录后可查看已配对设备并生成配对码

未登录

本机上报(自动)

打开本页即已自动开始心跳,无需任何操作;改个名字立即生效

未开启自动上报 —— 点击右侧按钮开始

我管理的主机组(下属设备)

你是主机:可看到所有绑定到你名下的设备 · 每 3 秒刷新
我管理的主机组(下属设备)
设备名称 IP 地址 MAC 地址 网络延迟 登录地址 网速 状态 最后心跳 操作

我加入的上级主机组

你是成员:只能看到主机与你自己 · 可随时退出该组
我加入的上级主机组
角色 设备名称 IP 地址 MAC 地址 网络延迟 登录地址 网速 状态 最后心跳 操作
配对机制(保持不变):① 任何设备都可点「生成设备配对码」,它就成为主机,得到一个 6 位一次性码(5 分钟有效); ② 其他设备点「输入配对码加入上级主机组」,输入码即绑定到该主机名下,此后自动心跳上报; ③ 主机可随时「移除」下属设备,设备也可自行「退出上级组」。
层级与可见性:主机本身也可以加入别的主机组,两个身份互不影响,分两个板块显示。 主机能看到自己名下全部下级(含下级的下级);成员只能看到主机和自己。
字段来源:名称可自定义;IP 为连接对端地址;MAC 从服务器 ARP 表实时查询(对方近期无通信时可能查不到); 网络延迟为浏览器请求 RTT;登录地址为设备访问本系统的网址;网速取自该设备在「宽带测速」里的最近一次真实结果(未测速则显示未测速)。 注册表保存在服务器内存,服务重启后需重新配对。

局域网设备(自动发现)

类似家用路由器的"已连接设备"页 · 无需其他设备安装或上报
这是什么?主机登录后,服务器读取本机的 ARP 表(WSL2 下同时读取 Windows 的 arp.exe -a,两者是同一个局域网的视角),再对所在网段做一轮并发 ping 扫描, 让沉默的设备也进入 ARP 缓存。结果列出最近与网络通信过的设备:IP、MAC、厂商(OUI 识别)、主机名(尽力反解)。 手机随机化 MAC、路由器开启 AP 隔离、或网段较大时可能发现不全——这是真实网络的物理限制,不是程序错误。
权限与使用范围:此操作由服务器发起网络探测(ARP 读取 + ICMP ping 扫描)。 仅对你拥有管理权限的网络使用,未经授权扫描他人网络可能违反法律法规。
🔒 该功能需要主设备权限(设备监控 / 局域网扫描 / 性能测试),请先登录主机视角。
需要主机登录 · 扫描约需 5–30 秒
局域网设备(自动发现)
IP 地址 MAC 地址 厂商 主机名 标记 来源
登录主机视角后可扫描

目标监控状态

C++ 调度器周期检测 · 每 5 秒自动刷新
这是什么?服务器每 5 秒主动"敲门"检查一批公共服务的连通性: Ping 检测网络可达(223.5.5.5 是阿里公共 DNS)、TCP 检查端口是否开放、HTTP(S) 检查网站是否正常响应。 在线 = 正常 · 离线 = 对方拒绝连接 · 超时 = 无响应。 目标分三组:核心目标计入首页健康度总分;本机可选自检(如容器内 HTTPS—— 容器部署时 TLS 由前置 Nginx 终结,8443 本就不监听)显示「未启用」不标红; fault-probe 是故意保留的演示故障探针(端口上恒无服务),显示「✓ 预期离线」, 与真实故障严格区分,不计入健康度。
目标监控状态
目标类型状态延迟 详情 / 错误最后检测

历史统计

检测次数 / 成功失败 / 失败率 / 延迟分布(内存保留最近 120 条)
历史统计
目标检测成功失败 失败率最小平均最大

服务器连接明细

每连接 IP/端口/时长/收发流量/请求数
服务器连接明细
#ID客户端时长RX TX请求数类型状态

网卡与 TCP 状态

实时读取 /proc/net/dev 与 /proc/net/tcp

网卡流量

TCP 状态

说明:目标列表由 config/targets.json 配置(type 支持 ping / tcp / http(s)), Scheduler 线程每 interval 秒把全部目标并发提交到线程池检测(支持 timeout 与 retry), 核心检测逻辑全部由 C++ 完成。ping 使用 ICMP(/bin/ping 子进程);tcp 为非阻塞 connect + poll; http/https 走真实 DNS → TCP → TLS 握手 → HTTP 请求链路并分段计时。
🔒 性能实测需要主设备权限(需先创建主机视角并登录)。
尚未测试 —— 登录主机视角后点击按钮发起第一次实测(约 30 秒),本页不预留任何结果

压测对象是本仓库内置的 TCP / HTTP 服务与静态文件,不是第三方站点;结果只反映云机到本站链路的处理能力,不能当作通用网络基准。

这张表在测什么?用压测脚本 scripts/benchmark.py 在服务器本机启动一个压测客户端, 以 16 个并发连接持续 5 秒反复请求同一个静态文件,然后统计服务器在 5 种并发模型下的表现。 请求走本机回环(127.0.0.1,不经过外部网络),所以它衡量的是服务器软件自身的调度与 I/O 开销, 而不是你家宽带的速度。

每一列的含义: Requests = 5 秒内完成的总请求数; RPS = 每秒完成的请求数(吞吐量,越高越好); 平均 / P95 / P99 (ms) = 请求耗时。平均是"一般感受",P95/P99 是"最差的 5%/1% 请求也不慢于多少毫秒"—— P99 更能暴露卡顿:平均值很低但 P99 很高,说明偶发掉队; CPU % = 压测期间服务器进程平均占用一个核的百分比; RSS KB = 进程峰值内存占用。

五行模式的区别: epoll LT / ET 是两种事件通知方式:LT(水平触发,默认)"没处理完会一直提醒",稳妥; ET(边缘触发)"只在状态变化时提醒一次",代码必须一次把数据读写完,理论上更省系统调用; 0 workers 表示不用线程池,Reactor 单线程亲自读文件、拼响应(同步基线); 1 / 2 workers 把文件读取和响应拼装交给线程池,Reactor 专职收发事件; keep-alive 表示一个连接可以连续发多个请求,省去每个请求一次的 TCP 三次握手。

怎么读这张表:重点看三组对比—— ① 0 workers → 2 workers:线程池带来的吞吐提升; ② LT → ET:事件模型差异在本机场景下是否明显; ③ 短连接 → keep-alive:连接复用省掉握手的收益(延迟通常显著下降)。 每台机器的绝对数值不同(CPU、文件大小都会影响),但相对趋势在任何机器上是一致的。
已实现能力
模式 Requests RPS 平均 ms P95 ms P99 ms CPU % RSS KB
尚无测试结果
点击上方「在当前主机开始实测」,服务器才会真实压测并回传第一批数据
测试脚本为 scripts/benchmark.py,仅使用 Python 标准库。 短连接模式每次请求新建 TCP 连接;keep-alive 模式每个客户端复用一条连接。 固定 5 秒、并发 16,服务器单独运行,五行数据来自同环境同批次实测。 数据为 WSL2 本地单次快照,非生产容量承诺。

我的设备

由你的浏览器采集并上报 · 云机硬件自检已迁至「监控台 → 节点自检」

你这台设备

由你的浏览器主动采集并上报 · 需你先授权 · 可随时撤回并删除 👤 你的设备

云机硬件自检

读自云服务器本机(容器内的 /proc、/sys)· 已在监控台的「节点自检」中 ☁️ 云机数据

节点自检

CPU / 内存 / 内核 / 网卡 / ARP · 物理链路 carrier · 一键逐段排障

前往监控台 →
为什么挪走:HTTP 是请求-响应模型,服务端只能读到自己所在机器的 /proc 与 /sys——放在访客页面上,这组数字会被当成"我这台电脑"。 访客侧的正确做法是反向的:由浏览器采集、经你授权后上报,也就是上面「你这台设备」那一栏。 云机自身的硬件与链路自检属于节点运维,已随之迁到监控台的「节点自检」。

设备接入

两条真实接入路径:网络设备管理通道 · 计算节点 Agent;不做模拟接入

路径一 · 网络设备管理通道

用网线连通交换机/路由器的管理 IP,抓 SSH(22)/Telnet(23) 横幅识别厂商

输入管理 IP 后开始探测

路径二 · 计算节点 Agent 接入

Agent 通过 --connect-type 指定接入方式;每 5 秒从 Collector 实时同步在线状态
仅用于生成下方启动命令,不会自动启动 Agent
注意:仅仅打开本页面不算接入。计算节点必须真实启动 Agent 并在 Collector(9090)注册成功, 对应接入方式卡片才会亮起绿点并列出节点;在线节点达到 ≥1 后,左侧「监控台」才可点击进入。

本机自检(这不是集群节点接入)

看清楚区分:要看你这台电脑的 CPU / 内存 / 屏幕 / 网络,请用右上角账户设置里的「我的设备」(浏览器采集、需授权); 要看云服务器本机的 CPU / 内存 / 网卡 / 链路,请用监控台的「节点自检」。两者都不是集群节点接入, 不会注册为 AIDC 节点,也不会出现在上方接入方式里。

云服务器节点自检 →
识别原理:路径一由服务器对目标设备的 22(SSH)与 23(Telnet)管理端口发起真实 TCP 连接, 抓取登录横幅(banner)并按特征识别厂商——华为 VRP、H3C Comware、Cisco IOS、Juniper、OpenSSH/Dropbear 等, 无需账号密码,也不改动设备配置。完整 SSH 命令行管理(批量下发配置、采集运行状态)需引入 libssh,属于后续 AIDC 阶段计划。