Skip to content

给节点跑性能测试

重装一次,等半小时,你会拿到一个网址:一张说明这台机器到底是什么的页面 —— CPU、硬盘、内存、IP 的信誉、到十几个地方的速度、回国的九条线路 —— 中文、英文、法文、德文,谁看它就用谁的语言。

它是拿来贴在你卖节点的地方的,或者直接发给问"我买的是啥"的人。

页面上没有任何一项是被第三方核实过的。 它写的是机器测出来的东西,加上你自己填的东西。 这句话两个方向都要记住:正因如此它对你的机器是诚实的, 也正因如此别人发给你的页面,值多少完全取决于你信他多少。

1. 地址

这一页要做的所有事,都从这一个镜像引用开始:

ghcr.io/yinyue123/hqnode:benchmark

把一个容器重装到它上面,测试就会自己跑起来,只跑一次,在装完之后的第一次开机。 没有程序要装,没有命令要敲,没有第二步。

你的容器需要一块 /data

这次运行留下的所有东西都在那儿,包括那把之后能改这张页面的唯一钥匙, 而 /data 是重装唯一不抹掉的地方。没有它你只能发布一次,之后永远改不了。 容器页面上会写你有没有 —— 你马上要按的那个按钮,上面写的就是保留 /data

2. 在容器页面上重装

容器页面上的 重装… 会打开一个对话框,三栏。能填地址的是"我自己的镜像"这一栏:

我自己的镜像镜像市场这台主机上的归档会清空 /。/data 是另一块盘,会保留。镜像引用ghcr.io/yinyue123/hqnode:benchmark下载的量算在这个容器的流量里 —— 42 MB。输入 bench 以确认bench取消重装,保留 /data

把地址贴进去,在下面那一格里输入这个容器自己的名字,按 重装,保留 /data。 大约一分钟后容器就回来了,跑在这个测试镜像上,测试已经开始了。

这一栏要出现,有两个前提:机器的策略得允许租户自带镜像, 容器得有一块自己的盘。缺哪一个,对话框会说;两个都是你的主机方能改的。

或者在容器里开个 shell

reinstall 是你现在这个系统自带的命令,所以下面这条就是同一件事, 从容器现在的样子里敲出来:

reinstall ref ghcr.io/yinyue123/hqnode:benchmark

重建过程中你的 SSH 会断。那是重装本身,不是出错。

为什么是重装,而不是"装个程序"

镜像本身就是那个程序。检测需要的每一个工具都已经编好放在里面了, 所以整个过程只下载测速用的数据,别的什么都不下 —— 不会有包管理器在磁盘测试跑到一半的时候插进来,把磁盘成绩搅乱。

回去要按按钮,不是敲命令

这个镜像没有带 reinstall —— 它是个跑分环境,不是通用系统。 装过去之后想回 Debian 或 Alpine,是容器页面上的 重装 按钮,走"镜像市场"那一栏。 东西没卡住,只是没法再从容器里面操作了。

3. 等着,想看就看

二十到五十分钟,会走掉几个 GB的测速流量,算在你容器的额度里。 小套餐先看一眼额度还剩多少。

日志的最后一行就是你的网址,之后任何时候 nq-shop show 也会把它打出来:

tail -f /data/nodequality/first-boot.log
published as https://shop.hqno.de/r/xxxxxxxxxx

整个测试只跑一次。判断依据是有没有已发布的页面, 所以跑到一半挂掉的话,下次开机会重来;已经成功的则永远不会重跑 —— 重启容器不会让它再测一遍。

4. 剩下的事,一个界面就够了

SSH 进这个容器,你拿到的不是 shell,是这个:

  节点体检报告

  页面   https://shop.hqno.de/r/m9Te5tPag6
  语言   ?lang=zh · en · fr · de
  状态   已发布

  可以改的
   1  节点名称   HKT 香港家宽节点
   2  页面标签   AS4760 HKT · PCCW IMS · 原生 IP · 家宽
   3  套餐价格   1C / 1 GB ¥49 · 2C / 2 GB ¥89 · 4C / 4 GB ¥169
   4  联系方式   @nodedeck · [email protected] · +852 5000 0000
   5  售前交付   每日 10:00-22:00 HKT · 下单后 5 分钟
   6  页面备注   页面自带的默认文案
   7  页面语言   zh

  做点什么
   p  保存并发布(后台跑,关掉 SSH 也不影响)
   b  重新跑一遍测试(二十到五十分钟,几个 GB 流量)
   s  开个 shell
   q  退出

