You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# bind socket adressbind_address="::"# socket listent port, default is 8080listen_port=80# you can specify the number of worker threads. default is 1# auto: number of cpu cores, or more than 0 as desired# increasing the count increases memory usageworker_threads=1# base api url /{base_url}/routesbase_url="backend"# ipinfo.io API key, If the api-key works, the priority is with the api, if not with the offline databaseipinfo_api_key=""# set directory of speedtest web front to server load on `/`. If it is empty, default web will be returnedassets_path="./assets"# Write without suffix separator# password for logging into statistics page, fill this to enable stats pagestats_password=""# redact IP addressesredact_ip_addresses=false# set telemetry result image theme : light, dark# default is lightresult_image_theme="light"# database config for : mysql, postgres, sqlite, memory, or disable by write none# after restarting the service, the in-memory database is reset# if none is specified, no telemetry/stats will be recorded, and no result JPG will be generateddatabase_type="sqlite"database_hostname="localhost"database_name="speedtest_db"database_username=""database_password=""# if you use `sqlite` as database, set database_file to database file locationdatabase_file="speedtest.db"# enable and use TLS option; if enable it, you need to prepare certificates and private keysenable_tls=falsetls_cert_file=""tls_key_file=""
Activity
maddie commentedon Aug 11, 2026
分析结论(已核对代码并本地复现):
现象:同一服务器,v1.0.12 上传 1040.07 Mbps,v1.0.13 仅 0.55 Mbps。
根因:v1.0.13 重构了上传逻辑(commit 9fc41f4):v1.0.12 是单请求无限循环发送 payload;v1.0.13 改为每个请求只发送固定 uploadSize 字节、完成后通过 uploadDone 触发新请求。当服务器处理/响应行为与这个模型不匹配时(例如响应时机、连接复用),后续请求不会持续发出,导致总字节数极小。
当前状态:master 已合入 #123(修复了字节计数器数据竞争、上传结束时不等在途请求就读数、管道下无输出等问题),但未改变上述请求模型。我用 Go/Python 测试服务器本地复现均正常(v1.0.13 与 master 一致),说明依赖 librespeed-rs 的具体行为。
建议:
yjd commentedon Aug 11, 2026
1, 请用最新 master 构建(或下个 release)// 最新编译版哪里下载?
2, 服务端使用版本 https://github.com/librespeed/speedtest-rust/releases/tag/v1.4.0
使用配置
maddie commentedon Aug 17, 2026
duplicate of #42
fix: send Content-Length on upload requests instead of chunked (#143)
maddie commentedon Aug 17, 2026
更新:根因已完全定位并修复(两端)。
根因:客户端上传 body 经 io.TeeReader 计数后无法探测长度,Go 自动改用 Transfer-Encoding: chunked;librespeed-rs 的手写 HTTP 解析器不解码 chunked,按固定 1024 字节块读原始流,有限 payload 发完后差几个字节凑不满块、客户端 keep-alive 不关连接 → 服务器永久阻塞不响应 → 请求永不完成 → 上传只发一个 payload(1 MiB / 15s ≈ 0.55 Mbps)。
修复:
实测:修复后的客户端 + 修复后的 rust 后端,回环上传 23192 Mbps(修复前 0.55 Mbps);chunked 上传从挂起变为 ~1ms 响应。
yjd commentedon Aug 17, 2026
@maddie 收到,谢谢!
feat(librespeed): implement real server discovery and fix upload acco…
feat(librespeed): implement real server discovery and fix upload acco…