那个地址是一张真页面 —— 样例节点,每一节都填满了,四种语言都能看:中文EnglishFrançaisDeutsch。换成你自己的数字,你的页面就长这样。

输入序号,它一次问你一个问题,并且把现在的值显示给你看。 要改就输入新的,不改就直接回车。 整个向导只有这一条规则。

三件它替你处理掉的事:

价格是数字你输入 49 就行。年付省多少是从两个数字算出来的,四种语言都会自己印出来
一个答案变四种语言它只问中文和英文。法文德文退回英文,再退回中文
@ 是查表的起手式电报账号输入 @yourname,它会自动转义存起来,符号不会丢

每答一个问题就立刻写进磁盘。没有"保存"这一步要你记得, 中途关掉终端,已经输入的东西一个都不会丢。

背后那个文件还是 /data/nodequality/shop.json,还是你的, 想用 SFTP 手改也行 —— 但这一页不会再要求你那么做。

5. 发布,不用等着它

p 会把页面重新拼一遍,然后在后台发布。测试不会重跑,网址也不变 —— /data 里那把钥匙就是"这张页面归你改"的凭据, 所以第二次发布是盖在第一张上,而不是又开一张新的。

发布要花几秒到一分钟的单核计算量:这个服务不要账号,收的是计算工作量。 它和你的 SSH 会话是脱开的,所以你可以直接关掉终端。 下次登录进来,界面上就写着它跑到哪了:

  状态   发布中 · 算工作量 75%(已试 3145728 次)· 12 秒前开始

跑完之后,网址就又回到界面最上面那一行。

然后就可以把容器关了

页面发布完之后,没有任何东西需要继续跑 —— 页面在服务端,不在你的机器上。 把容器停掉,它就不再占 CPU 和内存。想改价格的时候再开机就行: /data 里你填的东西、测出来的数、还有那把钥匙,都还在。

钥匙就是页面本身

/data/nodequality/credentials.json 是唯一能替换你这张页面的东西。 丢了的话,页面会一直挂在那儿、一直能看、永远改不动。 它能扛过重装,因为它在 /data 里;扛不过删容器。 页面重要的话,把它备份出来。

6. 如果你更想敲命令

向导只是一个程序的门面,它的每一步都是一条独立的命令。 菜单里按 s 就是一个普通 shell,hqnode exec <名字> sh 也一样:

nq-shop status之前起的那个发布跑到哪了
nq-shop bench只重跑 CPU 跑分,两分钟左右
nq-shop route只重跑回国的九条线路
nq-shop collect --skip net除了那几个 GB 之外的全套
nq-shop build用磁盘上现有的数据重建页面
nq-shop publish推上去,还是同一个网址

hqnode exec 六十秒就放弃

如果你是从宿主机这边驱动,而不是在容器里, hqnode exec 会在一分钟后返回 context deadline exceeded,还把锅甩给 agent。 命令本身在容器里照样跑,你丢的只是输出。 长命令要么用 detached 方式启动,要么用向导 —— 它所有耗时的动作本来就是后台跑的。

7. 这张页面不会告诉你的事

  • 上面没有一个分数是读者能自己核实的。 CPU 那几块来自 sysbench、7-Zip、 OpenSSL 和 stress-ng,没有一个会把结果发布到任何公开的地方。 它们跟另一张同样方式生成的页面比是诚实的,跟别的东西比则毫无意义。
  • 多线程那个分数是偏乐观的。 它取的是 cgroup 上限, 而在 hqnode 上那是你的突发额度,不是卖给你的核数。
  • 自由文本保持采集时的语言。 AS 名、城市名不会翻译; 固定词表 —— 是/否、通/不通、风险等级 —— 会翻。
  • 线路那两节要求路由真的能追踪。 容器里是能追的,但只能走 UDP; 你的宿主机如果把 UDP 过滤掉了,这两节会是空的,而不是错的。

接下来

  • 使用你的容器 —— 重装到底做了什么, 以及为什么 /data 是活下来的那部分
  • 公网端口 —— 如果你想把这张页面挂到自己的域名上