From 84670f7be17c8c93a9af9777b5d6ae35afb92c53 Mon Sep 17 00:00:00 2001 From: k2safe Date: Wed, 23 Sep 2026 10:54:14 +0800 Subject: [PATCH] docs: record HTTP2 mixed soak and Linux flow control acceptance --- CHANGELOG.md | 3 +- README.md | 4 +- ROADMAP.md | 8 +- performance/http2FlowControlLinux.json | 80 + performance/http2FlowControlLinux.txt | 53 + performance/http2MixedSoakLinux.json | 3681 ++++++++++++++++++++++++ performance/http2MixedSoakLinux.txt | 265 ++ transport/native/HTTP2.md | 14 +- 8 files changed, 4098 insertions(+), 10 deletions(-) create mode 100644 performance/http2FlowControlLinux.json create mode 100644 performance/http2FlowControlLinux.txt create mode 100644 performance/http2MixedSoakLinux.json create mode 100644 performance/http2MixedSoakLinux.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index a7c0737..d9a7fb6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## Unreleased - 新增 `TestTLSMixedSoak` 与 `verifyHTTP2.py --scenario mixed`:8 条 TLS 连接、128 个 worker 持续混跑普通请求、慢上传和慢下载,校验 TLS/HTTP2、requestId、响应内容及传输摘要;分别统计三类请求与每条连接覆盖情况,并记录退出/GC 后的回收数据。 +- 完成 Linux amd64 30 分钟多连接慢客户端混合长测:53,191,687 次请求(含 106,971 次慢上传、5,588 次慢下载),0 失败与协议错误;采样 RSS 峰值约 116.6 MiB,连接/请求、goroutine 和 FD 回收,释放测试数据后存活堆约 450 KiB。保留完整日志、120 份采样及每条连接的分类计数;HTTP/2 回源代理联调仍待验收。 - 新增独立 `transport/http2` 实验 Runner:支持 h2c/TLS h2、连接上限、全局请求并发闸门、GOAWAY 排空、RST_STREAM 单流取消和生命周期统计;不改变 native HTTP/1.1 默认路径。 - HTTP/2 实验 Runner 增加标准 1 MiB 头部上限、默认 8 MiB 请求体上限、128 路同连接多路复用、2 MiB 慢读取流控验收、协议错误、RST_STREAM 和 GOAWAY 帧计数;已声明超限请求在进入业务 handler 前返回 413。 - 新增可配置时长的 HTTP/2 TLS soak:默认 3 秒,Linux 验收可通过 `GO_OMNI_HTTP2_SOAK_DURATION=30m` 覆盖,混合验证 128 路 stream、慢 handler、请求体、Keep-Alive 和退出回收。 @@ -10,7 +11,7 @@ - 补充 HTTP/2 慢响应流窗口为零时的隔离与恢复验收:同连接 204、另一连接带 body 响应、WINDOW_UPDATE 恢复发送及 RST_STREAM 释放请求槽位;补充 TLS 握手未完成时的连接上限拒绝、握手超时回收和正常请求恢复。 - 补充连接级接收窗口耗尽测试:保持 stream 信用充足,消费完 65,535 字节连接窗口后确认大响应暂停,同连接 204 和另一条连接仍可完成,连接级 WINDOW_UPDATE 恢复后继续复用;补充零窗口阻塞写在关闭超时后解除阻塞、取消请求与连接回收的验收。 - 新增 `scripts/verifyHTTP2.py`,固定在 Go 1.25 Linux 容器中运行 HTTP/2 TLS 长测;默认使用普通模式,`--race` 默认运行 60 秒。容器默认限制为 2 核、2 GiB 内存、256 个进程/线程,带总时限、中断清理和日志大小限制。 -- 完成 Linux amd64 单 TLS 连接、128 个 worker 的 30 分钟 HTTP/2 长测:58,102,476 次请求,0 失败与协议错误,采样 RSS 峰值约 22.6 MiB(包含客户端和服务端),退出后连接/请求/FD 回收;保留原始日志和 120 份采样。多连接、持续慢客户端与 HTTP/2 回源联调仍是后续门槛。 +- 完成 Linux amd64 单 TLS 连接、128 个 worker 的 30 分钟 HTTP/2 长测:58,102,476 次请求,0 失败与协议错误,采样 RSS 峰值约 22.6 MiB(包含客户端和服务端),退出后连接/请求/FD 回收;保留原始日志和 120 份采样。 - native TLS 明确限制 ALPN 为 `http/1.1`:缺省自动宣告该协议,误配置 `h2` 等未实现协议时在启动阶段报错。 - native `Server.Stats()` 新增连接和请求过载拒绝计数;新增可信代理配置,访问日志只在 socket 对端属于配置网段时解析 `X-Forwarded-For`。 - 新增 transport-neutral `metrics` 包,支持请求数、错误数、in-flight、累计耗时和状态分布,并可直接注册 `/metrics` 接口。 diff --git a/README.md b/README.md index 01f24ae..becc370 100644 --- a/README.md +++ b/README.md @@ -234,7 +234,9 @@ HTTP/2 仍是显式 opt-in 实验适配器,不会改变 native 的 HTTP/1.1 该脚本默认把测试容器限制为 2 核、2 GiB 内存(禁用 swap)、256 个进程/线程,整个命令最多运行 40 分钟,中断和超时会清理本次容器。这些限制可用 `--cpus`、`--memory-mb`、`--pids-limit`、`--wall-timeout` 调整;共享服务器应先用 `--duration 60s` 短测,再逐步延长。每 15 秒输出的堆、RSS 和 FD 统计包含同一进程内的客户端与服务端。 -Linux amd64 已完成 30 分钟、单 TLS 连接、128 个 worker 的普通模式长测:58,102,476 次请求,0 失败、0 协议错误,采样 RSS 峰值约 22.6 MiB,连接/活动请求归零且 FD 回到基线。完整采样和原始日志见 [HTTP/2 长测报告](performance/http2SoakLinux.json) 与 [原始日志](performance/http2SoakLinux.txt),此前的 race 对照见 [短测记录](performance/http2SmokeLinux.json)。这项结果覆盖单连接复用;多连接、持续慢客户端、连接级流控和代理 GOAWAY/排空的完整矩阵仍未完成,HTTP/2 保持实验状态。 +Linux amd64 已完成 30 分钟、单 TLS 连接、128 个 worker 的普通模式长测:58,102,476 次请求,0 失败、0 协议错误,采样 RSS 峰值约 22.6 MiB,连接/活动请求归零且 FD 回到基线。完整采样和原始日志见 [HTTP/2 长测报告](performance/http2SoakLinux.json) 与 [原始日志](performance/http2SoakLinux.txt),此前的 race 对照见 [短测记录](performance/http2SmokeLinux.json)。这项结果覆盖单连接复用。 + +多连接慢客户端场景也已完成 Linux amd64 的 30 分钟长测:8 条 TLS 连接、128 个 worker,53,079,128 次普通请求、106,971 次慢上传、5,588 次慢下载,共 53,191,687 次,0 失败与协议错误。采样 RSS 峰值约 116.6 MiB(包含客户端、服务端和下载缓冲);退出后连接/请求归零,goroutine 回到 2、FD 回到 6;释放测试数据并两次 GC 后存活堆约 450 KiB,RSS 不要求立即归还操作系统。完整 120 份采样见 [混合长测报告](performance/http2MixedSoakLinux.json) 和 [原始日志](performance/http2MixedSoakLinux.txt)。连接级窗口耗尽、WINDOW_UPDATE 恢复及零窗口写阻塞的关闭回收也已有独立测试;HTTP/2 回源代理的 GOAWAY/排空联调仍待完成,适配器保持实验状态。 在框架根目录运行: diff --git a/ROADMAP.md b/ROADMAP.md index f316d29..922d4f9 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -50,10 +50,12 @@ - 已验证 `MaxConcurrentRequests` 满载返回 503,活动请求结束后槽位释放,后续请求可以恢复处理。 - native `Stats()` 已记录连接和请求过载拒绝数;访问日志已支持可信代理网段配置,默认拒绝伪造的 `X-Forwarded-For`。 - native TLS 已明确只宣告 HTTP/1.1 ALPN;HTTP/2 暂由边缘代理终止或使用 `transport/nethttp`,已整理独立协议设计、流控和压测门槛,见 [native HTTP/2 进入条件](transport/native/HTTP2.md),完成后再接入 native。 -- 已加入独立 `transport/http2` 实验 Runner,验证 h2c/TLS h2、连接上限、全局请求并发拒绝和恢复,以及 GOAWAY 排空、RST_STREAM 单流取消和服务关闭超时;它使用 `x/net/http2` 作为临时帧/流控实现,尚未达到 native 生产协议的流控和长测门槛。 -- HTTP/2 实验已补齐头部/请求体上限、128 路同连接多路复用、慢读取流控、协议错误、RST_STREAM 与 GOAWAY 统计,并提供 `scripts/verifyHTTP2.py --duration 30m` 的 Linux TLS 长测入口;长测默认不启用 race,短时并发检查使用 `--race`(默认 60 秒)。测试容器默认限制为 2 核、2 GiB 内存、256 个进程/线程,并设总时限和退出清理;代理联调和长测结果仍是进入 native 前的门槛。 +- 已加入独立 `transport/http2` 实验 Runner,验证 h2c/TLS h2、连接上限、全局请求并发拒绝和恢复,以及 GOAWAY 排空、RST_STREAM 单流取消和服务关闭超时;它使用 `x/net/http2` 作为临时帧/流控实现,仍需完成 HTTP/2 回源代理联调,未接入 native 默认路径。 +- HTTP/2 实验已补齐头部/请求体上限、128 路同连接多路复用、慢读取流控、协议错误、RST_STREAM 与 GOAWAY 统计,并提供 `scripts/verifyHTTP2.py --duration 30m` 的 Linux TLS 长测入口;长测默认不启用 race,短时并发检查使用 `--race`(默认 60 秒)。测试容器默认限制为 2 核、2 GiB 内存、256 个进程/线程,并设总时限和退出清理;受限长测结果见下方,HTTP/2 回源代理联调仍是进入 native 前的门槛。 - 新 Linux amd64 环境在上述硬上限内完成 HTTP/2 普通模式 2 分钟与 race 模式 60 秒短测,分别为 3,885,273 和 377,788 次请求,均为 0 失败;连接/请求归零、FD 回到基线。SIGTERM、SIGHUP 和总时限退出清理已实测。报告见 [HTTP/2 短测记录](performance/http2SmokeLinux.json);此前无资源上限的 race 长测因 RSS 增长而停止,不作为通过依据。 -- 已完成受限的 HTTP/2 单连接 TLS 30 分钟长测:128 个 worker、58,102,476 次请求、0 失败及协议错误;包含客户端与服务端的采样 RSS 峰值约 22.6 MiB,连接/活动请求归零,FD 由 9 回到 6。120 份定时采样见 [HTTP/2 长测报告](performance/http2SoakLinux.json),测试提交和原始日志校验值保存在报告中。多连接与持续慢客户端混合长测、连接级流控、HTTP/2 回源的 GOAWAY/排空联调仍待完成。 +- 已完成受限的 HTTP/2 单连接 TLS 30 分钟长测:128 个 worker、58,102,476 次请求、0 失败及协议错误;包含客户端与服务端的采样 RSS 峰值约 22.6 MiB,连接/活动请求归零,FD 由 9 回到 6。120 份定时采样见 [HTTP/2 长测报告](performance/http2SoakLinux.json),测试提交和原始日志校验值保存在报告中。HTTP/2 回源的 GOAWAY/排空联调仍待完成。 +- 已完成 8 条 TLS 连接、128 个 worker 的 30 分钟混合长测:53,079,128 次普通请求、106,971 次慢上传、5,588 次慢下载,0 失败及协议错误。采样 RSS 峰值约 116.6 MiB(包含客户端和服务端),前段与最后 5 分钟 RSS 中位数分别约 111.3/110.4 MiB;退出后活动连接/请求归零,goroutine 2、FD 6 均回到基线,两次 GC 后存活堆约 450 KiB。原始日志、120 份采样、测试提交和校验值见 [混合长测报告](performance/http2MixedSoakLinux.json)。 +- 已补连接级窗口耗尽时的暂停、同连接 204/跨连接隔离、WINDOW_UPDATE 恢复和连接复用;已补零窗口写阻塞在关闭超时后的解除阻塞、请求取消与回收。Linux amd64 的 HTTP/2 全包 race、vet、build 已通过,见 [边界回归报告](performance/http2FlowControlLinux.json)。 - 新增 HTTP/2 零 stream 窗口时的慢响应隔离、WINDOW_UPDATE 恢复、RST_STREAM 取消与请求槽位回收测试;补充 TLS 半开握手占满连接上限时的及时拒绝、超时回收及正常请求恢复测试。 - 已用 16 个并发 worker 完成 3,200 次建连/断连 race 验收;MaxConnections 满载拒绝、槽位释放和 TLS 连接上限均已覆盖。 - 新增 `scripts/verifyLinux.py`,固定在 Go 1.25 Linux 容器内运行 race、vet、build 和可选 TLS/非 TLS perfcheck;perfcheck 记录堆、goroutine、连接和 Linux 文件描述符。 diff --git a/performance/http2FlowControlLinux.json b/performance/http2FlowControlLinux.json new file mode 100644 index 0000000..e93a09a --- /dev/null +++ b/performance/http2FlowControlLinux.json @@ -0,0 +1,80 @@ +{ + "status": "passed", + "testedCommit": "fa2be5e0166f1fa581a2b0c7ee2fc29c44ac2676", + "startedAt": "2026-09-23T02:50:32.502669+00:00", + "imageId": "sha256:699337d620559a59b4a2bb298ad59611e535d2ee755a34cf2d2a98f37578dc80", + "command": [ + "docker", + "run", + "--rm", + "--name", + "go-omni-http2-boundary-363c306dd46d", + "--cpus", + "2", + "--memory", + "2048m", + "--memory-swap", + "2048m", + "--pids-limit", + "256", + "--log-opt", + "max-size=10m", + "--log-opt", + "max-file=1", + "-v", + "/root/go-omni-validation:/workspace:ro", + "-w", + "/workspace", + "-e", + "GOWORK=off", + "-e", + "GOMAXPROCS=2", + "-e", + "GOPROXY=https://goproxy.cn,direct", + "golang:1.25", + "sh", + "-c", + "go version && go test -race -count=1 -timeout 2m -v ./transport/http2 && go vet ./transport/http2 && go build ./transport/http2" + ], + "wallTimeoutSeconds": 300, + "finishedAt": "2026-09-23T02:51:28.854252+00:00", + "exitCode": 0, + "logSha256": "52c96133d72ac15fa13b5784ba045a732d5ed0cf728f111481f0046407efff81", + "platform": "linux/amd64", + "goVersion": "go1.25.14", + "package": "./transport/http2", + "checks": [ + "race", + "vet", + "build" + ], + "passedTests": [ + "TestTLSConnectionLimitRecoversAfterHandshakeTimeout", + "TestSlowResponseStreamIsolationAndRecovery", + "TestConnectionWindowIsolationAndRecovery", + "TestShutdownReleasesFlowControlledWriter", + "TestShutdownSendsGoAwayAndDrains", + "TestRSTStreamCancelsOnlyOneRequest", + "TestCanceledServeContextWaitsForShutdownDeadline", + "TestTLSMixedSoak", + "TestServerHandlesH2CRequest", + "TestServerEnforcesGlobalRequestLimitAndRecovers", + "TestServerRejectsBodyAboveLimitAndRecovers", + "TestServerRejectsHeadersAboveLimitAndRecovers", + "TestServerMultiplexes128Streams", + "TestServerStreamsLargeBodyWithFlowControl", + "TestServerTLSUsesH2ALPN", + "TestTLSSoak" + ], + "notes": [ + "Sequentially run after the 30-minute mixed soak; limited to 2 CPUs, 2048 MiB RAM with no swap, and 256 tasks.", + "The working tree was clean at testedCommit and mounted read-only. The supervisor enforced a 300-second wall timeout and removed only its own container.", + "Malformed-frame and header-limit tests deliberately trigger HTTP/2 error logs; each corresponding test passed.", + "Race-detector memory in this regression log is not a production memory baseline. Ordinary-mode mixed-soak measurements are recorded separately." + ], + "postRunCheck": { + "checkedAt": "2026-09-23T02:53:33.308077+00:00", + "preExistingContainersStillRunning": 7, + "remainingHTTP2ValidationContainers": [] + } +} diff --git a/performance/http2FlowControlLinux.txt b/performance/http2FlowControlLinux.txt new file mode 100644 index 0000000..bf4af8a --- /dev/null +++ b/performance/http2FlowControlLinux.txt @@ -0,0 +1,53 @@ +go version go1.25.14 linux/amd64 +go: downloading golang.org/x/net v0.25.0 +go: downloading golang.org/x/text v0.15.0 +=== RUN TestTLSConnectionLimitRecoversAfterHandshakeTimeout +--- PASS: TestTLSConnectionLimitRecoversAfterHandshakeTimeout (1.12s) +=== RUN TestSlowResponseStreamIsolationAndRecovery +--- PASS: TestSlowResponseStreamIsolationAndRecovery (0.00s) +=== RUN TestConnectionWindowIsolationAndRecovery +--- PASS: TestConnectionWindowIsolationAndRecovery (0.00s) +=== RUN TestShutdownReleasesFlowControlledWriter +--- PASS: TestShutdownReleasesFlowControlledWriter (0.10s) +=== RUN TestShutdownSendsGoAwayAndDrains +--- PASS: TestShutdownSendsGoAwayAndDrains (0.00s) +=== RUN TestRSTStreamCancelsOnlyOneRequest +--- PASS: TestRSTStreamCancelsOnlyOneRequest (0.00s) +=== RUN TestCanceledServeContextWaitsForShutdownDeadline +--- PASS: TestCanceledServeContextWaitsForShutdownDeadline (0.10s) +=== RUN TestTLSMixedSoak + mixedSoak_test.go:37: phase=before elapsed=1ms requests=0 failures=0 heapBytes=2409792 rssBytes=37199872 goroutines=2 fileDescriptors=6 stats={AcceptedConnections:0 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:0 ActiveRequests:0} + mixedSoak_test.go:38: scenario=mixed connections=8 workersPerConnection=16 uploadBytes=262144 uploadChunkBytes=4096 uploadDelay=2ms downloadBytes=8388608 downloadChunkBytes=65536 downloadDelay=20ms + mixedSoak_test.go:190: phase=after elapsed=5.655s requests=10489 failures=0 heapBytes=62134360 rssBytes=470847488 goroutines=2 fileDescriptors=6 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:4 RSTStreams:0 GoAwayFrames:1 ActiveConnections:0 ActiveRequests:0} + mixedSoak_test.go:124: mixedTotals phase=after health=10356 slowUploads=117 slowDownloads=16 uploadedBytes=30670848 downloadedBytes=134217728 serverFailures=0 + mixedSoak_test.go:196: connection=0 health=1318 slowUploads=15 slowDownloads=2 + mixedSoak_test.go:196: connection=1 health=1228 slowUploads=14 slowDownloads=2 + mixedSoak_test.go:196: connection=2 health=1194 slowUploads=14 slowDownloads=2 + mixedSoak_test.go:196: connection=3 health=1322 slowUploads=15 slowDownloads=2 + mixedSoak_test.go:196: connection=4 health=1331 slowUploads=14 slowDownloads=2 + mixedSoak_test.go:196: connection=5 health=1342 slowUploads=15 slowDownloads=2 + mixedSoak_test.go:196: connection=6 health=1321 slowUploads=15 slowDownloads=2 + mixedSoak_test.go:196: connection=7 health=1300 slowUploads=15 slowDownloads=2 + mixedSoak_test.go:209: phase=afterReclaim elapsed=5.661s requests=10489 failures=0 heapBytes=440880 rssBytes=468951040 goroutines=2 fileDescriptors=6 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:4 RSTStreams:0 GoAwayFrames:1 ActiveConnections:0 ActiveRequests:0} +--- PASS: TestTLSMixedSoak (5.66s) +=== RUN TestServerHandlesH2CRequest +--- PASS: TestServerHandlesH2CRequest (0.00s) +=== RUN TestServerEnforcesGlobalRequestLimitAndRecovers +--- PASS: TestServerEnforcesGlobalRequestLimitAndRecovers (0.00s) +=== RUN TestServerRejectsBodyAboveLimitAndRecovers +--- PASS: TestServerRejectsBodyAboveLimitAndRecovers (0.00s) +=== RUN TestServerRejectsHeadersAboveLimitAndRecovers +2026/09/23 02:51:04 http2: server connection error from 127.0.0.1:36276: connection error: COMPRESSION_ERROR +--- PASS: TestServerRejectsHeadersAboveLimitAndRecovers (1.00s) +=== RUN TestServerMultiplexes128Streams +--- PASS: TestServerMultiplexes128Streams (0.02s) +=== RUN TestServerStreamsLargeBodyWithFlowControl +--- PASS: TestServerStreamsLargeBodyWithFlowControl (0.16s) +=== RUN TestServerTLSUsesH2ALPN +--- PASS: TestServerTLSUsesH2ALPN (0.14s) +=== RUN TestTLSSoak + soak_test.go:26: phase=before elapsed=0s requests=0 failures=0 heapBytes=1497944 rssBytes=391569408 goroutines=2 fileDescriptors=6 stats={AcceptedConnections:0 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:0 ActiveRequests:0} + soak_test.go:159: phase=after elapsed=3.122s requests=18182 failures=0 heapBytes=4739552 rssBytes=238292992 goroutines=3 fileDescriptors=6 stats={AcceptedConnections:1 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:1 RSTStreams:0 GoAwayFrames:0 ActiveConnections:0 ActiveRequests:0} +--- PASS: TestTLSSoak (3.12s) +PASS +ok git.yuntuo.hk/k2safe/go-omni/transport/http2 12.478s diff --git a/performance/http2MixedSoakLinux.json b/performance/http2MixedSoakLinux.json new file mode 100644 index 0000000..eecf726 --- /dev/null +++ b/performance/http2MixedSoakLinux.json @@ -0,0 +1,3681 @@ +{ + "createdAt": "2026-09-23T02:50:49.290795+00:00", + "status": "passed", + "scenario": "multipleTLSConnectionsWithPacedUploadsAndDownloads", + "testedCommit": "dfe8a1a9af983b42cef3024e23b9c3219a169330", + "startedAt": "2026-09-23T02:19:18.582897+00:00", + "finishedAt": "2026-09-23T02:49:44.325941+00:00", + "image": "golang:1.25", + "imageId": "sha256:699337d620559a59b4a2bb298ad59611e535d2ee755a34cf2d2a98f37578dc80", + "goVersion": "go1.25.14", + "platform": "linux/amd64", + "connections": 8, + "workersPerConnection": 16, + "workers": 128, + "gomaxprocs": 2, + "workload": { + "healthWorkersPerConnection": 14, + "uploadWorkersPerConnection": 1, + "downloadWorkersPerConnection": 1, + "uploadBytes": 262144, + "uploadChunkBytes": 4096, + "uploadDelayMilliseconds": 2, + "downloadBytes": 8388608, + "downloadChunkBytes": 65536, + "downloadDelayMilliseconds": 20 + }, + "command": [ + "python3", + "scripts/verifyHTTP2.py", + "--scenario", + "mixed", + "--goproxy", + "https://goproxy.cn,direct", + "--duration", + "30m", + "--timeout", + "35m", + "--wall-timeout", + "2400", + "--cpus", + "2", + "--memory-mb", + "2048" + ], + "containerLimits": { + "nanoCpus": 2000000000, + "memoryBytes": 2147483648, + "memoryAndSwapBytes": 2147483648, + "pidsLimit": 256 + }, + "exitCode": 0, + "logSha256": "d4ff4bc3d9e87c8cb309128e1aad6bec61d4fc2dc94ffa57e3d9b6ed1d85201d", + "requests": 53191687, + "failures": 0, + "elapsedSeconds": 1802.635, + "completedWorkloads": { + "phase": "after", + "health": 53079128, + "slowUploads": 106971, + "slowDownloads": 5588, + "uploadedBytes": 28041805824, + "downloadedBytes": 46875541504, + "serverFailures": 0 + }, + "connectionCoverage": [ + { + "connection": 0, + "health": 6632549, + "slowUploads": 13372, + "slowDownloads": 698 + }, + { + "connection": 1, + "health": 6629530, + "slowUploads": 13371, + "slowDownloads": 699 + }, + { + "connection": 2, + "health": 6636544, + "slowUploads": 13376, + "slowDownloads": 699 + }, + { + "connection": 3, + "health": 6634170, + "slowUploads": 13369, + "slowDownloads": 698 + }, + { + "connection": 4, + "health": 6636236, + "slowUploads": 13368, + "slowDownloads": 698 + }, + { + "connection": 5, + "health": 6640096, + "slowUploads": 13371, + "slowDownloads": 698 + }, + { + "connection": 6, + "health": 6634043, + "slowUploads": 13372, + "slowDownloads": 699 + }, + { + "connection": 7, + "health": 6635960, + "slowUploads": 13372, + "slowDownloads": 699 + } + ], + "sampledPeakRssBytes": 122314752, + "sampledPeakHeapBytes": 102154656, + "earlySteadyMedianRssBytes": 116746240.0, + "lastFiveMinutesMedianRssBytes": 115740672, + "before": { + "phase": "before", + "elapsedSeconds": 0.0, + "requests": 0, + "failures": 0, + "heapBytes": 170136, + "rssBytes": 8613888, + "goroutines": 2, + "fileDescriptors": 6, + "stats": { + "acceptedConnections": 0, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 0, + "activeRequests": 0 + } + }, + "after": { + "phase": "after", + "elapsedSeconds": 1802.635, + "requests": 53191687, + "failures": 0, + "heapBytes": 44586352, + "rssBytes": 97927168, + "goroutines": 2, + "fileDescriptors": 6, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 5, + "rstStreams": 0, + "goAwayFrames": 1, + "activeConnections": 0, + "activeRequests": 0 + } + }, + "afterReclaim": { + "phase": "afterReclaim", + "elapsedSeconds": 1802.639, + "requests": 53191687, + "failures": 0, + "heapBytes": 461176, + "rssBytes": 95506432, + "goroutines": 2, + "fileDescriptors": 6, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 5, + "rstStreams": 0, + "goAwayFrames": 1, + "activeConnections": 0, + "activeRequests": 0 + } + }, + "samples": [ + { + "phase": "running", + "elapsedSeconds": 15.143, + "requests": 444111, + "failures": 0, + "heapBytes": 41226328, + "rssBytes": 100597760, + "goroutines": 359, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 7 + }, + "workloads": { + "health": 443187, + "slowUploads": 884, + "slowDownloads": 40, + "uploadedBytes": 231735296, + "downloadedBytes": 335544320, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 30.143, + "requests": 886889, + "failures": 0, + "heapBytes": 76939344, + "rssBytes": 119885824, + "goroutines": 351, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 885025, + "slowUploads": 1776, + "slowDownloads": 88, + "uploadedBytes": 465567744, + "downloadedBytes": 738197504, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 45.143, + "requests": 1327236, + "failures": 0, + "heapBytes": 98442464, + "rssBytes": 119926784, + "goroutines": 348, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 15 + }, + "workloads": { + "health": 1324437, + "slowUploads": 2663, + "slowDownloads": 136, + "uploadedBytes": 698089472, + "downloadedBytes": 1140850688, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 60.143, + "requests": 1768857, + "failures": 0, + "heapBytes": 99328992, + "rssBytes": 119402496, + "goroutines": 359, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 15 + }, + "workloads": { + "health": 1765116, + "slowUploads": 3557, + "slowDownloads": 184, + "uploadedBytes": 932446208, + "downloadedBytes": 1543503872, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 75.143, + "requests": 2211456, + "failures": 0, + "heapBytes": 60732216, + "rssBytes": 90337280, + "goroutines": 357, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 16 + }, + "workloads": { + "health": 2206781, + "slowUploads": 4445, + "slowDownloads": 232, + "uploadedBytes": 1165230080, + "downloadedBytes": 1946157056, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 90.143, + "requests": 2652108, + "failures": 0, + "heapBytes": 53063064, + "rssBytes": 85688320, + "goroutines": 350, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 2646501, + "slowUploads": 5335, + "slowDownloads": 272, + "uploadedBytes": 1398538240, + "downloadedBytes": 2281701376, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 105.143, + "requests": 3094082, + "failures": 0, + "heapBytes": 81458456, + "rssBytes": 117563392, + "goroutines": 343, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 3087534, + "slowUploads": 6228, + "slowDownloads": 320, + "uploadedBytes": 1632632832, + "downloadedBytes": 2684354560, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 120.143, + "requests": 3532884, + "failures": 0, + "heapBytes": 86878776, + "rssBytes": 119468032, + "goroutines": 292, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 12 + }, + "workloads": { + "health": 3525398, + "slowUploads": 7118, + "slowDownloads": 368, + "uploadedBytes": 1865940992, + "downloadedBytes": 3087007744, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 135.143, + "requests": 3974010, + "failures": 0, + "heapBytes": 98205016, + "rssBytes": 119029760, + "goroutines": 313, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 15 + }, + "workloads": { + "health": 3965593, + "slowUploads": 8008, + "slowDownloads": 416, + "uploadedBytes": 2099249152, + "downloadedBytes": 3489660928, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 150.143, + "requests": 4415820, + "failures": 0, + "heapBytes": 90842632, + "rssBytes": 109375488, + "goroutines": 356, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 16 + }, + "workloads": { + "health": 4406456, + "slowUploads": 8900, + "slowDownloads": 464, + "uploadedBytes": 2333081600, + "downloadedBytes": 3892314112, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 165.143, + "requests": 4859795, + "failures": 0, + "heapBytes": 46212528, + "rssBytes": 75120640, + "goroutines": 382, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 4849501, + "slowUploads": 9790, + "slowDownloads": 504, + "uploadedBytes": 2566389760, + "downloadedBytes": 4227858432, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 180.143, + "requests": 5302557, + "failures": 0, + "heapBytes": 59378560, + "rssBytes": 103960576, + "goroutines": 323, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 5291324, + "slowUploads": 10681, + "slowDownloads": 552, + "uploadedBytes": 2799960064, + "downloadedBytes": 4630511616, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 195.143, + "requests": 5745355, + "failures": 0, + "heapBytes": 65581312, + "rssBytes": 120012800, + "goroutines": 326, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 5733185, + "slowUploads": 11571, + "slowDownloads": 600, + "uploadedBytes": 3033268224, + "downloadedBytes": 5033164800, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 210.143, + "requests": 6184725, + "failures": 0, + "heapBytes": 83765136, + "rssBytes": 119152640, + "goroutines": 365, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 16 + }, + "workloads": { + "health": 6171616, + "slowUploads": 12461, + "slowDownloads": 648, + "uploadedBytes": 3266576384, + "downloadedBytes": 5435817984, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 225.143, + "requests": 6627613, + "failures": 0, + "heapBytes": 83719272, + "rssBytes": 119508992, + "goroutines": 326, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 16 + }, + "workloads": { + "health": 6613566, + "slowUploads": 13352, + "slowDownloads": 696, + "uploadedBytes": 3500146688, + "downloadedBytes": 5838471168, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 240.143, + "requests": 7072007, + "failures": 0, + "heapBytes": 40007456, + "rssBytes": 83099648, + "goroutines": 366, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 11 + }, + "workloads": { + "health": 7057021, + "slowUploads": 14246, + "slowDownloads": 740, + "uploadedBytes": 3734503424, + "downloadedBytes": 6207569920, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 255.143, + "requests": 7515397, + "failures": 0, + "heapBytes": 52621088, + "rssBytes": 88940544, + "goroutines": 320, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 7499478, + "slowUploads": 15136, + "slowDownloads": 784, + "uploadedBytes": 3967811584, + "downloadedBytes": 6576668672, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 270.143, + "requests": 7957026, + "failures": 0, + "heapBytes": 49206800, + "rssBytes": 115929088, + "goroutines": 357, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 7940168, + "slowUploads": 16026, + "slowDownloads": 832, + "uploadedBytes": 4201119744, + "downloadedBytes": 6979321856, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 285.143, + "requests": 8395015, + "failures": 0, + "heapBytes": 57830768, + "rssBytes": 120049664, + "goroutines": 321, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 13 + }, + "workloads": { + "health": 8377223, + "slowUploads": 16918, + "slowDownloads": 880, + "uploadedBytes": 4434952192, + "downloadedBytes": 7381975040, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 300.143, + "requests": 8838797, + "failures": 0, + "heapBytes": 66531296, + "rssBytes": 120057856, + "goroutines": 364, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 16 + }, + "workloads": { + "health": 8820061, + "slowUploads": 17808, + "slowDownloads": 928, + "uploadedBytes": 4668260352, + "downloadedBytes": 7784628224, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 315.143, + "requests": 9279778, + "failures": 0, + "heapBytes": 60693440, + "rssBytes": 103329792, + "goroutines": 361, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 16 + }, + "workloads": { + "health": 9260102, + "slowUploads": 18700, + "slowDownloads": 976, + "uploadedBytes": 4902092800, + "downloadedBytes": 8187281408, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 330.143, + "requests": 9726070, + "failures": 0, + "heapBytes": 29946072, + "rssBytes": 75563008, + "goroutines": 288, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 9705463, + "slowUploads": 19591, + "slowDownloads": 1016, + "uploadedBytes": 5135663104, + "downloadedBytes": 8522825728, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 345.144, + "requests": 10170774, + "failures": 0, + "heapBytes": 41152368, + "rssBytes": 106692608, + "goroutines": 360, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 10149227, + "slowUploads": 20483, + "slowDownloads": 1064, + "uploadedBytes": 5369495552, + "downloadedBytes": 8925478912, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 360.143, + "requests": 10614632, + "failures": 0, + "heapBytes": 80360752, + "rssBytes": 120602624, + "goroutines": 325, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 10592151, + "slowUploads": 21373, + "slowDownloads": 1112, + "uploadedBytes": 5602803712, + "downloadedBytes": 9328132096, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 375.143, + "requests": 11059452, + "failures": 0, + "heapBytes": 87305144, + "rssBytes": 120602624, + "goroutines": 324, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 16 + }, + "workloads": { + "health": 11036026, + "slowUploads": 22266, + "slowDownloads": 1160, + "uploadedBytes": 5836898304, + "downloadedBytes": 9730785280, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 390.143, + "requests": 11499123, + "failures": 0, + "heapBytes": 95978912, + "rssBytes": 120606720, + "goroutines": 365, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 16 + }, + "workloads": { + "health": 11474760, + "slowUploads": 23155, + "slowDownloads": 1208, + "uploadedBytes": 6069944320, + "downloadedBytes": 10133438464, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 405.143, + "requests": 11944358, + "failures": 0, + "heapBytes": 56042736, + "rssBytes": 75292672, + "goroutines": 366, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 12 + }, + "workloads": { + "health": 11919058, + "slowUploads": 24048, + "slowDownloads": 1252, + "uploadedBytes": 6304038912, + "downloadedBytes": 10502537216, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 420.143, + "requests": 12386374, + "failures": 0, + "heapBytes": 40072440, + "rssBytes": 94666752, + "goroutines": 354, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 12360140, + "slowUploads": 24938, + "slowDownloads": 1296, + "uploadedBytes": 6537347072, + "downloadedBytes": 10871635968, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 435.143, + "requests": 12830700, + "failures": 0, + "heapBytes": 62440144, + "rssBytes": 120365056, + "goroutines": 328, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 12803533, + "slowUploads": 25829, + "slowDownloads": 1344, + "uploadedBytes": 6770917376, + "downloadedBytes": 11274289152, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 450.143, + "requests": 13273492, + "failures": 0, + "heapBytes": 67101096, + "rssBytes": 121159680, + "goroutines": 334, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 13 + }, + "workloads": { + "health": 13245381, + "slowUploads": 26719, + "slowDownloads": 1392, + "uploadedBytes": 7004225536, + "downloadedBytes": 11676942336, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 465.143, + "requests": 13715931, + "failures": 0, + "heapBytes": 78929632, + "rssBytes": 120643584, + "goroutines": 361, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 16 + }, + "workloads": { + "health": 13686880, + "slowUploads": 27611, + "slowDownloads": 1440, + "uploadedBytes": 7238057984, + "downloadedBytes": 12079595520, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 480.143, + "requests": 14158538, + "failures": 0, + "heapBytes": 83472520, + "rssBytes": 102039552, + "goroutines": 342, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 16 + }, + "workloads": { + "health": 14128556, + "slowUploads": 28500, + "slowDownloads": 1488, + "uploadedBytes": 7471104000, + "downloadedBytes": 12482248704, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 495.143, + "requests": 14606106, + "failures": 0, + "heapBytes": 36808416, + "rssBytes": 77897728, + "goroutines": 357, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 14575184, + "slowUploads": 29394, + "slowDownloads": 1528, + "uploadedBytes": 7705460736, + "downloadedBytes": 12817793024, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 510.143, + "requests": 15050580, + "failures": 0, + "heapBytes": 51099992, + "rssBytes": 106217472, + "goroutines": 315, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 15018720, + "slowUploads": 30284, + "slowDownloads": 1576, + "uploadedBytes": 7938768896, + "downloadedBytes": 13220446208, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 525.143, + "requests": 15492752, + "failures": 0, + "heapBytes": 99120736, + "rssBytes": 121679872, + "goroutines": 326, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 9 + }, + "workloads": { + "health": 15459953, + "slowUploads": 31175, + "slowDownloads": 1624, + "uploadedBytes": 8172339200, + "downloadedBytes": 13623099392, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 540.143, + "requests": 15937860, + "failures": 0, + "heapBytes": 95959552, + "rssBytes": 121716736, + "goroutines": 344, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 15 + }, + "workloads": { + "health": 15904122, + "slowUploads": 32066, + "slowDownloads": 1672, + "uploadedBytes": 8405909504, + "downloadedBytes": 14025752576, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 555.143, + "requests": 16379592, + "failures": 0, + "heapBytes": 54420112, + "rssBytes": 121249792, + "goroutines": 356, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 16 + }, + "workloads": { + "health": 16344914, + "slowUploads": 32958, + "slowDownloads": 1720, + "uploadedBytes": 8639741952, + "downloadedBytes": 14428405760, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 570.143, + "requests": 16825611, + "failures": 0, + "heapBytes": 62855872, + "rssBytes": 81920000, + "goroutines": 331, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 12 + }, + "workloads": { + "health": 16790004, + "slowUploads": 33848, + "slowDownloads": 1764, + "uploadedBytes": 8873050112, + "downloadedBytes": 14797504512, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 585.144, + "requests": 17273037, + "failures": 0, + "heapBytes": 56223560, + "rssBytes": 98967552, + "goroutines": 321, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 7 + }, + "workloads": { + "health": 17236495, + "slowUploads": 34739, + "slowDownloads": 1808, + "uploadedBytes": 9106620416, + "downloadedBytes": 15166603264, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 600.143, + "requests": 17718289, + "failures": 0, + "heapBytes": 90363368, + "rssBytes": 121196544, + "goroutines": 312, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 7 + }, + "workloads": { + "health": 17680804, + "slowUploads": 35632, + "slowDownloads": 1856, + "uploadedBytes": 9340715008, + "downloadedBytes": 15569256448, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 615.143, + "requests": 18164393, + "failures": 0, + "heapBytes": 91620912, + "rssBytes": 121708544, + "goroutines": 328, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 14 + }, + "workloads": { + "health": 18125968, + "slowUploads": 36521, + "slowDownloads": 1904, + "uploadedBytes": 9573761024, + "downloadedBytes": 15971909632, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 630.143, + "requests": 18604920, + "failures": 0, + "heapBytes": 85189216, + "rssBytes": 119672832, + "goroutines": 397, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 16 + }, + "workloads": { + "health": 18565557, + "slowUploads": 37412, + "slowDownloads": 1952, + "uploadedBytes": 9807331328, + "downloadedBytes": 16374562816, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 645.143, + "requests": 19049168, + "failures": 0, + "heapBytes": 71446040, + "rssBytes": 97730560, + "goroutines": 371, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 16 + }, + "workloads": { + "health": 19008872, + "slowUploads": 38304, + "slowDownloads": 2000, + "uploadedBytes": 10041163776, + "downloadedBytes": 16777216000, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 660.143, + "requests": 19496908, + "failures": 0, + "heapBytes": 35314648, + "rssBytes": 81412096, + "goroutines": 333, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 6 + }, + "workloads": { + "health": 19455674, + "slowUploads": 39195, + "slowDownloads": 2040, + "uploadedBytes": 10274734080, + "downloadedBytes": 17112760320, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 675.143, + "requests": 19941947, + "failures": 0, + "heapBytes": 52063200, + "rssBytes": 112910336, + "goroutines": 353, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 19899771, + "slowUploads": 40088, + "slowDownloads": 2088, + "uploadedBytes": 10508828672, + "downloadedBytes": 17515413504, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 690.143, + "requests": 20387835, + "failures": 0, + "heapBytes": 91179064, + "rssBytes": 121262080, + "goroutines": 337, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 11 + }, + "workloads": { + "health": 20344721, + "slowUploads": 40978, + "slowDownloads": 2136, + "uploadedBytes": 10742136832, + "downloadedBytes": 17918066688, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 705.143, + "requests": 20834104, + "failures": 0, + "heapBytes": 96727232, + "rssBytes": 121204736, + "goroutines": 373, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 16 + }, + "workloads": { + "health": 20790049, + "slowUploads": 41871, + "slowDownloads": 2184, + "uploadedBytes": 10976231424, + "downloadedBytes": 18320719872, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 720.143, + "requests": 21274032, + "failures": 0, + "heapBytes": 73363000, + "rssBytes": 121729024, + "goroutines": 395, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 16 + }, + "workloads": { + "health": 21229039, + "slowUploads": 42761, + "slowDownloads": 2232, + "uploadedBytes": 11209539584, + "downloadedBytes": 18723373056, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 735.143, + "requests": 21717175, + "failures": 0, + "heapBytes": 55163016, + "rssBytes": 80625664, + "goroutines": 345, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 11 + }, + "workloads": { + "health": 21671245, + "slowUploads": 43654, + "slowDownloads": 2276, + "uploadedBytes": 11443634176, + "downloadedBytes": 19092471808, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 750.143, + "requests": 22165567, + "failures": 0, + "heapBytes": 58932064, + "rssBytes": 100704256, + "goroutines": 332, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 22118701, + "slowUploads": 44546, + "slowDownloads": 2320, + "uploadedBytes": 11677466624, + "downloadedBytes": 19461570560, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 765.143, + "requests": 22605128, + "failures": 0, + "heapBytes": 65821152, + "rssBytes": 121774080, + "goroutines": 295, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 22557331, + "slowUploads": 45436, + "slowDownloads": 2368, + "uploadedBytes": 11910774784, + "downloadedBytes": 19864223744, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 780.143, + "requests": 23048491, + "failures": 0, + "heapBytes": 71758864, + "rssBytes": 121741312, + "goroutines": 346, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 14 + }, + "workloads": { + "health": 22999748, + "slowUploads": 46327, + "slowDownloads": 2416, + "uploadedBytes": 12144345088, + "downloadedBytes": 20266876928, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 795.143, + "requests": 23490751, + "failures": 0, + "heapBytes": 93734424, + "rssBytes": 121221120, + "goroutines": 360, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 16 + }, + "workloads": { + "health": 23441069, + "slowUploads": 47219, + "slowDownloads": 2464, + "uploadedBytes": 12378177536, + "downloadedBytes": 20669530112, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 810.143, + "requests": 23937415, + "failures": 0, + "heapBytes": 67599608, + "rssBytes": 86278144, + "goroutines": 361, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 15 + }, + "workloads": { + "health": 23886795, + "slowUploads": 48109, + "slowDownloads": 2511, + "uploadedBytes": 12611485696, + "downloadedBytes": 21063794688, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 825.143, + "requests": 24380375, + "failures": 0, + "heapBytes": 39698288, + "rssBytes": 80867328, + "goroutines": 299, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 9 + }, + "workloads": { + "health": 24328828, + "slowUploads": 49001, + "slowDownloads": 2553, + "uploadedBytes": 12845318144, + "downloadedBytes": 21416116224, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 840.143, + "requests": 24821991, + "failures": 0, + "heapBytes": 56792672, + "rssBytes": 110620672, + "goroutines": 354, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 24769501, + "slowUploads": 49890, + "slowDownloads": 2600, + "uploadedBytes": 13078364160, + "downloadedBytes": 21810380800, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 855.143, + "requests": 25267435, + "failures": 0, + "heapBytes": 59737600, + "rssBytes": 121171968, + "goroutines": 321, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 11 + }, + "workloads": { + "health": 25214005, + "slowUploads": 50784, + "slowDownloads": 2648, + "uploadedBytes": 13312720896, + "downloadedBytes": 22213033984, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 870.143, + "requests": 25712957, + "failures": 0, + "heapBytes": 91392208, + "rssBytes": 119664640, + "goroutines": 341, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 16 + }, + "workloads": { + "health": 25658586, + "slowUploads": 51675, + "slowDownloads": 2696, + "uploadedBytes": 13546291200, + "downloadedBytes": 22615687168, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 885.143, + "requests": 26155555, + "failures": 0, + "heapBytes": 57260256, + "rssBytes": 109522944, + "goroutines": 359, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 15 + }, + "workloads": { + "health": 26100248, + "slowUploads": 52568, + "slowDownloads": 2744, + "uploadedBytes": 13780385792, + "downloadedBytes": 23018340352, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 900.143, + "requests": 26597733, + "failures": 0, + "heapBytes": 40190080, + "rssBytes": 81768448, + "goroutines": 359, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 12 + }, + "workloads": { + "health": 26541487, + "slowUploads": 53458, + "slowDownloads": 2788, + "uploadedBytes": 14013693952, + "downloadedBytes": 23387439104, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 915.143, + "requests": 27037735, + "failures": 0, + "heapBytes": 66516128, + "rssBytes": 100077568, + "goroutines": 362, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 26980556, + "slowUploads": 54350, + "slowDownloads": 2832, + "uploadedBytes": 14247526400, + "downloadedBytes": 23756537856, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 930.143, + "requests": 27476076, + "failures": 0, + "heapBytes": 60893368, + "rssBytes": 121782272, + "goroutines": 333, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 27417961, + "slowUploads": 55241, + "slowDownloads": 2880, + "uploadedBytes": 14481096704, + "downloadedBytes": 24159191040, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 945.143, + "requests": 27919500, + "failures": 0, + "heapBytes": 88112872, + "rssBytes": 121765888, + "goroutines": 349, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 14 + }, + "workloads": { + "health": 27860441, + "slowUploads": 56131, + "slowDownloads": 2928, + "uploadedBytes": 14714404864, + "downloadedBytes": 24561844224, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 960.143, + "requests": 28363283, + "failures": 0, + "heapBytes": 76293576, + "rssBytes": 121774080, + "goroutines": 356, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 15 + }, + "workloads": { + "health": 28303284, + "slowUploads": 57023, + "slowDownloads": 2976, + "uploadedBytes": 14948237312, + "downloadedBytes": 24964497408, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 975.143, + "requests": 28803143, + "failures": 0, + "heapBytes": 50553176, + "rssBytes": 94076928, + "goroutines": 335, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 15 + }, + "workloads": { + "health": 28742207, + "slowUploads": 57913, + "slowDownloads": 3023, + "uploadedBytes": 15181545472, + "downloadedBytes": 25358761984, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 990.143, + "requests": 29248721, + "failures": 0, + "heapBytes": 50037296, + "rssBytes": 88997888, + "goroutines": 357, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 29186854, + "slowUploads": 58806, + "slowDownloads": 3064, + "uploadedBytes": 15415640064, + "downloadedBytes": 25702694912, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1005.143, + "requests": 29691598, + "failures": 0, + "heapBytes": 56490576, + "rssBytes": 112680960, + "goroutines": 339, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 7 + }, + "workloads": { + "health": 29628794, + "slowUploads": 59696, + "slowDownloads": 3112, + "uploadedBytes": 15648948224, + "downloadedBytes": 26105348096, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1020.143, + "requests": 30135271, + "failures": 0, + "heapBytes": 101057680, + "rssBytes": 121397248, + "goroutines": 350, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 11 + }, + "workloads": { + "health": 30071522, + "slowUploads": 60589, + "slowDownloads": 3160, + "uploadedBytes": 15883042816, + "downloadedBytes": 26508001280, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1035.143, + "requests": 30578566, + "failures": 0, + "heapBytes": 102154656, + "rssBytes": 121921536, + "goroutines": 361, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 27 + }, + "workloads": { + "health": 30513878, + "slowUploads": 61480, + "slowDownloads": 3208, + "uploadedBytes": 16116613120, + "downloadedBytes": 26910654464, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1050.143, + "requests": 31020857, + "failures": 0, + "heapBytes": 86815776, + "rssBytes": 105476096, + "goroutines": 323, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 16 + }, + "workloads": { + "health": 30955229, + "slowUploads": 62372, + "slowDownloads": 3256, + "uploadedBytes": 16350445568, + "downloadedBytes": 27313307648, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1065.143, + "requests": 31459944, + "failures": 0, + "heapBytes": 51699872, + "rssBytes": 79634432, + "goroutines": 310, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 12 + }, + "workloads": { + "health": 31393379, + "slowUploads": 63265, + "slowDownloads": 3300, + "uploadedBytes": 16584540160, + "downloadedBytes": 27682406400, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1080.143, + "requests": 31903673, + "failures": 0, + "heapBytes": 77125768, + "rssBytes": 103821312, + "goroutines": 368, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 31836174, + "slowUploads": 64155, + "slowDownloads": 3344, + "uploadedBytes": 16817848320, + "downloadedBytes": 28051505152, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1095.143, + "requests": 32347088, + "failures": 0, + "heapBytes": 87810928, + "rssBytes": 121810944, + "goroutines": 354, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 32278650, + "slowUploads": 65047, + "slowDownloads": 3392, + "uploadedBytes": 17051680768, + "downloadedBytes": 28454158336, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1110.143, + "requests": 32791958, + "failures": 0, + "heapBytes": 83378912, + "rssBytes": 121843712, + "goroutines": 368, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 15 + }, + "workloads": { + "health": 32722582, + "slowUploads": 65940, + "slowDownloads": 3440, + "uploadedBytes": 17285775360, + "downloadedBytes": 28856811520, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1125.143, + "requests": 33238456, + "failures": 0, + "heapBytes": 73365344, + "rssBytes": 121778176, + "goroutines": 310, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 16 + }, + "workloads": { + "health": 33168137, + "slowUploads": 66831, + "slowDownloads": 3488, + "uploadedBytes": 17519345664, + "downloadedBytes": 29259464704, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1140.143, + "requests": 33678524, + "failures": 0, + "heapBytes": 73470384, + "rssBytes": 96964608, + "goroutines": 356, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 13 + }, + "workloads": { + "health": 33607268, + "slowUploads": 67723, + "slowDownloads": 3533, + "uploadedBytes": 17753178112, + "downloadedBytes": 29636952064, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1155.143, + "requests": 34124154, + "failures": 0, + "heapBytes": 44371688, + "rssBytes": 86138880, + "goroutines": 306, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 34051968, + "slowUploads": 68615, + "slowDownloads": 3576, + "uploadedBytes": 17987010560, + "downloadedBytes": 29997662208, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1170.143, + "requests": 34567776, + "failures": 0, + "heapBytes": 69339968, + "rssBytes": 116219904, + "goroutines": 356, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 34494646, + "slowUploads": 69506, + "slowDownloads": 3624, + "uploadedBytes": 18220580864, + "downloadedBytes": 30400315392, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1185.143, + "requests": 35012899, + "failures": 0, + "heapBytes": 77088312, + "rssBytes": 122314752, + "goroutines": 333, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 12 + }, + "workloads": { + "health": 34938829, + "slowUploads": 70399, + "slowDownloads": 3672, + "uploadedBytes": 18454675456, + "downloadedBytes": 30802968576, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1200.143, + "requests": 35459295, + "failures": 0, + "heapBytes": 71491968, + "rssBytes": 121794560, + "goroutines": 346, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 16 + }, + "workloads": { + "health": 35384287, + "slowUploads": 71292, + "slowDownloads": 3720, + "uploadedBytes": 18688770048, + "downloadedBytes": 31205621760, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1215.143, + "requests": 35904737, + "failures": 0, + "heapBytes": 71675952, + "rssBytes": 106598400, + "goroutines": 331, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 16 + }, + "workloads": { + "health": 35828787, + "slowUploads": 72182, + "slowDownloads": 3768, + "uploadedBytes": 18922078208, + "downloadedBytes": 31608274944, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1230.143, + "requests": 36350214, + "failures": 0, + "heapBytes": 50574208, + "rssBytes": 84537344, + "goroutines": 306, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 10 + }, + "workloads": { + "health": 36273329, + "slowUploads": 73074, + "slowDownloads": 3811, + "uploadedBytes": 19155910656, + "downloadedBytes": 31968985088, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1245.143, + "requests": 36794194, + "failures": 0, + "heapBytes": 52755624, + "rssBytes": 104304640, + "goroutines": 347, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 36716374, + "slowUploads": 73964, + "slowDownloads": 3856, + "uploadedBytes": 19389218816, + "downloadedBytes": 32346472448, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1260.143, + "requests": 37237267, + "failures": 0, + "heapBytes": 90759440, + "rssBytes": 121802752, + "goroutines": 285, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 9 + }, + "workloads": { + "health": 37158506, + "slowUploads": 74857, + "slowDownloads": 3904, + "uploadedBytes": 19623313408, + "downloadedBytes": 32749125632, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1275.143, + "requests": 37682135, + "failures": 0, + "heapBytes": 75071160, + "rssBytes": 121802752, + "goroutines": 332, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 15 + }, + "workloads": { + "health": 37602436, + "slowUploads": 75747, + "slowDownloads": 3952, + "uploadedBytes": 19856621568, + "downloadedBytes": 33151778816, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1290.143, + "requests": 38125279, + "failures": 0, + "heapBytes": 84651016, + "rssBytes": 117342208, + "goroutines": 331, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 16 + }, + "workloads": { + "health": 38044640, + "slowUploads": 76639, + "slowDownloads": 4000, + "uploadedBytes": 20090454016, + "downloadedBytes": 33554432000, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1305.143, + "requests": 38569220, + "failures": 0, + "heapBytes": 70593904, + "rssBytes": 97050624, + "goroutines": 373, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 11 + }, + "workloads": { + "health": 38487645, + "slowUploads": 77531, + "slowDownloads": 4044, + "uploadedBytes": 20324286464, + "downloadedBytes": 33923530752, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1320.143, + "requests": 39016925, + "failures": 0, + "heapBytes": 59654016, + "rssBytes": 93556736, + "goroutines": 325, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 38934413, + "slowUploads": 78424, + "slowDownloads": 4088, + "uploadedBytes": 20558381056, + "downloadedBytes": 34292629504, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1335.143, + "requests": 39463910, + "failures": 0, + "heapBytes": 53261856, + "rssBytes": 114139136, + "goroutines": 331, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 39380459, + "slowUploads": 79315, + "slowDownloads": 4136, + "uploadedBytes": 20791951360, + "downloadedBytes": 34695282688, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1350.143, + "requests": 39910237, + "failures": 0, + "heapBytes": 62860672, + "rssBytes": 121815040, + "goroutines": 366, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 12 + }, + "workloads": { + "health": 39825849, + "slowUploads": 80209, + "slowDownloads": 4184, + "uploadedBytes": 21026308096, + "downloadedBytes": 35097935872, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1365.143, + "requests": 40360417, + "failures": 0, + "heapBytes": 70322976, + "rssBytes": 121286656, + "goroutines": 368, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 16 + }, + "workloads": { + "health": 40275086, + "slowUploads": 81099, + "slowDownloads": 4232, + "uploadedBytes": 21259616256, + "downloadedBytes": 35500589056, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1380.143, + "requests": 40801788, + "failures": 0, + "heapBytes": 76912600, + "rssBytes": 97243136, + "goroutines": 321, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 16 + }, + "workloads": { + "health": 40715518, + "slowUploads": 81990, + "slowDownloads": 4280, + "uploadedBytes": 21493186560, + "downloadedBytes": 35903242240, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1395.143, + "requests": 41246645, + "failures": 0, + "heapBytes": 54950248, + "rssBytes": 84979712, + "goroutines": 337, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 12 + }, + "workloads": { + "health": 41159438, + "slowUploads": 82883, + "slowDownloads": 4324, + "uploadedBytes": 21727281152, + "downloadedBytes": 36272340992, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1410.143, + "requests": 41687236, + "failures": 0, + "heapBytes": 43818576, + "rssBytes": 101183488, + "goroutines": 321, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 7 + }, + "workloads": { + "health": 41599097, + "slowUploads": 83774, + "slowDownloads": 4368, + "uploadedBytes": 21960851456, + "downloadedBytes": 36641439744, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1425.143, + "requests": 42128546, + "failures": 0, + "heapBytes": 54495128, + "rssBytes": 121827328, + "goroutines": 288, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 9 + }, + "workloads": { + "health": 42039470, + "slowUploads": 84667, + "slowDownloads": 4416, + "uploadedBytes": 22194946048, + "downloadedBytes": 37044092928, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1440.143, + "requests": 42569443, + "failures": 0, + "heapBytes": 98238024, + "rssBytes": 119263232, + "goroutines": 362, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 15 + }, + "workloads": { + "health": 42479426, + "slowUploads": 85556, + "slowDownloads": 4464, + "uploadedBytes": 22427992064, + "downloadedBytes": 37446746112, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1455.143, + "requests": 43006434, + "failures": 0, + "heapBytes": 61451176, + "rssBytes": 115818496, + "goroutines": 330, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 16 + }, + "workloads": { + "health": 42915474, + "slowUploads": 86448, + "slowDownloads": 4512, + "uploadedBytes": 22661824512, + "downloadedBytes": 37849399296, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1470.143, + "requests": 43446211, + "failures": 0, + "heapBytes": 53221152, + "rssBytes": 96935936, + "goroutines": 294, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 12 + }, + "workloads": { + "health": 43354315, + "slowUploads": 87339, + "slowDownloads": 4557, + "uploadedBytes": 22895394816, + "downloadedBytes": 38226886656, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1485.143, + "requests": 43888201, + "failures": 0, + "heapBytes": 41094952, + "rssBytes": 88412160, + "goroutines": 306, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 43795377, + "slowUploads": 88230, + "slowDownloads": 4600, + "uploadedBytes": 23128965120, + "downloadedBytes": 38587596800, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1500.143, + "requests": 44331683, + "failures": 0, + "heapBytes": 74520696, + "rssBytes": 117968896, + "goroutines": 360, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 44237912, + "slowUploads": 89123, + "slowDownloads": 4648, + "uploadedBytes": 23363059712, + "downloadedBytes": 38990249984, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1515.143, + "requests": 44771023, + "failures": 0, + "heapBytes": 61522184, + "rssBytes": 121311232, + "goroutines": 314, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 11 + }, + "workloads": { + "health": 44676311, + "slowUploads": 90016, + "slowDownloads": 4696, + "uploadedBytes": 23597154304, + "downloadedBytes": 39392903168, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1530.143, + "requests": 45210979, + "failures": 0, + "heapBytes": 71823520, + "rssBytes": 121315328, + "goroutines": 364, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 16 + }, + "workloads": { + "health": 45115328, + "slowUploads": 90908, + "slowDownloads": 4744, + "uploadedBytes": 23830986752, + "downloadedBytes": 39795556352, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1545.143, + "requests": 45655488, + "failures": 0, + "heapBytes": 73294312, + "rssBytes": 98951168, + "goroutines": 352, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 15 + }, + "workloads": { + "health": 45558899, + "slowUploads": 91798, + "slowDownloads": 4791, + "uploadedBytes": 24064294912, + "downloadedBytes": 40189820928, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1560.143, + "requests": 46098111, + "failures": 0, + "heapBytes": 61891384, + "rssBytes": 85794816, + "goroutines": 331, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 11 + }, + "workloads": { + "health": 46000586, + "slowUploads": 92690, + "slowDownloads": 4835, + "uploadedBytes": 24298127360, + "downloadedBytes": 40558919680, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1575.143, + "requests": 46542135, + "failures": 0, + "heapBytes": 60185208, + "rssBytes": 103088128, + "goroutines": 303, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 7 + }, + "workloads": { + "health": 46443672, + "slowUploads": 93583, + "slowDownloads": 4880, + "uploadedBytes": 24532221952, + "downloadedBytes": 40936407040, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1590.143, + "requests": 46985865, + "failures": 0, + "heapBytes": 82859896, + "rssBytes": 121839616, + "goroutines": 364, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 9 + }, + "workloads": { + "health": 46886464, + "slowUploads": 94473, + "slowDownloads": 4928, + "uploadedBytes": 24765530112, + "downloadedBytes": 41339060224, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1605.143, + "requests": 47426140, + "failures": 0, + "heapBytes": 76512768, + "rssBytes": 121827328, + "goroutines": 319, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 15 + }, + "workloads": { + "health": 47325797, + "slowUploads": 95367, + "slowDownloads": 4976, + "uploadedBytes": 24999886848, + "downloadedBytes": 41741713408, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1620.143, + "requests": 47864835, + "failures": 0, + "heapBytes": 96303144, + "rssBytes": 115740672, + "goroutines": 380, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 16 + }, + "workloads": { + "health": 47763553, + "slowUploads": 96258, + "slowDownloads": 5024, + "uploadedBytes": 25233457152, + "downloadedBytes": 42144366592, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1635.143, + "requests": 48307600, + "failures": 0, + "heapBytes": 74108016, + "rssBytes": 93282304, + "goroutines": 358, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 12 + }, + "workloads": { + "health": 48205383, + "slowUploads": 97149, + "slowDownloads": 5068, + "uploadedBytes": 25467027456, + "downloadedBytes": 42513465344, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1650.143, + "requests": 48750920, + "failures": 0, + "heapBytes": 48575472, + "rssBytes": 90746880, + "goroutines": 376, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 48647765, + "slowUploads": 98043, + "slowDownloads": 5112, + "uploadedBytes": 25701384192, + "downloadedBytes": 42882564096, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1665.143, + "requests": 49191794, + "failures": 0, + "heapBytes": 89907488, + "rssBytes": 120475648, + "goroutines": 357, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 49087700, + "slowUploads": 98934, + "slowDownloads": 5160, + "uploadedBytes": 25934954496, + "downloadedBytes": 43285217280, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1680.143, + "requests": 49637025, + "failures": 0, + "heapBytes": 71241912, + "rssBytes": 120827904, + "goroutines": 338, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 12 + }, + "workloads": { + "health": 49531996, + "slowUploads": 99826, + "slowDownloads": 5208, + "uploadedBytes": 26168786944, + "downloadedBytes": 43687870464, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1695.143, + "requests": 50077201, + "failures": 0, + "heapBytes": 71823760, + "rssBytes": 121327616, + "goroutines": 342, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 16 + }, + "workloads": { + "health": 49971226, + "slowUploads": 100719, + "slowDownloads": 5256, + "uploadedBytes": 26402881536, + "downloadedBytes": 44090523648, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1710.143, + "requests": 50524644, + "failures": 0, + "heapBytes": 88321680, + "rssBytes": 107315200, + "goroutines": 315, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 15 + }, + "workloads": { + "health": 50417733, + "slowUploads": 101610, + "slowDownloads": 5303, + "uploadedBytes": 26636451840, + "downloadedBytes": 44484788224, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1725.143, + "requests": 50971603, + "failures": 0, + "heapBytes": 49721352, + "rssBytes": 87646208, + "goroutines": 335, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 9 + }, + "workloads": { + "health": 50863761, + "slowUploads": 102501, + "slowDownloads": 5346, + "uploadedBytes": 26870022144, + "downloadedBytes": 44845498368, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1740.143, + "requests": 51417802, + "failures": 0, + "heapBytes": 55859872, + "rssBytes": 104423424, + "goroutines": 356, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 8 + }, + "workloads": { + "health": 51309017, + "slowUploads": 103394, + "slowDownloads": 5392, + "uploadedBytes": 27104116736, + "downloadedBytes": 45231374336, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1755.143, + "requests": 51862535, + "failures": 0, + "heapBytes": 63482984, + "rssBytes": 121856000, + "goroutines": 349, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 10 + }, + "workloads": { + "health": 51752810, + "slowUploads": 104285, + "slowDownloads": 5440, + "uploadedBytes": 27337687040, + "downloadedBytes": 45634027520, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1770.143, + "requests": 52305456, + "failures": 0, + "heapBytes": 85512792, + "rssBytes": 118308864, + "goroutines": 332, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 15 + }, + "workloads": { + "health": 52194795, + "slowUploads": 105177, + "slowDownloads": 5488, + "uploadedBytes": 27571519488, + "downloadedBytes": 46036680704, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1785.143, + "requests": 52747376, + "failures": 0, + "heapBytes": 74143584, + "rssBytes": 114286592, + "goroutines": 333, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 16 + }, + "workloads": { + "health": 52635773, + "slowUploads": 106069, + "slowDownloads": 5536, + "uploadedBytes": 27805351936, + "downloadedBytes": 46439333888, + "serverFailures": 0 + } + }, + { + "phase": "running", + "elapsedSeconds": 1800.143, + "requests": 53191576, + "failures": 0, + "heapBytes": 43650296, + "rssBytes": 97910784, + "goroutines": 272, + "fileDescriptors": 23, + "stats": { + "acceptedConnections": 8, + "rejectedConnections": 0, + "rejectedRequests": 0, + "protocolErrors": 0, + "goAwaySent": 0, + "rstStreams": 0, + "goAwayFrames": 0, + "activeConnections": 8, + "activeRequests": 12 + }, + "workloads": { + "health": 53079033, + "slowUploads": 106963, + "slowDownloads": 5580, + "uploadedBytes": 28039708672, + "downloadedBytes": 46808432640, + "serverFailures": 0 + } + } + ], + "notes": [ + "Thirty-minute ordinary Go run: eight reused TLS HTTP/2 connections, each carrying fourteen health workers, one paced uploader and one paced downloader.", + "Loopback client and server share one process and the same 2-CPU container quota; this is not a server-only production throughput benchmark.", + "RSS, heap and goroutines include clients, server, HTTP/2 receive buffers and an 8 MiB shared response fixture.", + "MiB uses 1024*1024 bytes. Memory is sampled every 15 seconds; reported peaks are sampled peaks.", + "All successful responses validate HTTP/2, TLS ALPN h2, status and unique request ID. Upload and download contents validate byte count and SHA-256 digest.", + "The 8 MiB response exceeds x/net v0.25.0 client initial 4 MiB stream window; it does not exhaust the separate 1 GiB connection receive window.", + "After the deadline, in-flight requests finish and every failure is counted. Monitor, workers, clients and server stop before after sampling.", + "afterReclaim releases workload fixtures and idle client pools, then runs GC twice. Retained heap is measured separately from RSS; GC does not guarantee immediate RSS return.", + "Running totals use separate atomic snapshots and may differ slightly from the adjacent requests sample; final joined totals must match exactly.", + "Passing this mixed soak does not prove HTTP/2 upstream proxy GOAWAY/drain behavior. The HTTP/2 adapter remains experimental." + ], + "postRunCheck": { + "checkedAt": "2026-09-23T02:53:33.308077+00:00", + "preExistingContainersStillRunning": 7, + "remainingHTTP2ValidationContainers": [] + } +} diff --git a/performance/http2MixedSoakLinux.txt b/performance/http2MixedSoakLinux.txt new file mode 100644 index 0000000..eb57d07 --- /dev/null +++ b/performance/http2MixedSoakLinux.txt @@ -0,0 +1,265 @@ +HTTP/2 Linux soak image: golang:1.25 +HTTP/2 TLS soak duration: 30m +HTTP/2 TLS soak mode: regular +HTTP/2 TLS soak scenario: mixed +HTTP/2 soak container: go-omni-http2-soak-fa422c57dfa1; limits: 2 CPUs, 2048 MiB, 256 tasks +go: downloading golang.org/x/net v0.25.0 +go: downloading golang.org/x/text v0.15.0 +=== RUN TestTLSMixedSoak + mixedSoak_test.go:37: phase=before elapsed=0s requests=0 failures=0 heapBytes=170136 rssBytes=8613888 goroutines=2 fileDescriptors=6 stats={AcceptedConnections:0 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:0 ActiveRequests:0} + mixedSoak_test.go:38: scenario=mixed connections=8 workersPerConnection=16 uploadBytes=262144 uploadChunkBytes=4096 uploadDelay=2ms downloadBytes=8388608 downloadChunkBytes=65536 downloadDelay=20ms + mixedSoak_test.go:135: phase=running elapsed=15.143s requests=444111 failures=0 heapBytes=41226328 rssBytes=100597760 goroutines=359 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:7} + mixedSoak_test.go:124: mixedTotals phase=running health=443187 slowUploads=884 slowDownloads=40 uploadedBytes=231735296 downloadedBytes=335544320 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=30.143s requests=886889 failures=0 heapBytes=76939344 rssBytes=119885824 goroutines=351 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=885025 slowUploads=1776 slowDownloads=88 uploadedBytes=465567744 downloadedBytes=738197504 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=45.143s requests=1327236 failures=0 heapBytes=98442464 rssBytes=119926784 goroutines=348 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:15} + mixedSoak_test.go:124: mixedTotals phase=running health=1324437 slowUploads=2663 slowDownloads=136 uploadedBytes=698089472 downloadedBytes=1140850688 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=1m0.143s requests=1768857 failures=0 heapBytes=99328992 rssBytes=119402496 goroutines=359 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:15} + mixedSoak_test.go:124: mixedTotals phase=running health=1765116 slowUploads=3557 slowDownloads=184 uploadedBytes=932446208 downloadedBytes=1543503872 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=1m15.143s requests=2211456 failures=0 heapBytes=60732216 rssBytes=90337280 goroutines=357 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:16} + mixedSoak_test.go:124: mixedTotals phase=running health=2206781 slowUploads=4445 slowDownloads=232 uploadedBytes=1165230080 downloadedBytes=1946157056 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=1m30.143s requests=2652108 failures=0 heapBytes=53063064 rssBytes=85688320 goroutines=350 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=2646501 slowUploads=5335 slowDownloads=272 uploadedBytes=1398538240 downloadedBytes=2281701376 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=1m45.143s requests=3094082 failures=0 heapBytes=81458456 rssBytes=117563392 goroutines=343 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=3087534 slowUploads=6228 slowDownloads=320 uploadedBytes=1632632832 downloadedBytes=2684354560 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=2m0.143s requests=3532884 failures=0 heapBytes=86878776 rssBytes=119468032 goroutines=292 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:12} + mixedSoak_test.go:124: mixedTotals phase=running health=3525398 slowUploads=7118 slowDownloads=368 uploadedBytes=1865940992 downloadedBytes=3087007744 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=2m15.143s requests=3974010 failures=0 heapBytes=98205016 rssBytes=119029760 goroutines=313 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:15} + mixedSoak_test.go:124: mixedTotals phase=running health=3965593 slowUploads=8008 slowDownloads=416 uploadedBytes=2099249152 downloadedBytes=3489660928 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=2m30.143s requests=4415820 failures=0 heapBytes=90842632 rssBytes=109375488 goroutines=356 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:16} + mixedSoak_test.go:124: mixedTotals phase=running health=4406456 slowUploads=8900 slowDownloads=464 uploadedBytes=2333081600 downloadedBytes=3892314112 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=2m45.143s requests=4859795 failures=0 heapBytes=46212528 rssBytes=75120640 goroutines=382 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=4849501 slowUploads=9790 slowDownloads=504 uploadedBytes=2566389760 downloadedBytes=4227858432 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=3m0.143s requests=5302557 failures=0 heapBytes=59378560 rssBytes=103960576 goroutines=323 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=5291324 slowUploads=10681 slowDownloads=552 uploadedBytes=2799960064 downloadedBytes=4630511616 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=3m15.143s requests=5745355 failures=0 heapBytes=65581312 rssBytes=120012800 goroutines=326 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=5733185 slowUploads=11571 slowDownloads=600 uploadedBytes=3033268224 downloadedBytes=5033164800 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=3m30.143s requests=6184725 failures=0 heapBytes=83765136 rssBytes=119152640 goroutines=365 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:16} + mixedSoak_test.go:124: mixedTotals phase=running health=6171616 slowUploads=12461 slowDownloads=648 uploadedBytes=3266576384 downloadedBytes=5435817984 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=3m45.143s requests=6627613 failures=0 heapBytes=83719272 rssBytes=119508992 goroutines=326 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:16} + mixedSoak_test.go:124: mixedTotals phase=running health=6613566 slowUploads=13352 slowDownloads=696 uploadedBytes=3500146688 downloadedBytes=5838471168 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=4m0.143s requests=7072007 failures=0 heapBytes=40007456 rssBytes=83099648 goroutines=366 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:11} + mixedSoak_test.go:124: mixedTotals phase=running health=7057021 slowUploads=14246 slowDownloads=740 uploadedBytes=3734503424 downloadedBytes=6207569920 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=4m15.143s requests=7515397 failures=0 heapBytes=52621088 rssBytes=88940544 goroutines=320 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=7499478 slowUploads=15136 slowDownloads=784 uploadedBytes=3967811584 downloadedBytes=6576668672 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=4m30.143s requests=7957026 failures=0 heapBytes=49206800 rssBytes=115929088 goroutines=357 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=7940168 slowUploads=16026 slowDownloads=832 uploadedBytes=4201119744 downloadedBytes=6979321856 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=4m45.143s requests=8395015 failures=0 heapBytes=57830768 rssBytes=120049664 goroutines=321 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:13} + mixedSoak_test.go:124: mixedTotals phase=running health=8377223 slowUploads=16918 slowDownloads=880 uploadedBytes=4434952192 downloadedBytes=7381975040 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=5m0.143s requests=8838797 failures=0 heapBytes=66531296 rssBytes=120057856 goroutines=364 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:16} + mixedSoak_test.go:124: mixedTotals phase=running health=8820061 slowUploads=17808 slowDownloads=928 uploadedBytes=4668260352 downloadedBytes=7784628224 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=5m15.143s requests=9279778 failures=0 heapBytes=60693440 rssBytes=103329792 goroutines=361 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:16} + mixedSoak_test.go:124: mixedTotals phase=running health=9260102 slowUploads=18700 slowDownloads=976 uploadedBytes=4902092800 downloadedBytes=8187281408 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=5m30.143s requests=9726070 failures=0 heapBytes=29946072 rssBytes=75563008 goroutines=288 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=9705463 slowUploads=19591 slowDownloads=1016 uploadedBytes=5135663104 downloadedBytes=8522825728 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=5m45.144s requests=10170774 failures=0 heapBytes=41152368 rssBytes=106692608 goroutines=360 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=10149227 slowUploads=20483 slowDownloads=1064 uploadedBytes=5369495552 downloadedBytes=8925478912 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=6m0.143s requests=10614632 failures=0 heapBytes=80360752 rssBytes=120602624 goroutines=325 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=10592151 slowUploads=21373 slowDownloads=1112 uploadedBytes=5602803712 downloadedBytes=9328132096 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=6m15.143s requests=11059452 failures=0 heapBytes=87305144 rssBytes=120602624 goroutines=324 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:16} + mixedSoak_test.go:124: mixedTotals phase=running health=11036026 slowUploads=22266 slowDownloads=1160 uploadedBytes=5836898304 downloadedBytes=9730785280 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=6m30.143s requests=11499123 failures=0 heapBytes=95978912 rssBytes=120606720 goroutines=365 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:16} + mixedSoak_test.go:124: mixedTotals phase=running health=11474760 slowUploads=23155 slowDownloads=1208 uploadedBytes=6069944320 downloadedBytes=10133438464 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=6m45.143s requests=11944358 failures=0 heapBytes=56042736 rssBytes=75292672 goroutines=366 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:12} + mixedSoak_test.go:124: mixedTotals phase=running health=11919058 slowUploads=24048 slowDownloads=1252 uploadedBytes=6304038912 downloadedBytes=10502537216 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=7m0.143s requests=12386374 failures=0 heapBytes=40072440 rssBytes=94666752 goroutines=354 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=12360140 slowUploads=24938 slowDownloads=1296 uploadedBytes=6537347072 downloadedBytes=10871635968 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=7m15.143s requests=12830700 failures=0 heapBytes=62440144 rssBytes=120365056 goroutines=328 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=12803533 slowUploads=25829 slowDownloads=1344 uploadedBytes=6770917376 downloadedBytes=11274289152 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=7m30.143s requests=13273492 failures=0 heapBytes=67101096 rssBytes=121159680 goroutines=334 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:13} + mixedSoak_test.go:124: mixedTotals phase=running health=13245381 slowUploads=26719 slowDownloads=1392 uploadedBytes=7004225536 downloadedBytes=11676942336 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=7m45.143s requests=13715931 failures=0 heapBytes=78929632 rssBytes=120643584 goroutines=361 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:16} + mixedSoak_test.go:124: mixedTotals phase=running health=13686880 slowUploads=27611 slowDownloads=1440 uploadedBytes=7238057984 downloadedBytes=12079595520 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=8m0.143s requests=14158538 failures=0 heapBytes=83472520 rssBytes=102039552 goroutines=342 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:16} + mixedSoak_test.go:124: mixedTotals phase=running health=14128556 slowUploads=28500 slowDownloads=1488 uploadedBytes=7471104000 downloadedBytes=12482248704 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=8m15.143s requests=14606106 failures=0 heapBytes=36808416 rssBytes=77897728 goroutines=357 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=14575184 slowUploads=29394 slowDownloads=1528 uploadedBytes=7705460736 downloadedBytes=12817793024 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=8m30.143s requests=15050580 failures=0 heapBytes=51099992 rssBytes=106217472 goroutines=315 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=15018720 slowUploads=30284 slowDownloads=1576 uploadedBytes=7938768896 downloadedBytes=13220446208 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=8m45.143s requests=15492752 failures=0 heapBytes=99120736 rssBytes=121679872 goroutines=326 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:9} + mixedSoak_test.go:124: mixedTotals phase=running health=15459953 slowUploads=31175 slowDownloads=1624 uploadedBytes=8172339200 downloadedBytes=13623099392 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=9m0.143s requests=15937860 failures=0 heapBytes=95959552 rssBytes=121716736 goroutines=344 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:15} + mixedSoak_test.go:124: mixedTotals phase=running health=15904122 slowUploads=32066 slowDownloads=1672 uploadedBytes=8405909504 downloadedBytes=14025752576 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=9m15.143s requests=16379592 failures=0 heapBytes=54420112 rssBytes=121249792 goroutines=356 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:16} + mixedSoak_test.go:124: mixedTotals phase=running health=16344914 slowUploads=32958 slowDownloads=1720 uploadedBytes=8639741952 downloadedBytes=14428405760 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=9m30.143s requests=16825611 failures=0 heapBytes=62855872 rssBytes=81920000 goroutines=331 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:12} + mixedSoak_test.go:124: mixedTotals phase=running health=16790004 slowUploads=33848 slowDownloads=1764 uploadedBytes=8873050112 downloadedBytes=14797504512 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=9m45.144s requests=17273037 failures=0 heapBytes=56223560 rssBytes=98967552 goroutines=321 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:7} + mixedSoak_test.go:124: mixedTotals phase=running health=17236495 slowUploads=34739 slowDownloads=1808 uploadedBytes=9106620416 downloadedBytes=15166603264 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=10m0.143s requests=17718289 failures=0 heapBytes=90363368 rssBytes=121196544 goroutines=312 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:7} + mixedSoak_test.go:124: mixedTotals phase=running health=17680804 slowUploads=35632 slowDownloads=1856 uploadedBytes=9340715008 downloadedBytes=15569256448 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=10m15.143s requests=18164393 failures=0 heapBytes=91620912 rssBytes=121708544 goroutines=328 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:14} + mixedSoak_test.go:124: mixedTotals phase=running health=18125968 slowUploads=36521 slowDownloads=1904 uploadedBytes=9573761024 downloadedBytes=15971909632 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=10m30.143s requests=18604920 failures=0 heapBytes=85189216 rssBytes=119672832 goroutines=397 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:16} + mixedSoak_test.go:124: mixedTotals phase=running health=18565557 slowUploads=37412 slowDownloads=1952 uploadedBytes=9807331328 downloadedBytes=16374562816 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=10m45.143s requests=19049168 failures=0 heapBytes=71446040 rssBytes=97730560 goroutines=371 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:16} + mixedSoak_test.go:124: mixedTotals phase=running health=19008872 slowUploads=38304 slowDownloads=2000 uploadedBytes=10041163776 downloadedBytes=16777216000 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=11m0.143s requests=19496908 failures=0 heapBytes=35314648 rssBytes=81412096 goroutines=333 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:6} + mixedSoak_test.go:124: mixedTotals phase=running health=19455674 slowUploads=39195 slowDownloads=2040 uploadedBytes=10274734080 downloadedBytes=17112760320 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=11m15.143s requests=19941947 failures=0 heapBytes=52063200 rssBytes=112910336 goroutines=353 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=19899771 slowUploads=40088 slowDownloads=2088 uploadedBytes=10508828672 downloadedBytes=17515413504 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=11m30.143s requests=20387835 failures=0 heapBytes=91179064 rssBytes=121262080 goroutines=337 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:11} + mixedSoak_test.go:124: mixedTotals phase=running health=20344721 slowUploads=40978 slowDownloads=2136 uploadedBytes=10742136832 downloadedBytes=17918066688 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=11m45.143s requests=20834104 failures=0 heapBytes=96727232 rssBytes=121204736 goroutines=373 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:16} + mixedSoak_test.go:124: mixedTotals phase=running health=20790049 slowUploads=41871 slowDownloads=2184 uploadedBytes=10976231424 downloadedBytes=18320719872 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=12m0.143s requests=21274032 failures=0 heapBytes=73363000 rssBytes=121729024 goroutines=395 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:16} + mixedSoak_test.go:124: mixedTotals phase=running health=21229039 slowUploads=42761 slowDownloads=2232 uploadedBytes=11209539584 downloadedBytes=18723373056 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=12m15.143s requests=21717175 failures=0 heapBytes=55163016 rssBytes=80625664 goroutines=345 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:11} + mixedSoak_test.go:124: mixedTotals phase=running health=21671245 slowUploads=43654 slowDownloads=2276 uploadedBytes=11443634176 downloadedBytes=19092471808 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=12m30.143s requests=22165567 failures=0 heapBytes=58932064 rssBytes=100704256 goroutines=332 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=22118701 slowUploads=44546 slowDownloads=2320 uploadedBytes=11677466624 downloadedBytes=19461570560 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=12m45.143s requests=22605128 failures=0 heapBytes=65821152 rssBytes=121774080 goroutines=295 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=22557331 slowUploads=45436 slowDownloads=2368 uploadedBytes=11910774784 downloadedBytes=19864223744 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=13m0.143s requests=23048491 failures=0 heapBytes=71758864 rssBytes=121741312 goroutines=346 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:14} + mixedSoak_test.go:124: mixedTotals phase=running health=22999748 slowUploads=46327 slowDownloads=2416 uploadedBytes=12144345088 downloadedBytes=20266876928 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=13m15.143s requests=23490751 failures=0 heapBytes=93734424 rssBytes=121221120 goroutines=360 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:16} + mixedSoak_test.go:124: mixedTotals phase=running health=23441069 slowUploads=47219 slowDownloads=2464 uploadedBytes=12378177536 downloadedBytes=20669530112 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=13m30.143s requests=23937415 failures=0 heapBytes=67599608 rssBytes=86278144 goroutines=361 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:15} + mixedSoak_test.go:124: mixedTotals phase=running health=23886795 slowUploads=48109 slowDownloads=2511 uploadedBytes=12611485696 downloadedBytes=21063794688 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=13m45.143s requests=24380375 failures=0 heapBytes=39698288 rssBytes=80867328 goroutines=299 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:9} + mixedSoak_test.go:124: mixedTotals phase=running health=24328828 slowUploads=49001 slowDownloads=2553 uploadedBytes=12845318144 downloadedBytes=21416116224 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=14m0.143s requests=24821991 failures=0 heapBytes=56792672 rssBytes=110620672 goroutines=354 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=24769501 slowUploads=49890 slowDownloads=2600 uploadedBytes=13078364160 downloadedBytes=21810380800 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=14m15.143s requests=25267435 failures=0 heapBytes=59737600 rssBytes=121171968 goroutines=321 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:11} + mixedSoak_test.go:124: mixedTotals phase=running health=25214005 slowUploads=50784 slowDownloads=2648 uploadedBytes=13312720896 downloadedBytes=22213033984 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=14m30.143s requests=25712957 failures=0 heapBytes=91392208 rssBytes=119664640 goroutines=341 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:16} + mixedSoak_test.go:124: mixedTotals phase=running health=25658586 slowUploads=51675 slowDownloads=2696 uploadedBytes=13546291200 downloadedBytes=22615687168 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=14m45.143s requests=26155555 failures=0 heapBytes=57260256 rssBytes=109522944 goroutines=359 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:15} + mixedSoak_test.go:124: mixedTotals phase=running health=26100248 slowUploads=52568 slowDownloads=2744 uploadedBytes=13780385792 downloadedBytes=23018340352 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=15m0.143s requests=26597733 failures=0 heapBytes=40190080 rssBytes=81768448 goroutines=359 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:12} + mixedSoak_test.go:124: mixedTotals phase=running health=26541487 slowUploads=53458 slowDownloads=2788 uploadedBytes=14013693952 downloadedBytes=23387439104 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=15m15.143s requests=27037735 failures=0 heapBytes=66516128 rssBytes=100077568 goroutines=362 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=26980556 slowUploads=54350 slowDownloads=2832 uploadedBytes=14247526400 downloadedBytes=23756537856 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=15m30.143s requests=27476076 failures=0 heapBytes=60893368 rssBytes=121782272 goroutines=333 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=27417961 slowUploads=55241 slowDownloads=2880 uploadedBytes=14481096704 downloadedBytes=24159191040 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=15m45.143s requests=27919500 failures=0 heapBytes=88112872 rssBytes=121765888 goroutines=349 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:14} + mixedSoak_test.go:124: mixedTotals phase=running health=27860441 slowUploads=56131 slowDownloads=2928 uploadedBytes=14714404864 downloadedBytes=24561844224 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=16m0.143s requests=28363283 failures=0 heapBytes=76293576 rssBytes=121774080 goroutines=356 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:15} + mixedSoak_test.go:124: mixedTotals phase=running health=28303284 slowUploads=57023 slowDownloads=2976 uploadedBytes=14948237312 downloadedBytes=24964497408 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=16m15.143s requests=28803143 failures=0 heapBytes=50553176 rssBytes=94076928 goroutines=335 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:15} + mixedSoak_test.go:124: mixedTotals phase=running health=28742207 slowUploads=57913 slowDownloads=3023 uploadedBytes=15181545472 downloadedBytes=25358761984 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=16m30.143s requests=29248721 failures=0 heapBytes=50037296 rssBytes=88997888 goroutines=357 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=29186854 slowUploads=58806 slowDownloads=3064 uploadedBytes=15415640064 downloadedBytes=25702694912 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=16m45.143s requests=29691598 failures=0 heapBytes=56490576 rssBytes=112680960 goroutines=339 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:7} + mixedSoak_test.go:124: mixedTotals phase=running health=29628794 slowUploads=59696 slowDownloads=3112 uploadedBytes=15648948224 downloadedBytes=26105348096 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=17m0.143s requests=30135271 failures=0 heapBytes=101057680 rssBytes=121397248 goroutines=350 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:11} + mixedSoak_test.go:124: mixedTotals phase=running health=30071522 slowUploads=60589 slowDownloads=3160 uploadedBytes=15883042816 downloadedBytes=26508001280 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=17m15.143s requests=30578566 failures=0 heapBytes=102154656 rssBytes=121921536 goroutines=361 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:27} + mixedSoak_test.go:124: mixedTotals phase=running health=30513878 slowUploads=61480 slowDownloads=3208 uploadedBytes=16116613120 downloadedBytes=26910654464 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=17m30.143s requests=31020857 failures=0 heapBytes=86815776 rssBytes=105476096 goroutines=323 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:16} + mixedSoak_test.go:124: mixedTotals phase=running health=30955229 slowUploads=62372 slowDownloads=3256 uploadedBytes=16350445568 downloadedBytes=27313307648 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=17m45.143s requests=31459944 failures=0 heapBytes=51699872 rssBytes=79634432 goroutines=310 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:12} + mixedSoak_test.go:124: mixedTotals phase=running health=31393379 slowUploads=63265 slowDownloads=3300 uploadedBytes=16584540160 downloadedBytes=27682406400 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=18m0.143s requests=31903673 failures=0 heapBytes=77125768 rssBytes=103821312 goroutines=368 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=31836174 slowUploads=64155 slowDownloads=3344 uploadedBytes=16817848320 downloadedBytes=28051505152 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=18m15.143s requests=32347088 failures=0 heapBytes=87810928 rssBytes=121810944 goroutines=354 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=32278650 slowUploads=65047 slowDownloads=3392 uploadedBytes=17051680768 downloadedBytes=28454158336 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=18m30.143s requests=32791958 failures=0 heapBytes=83378912 rssBytes=121843712 goroutines=368 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:15} + mixedSoak_test.go:124: mixedTotals phase=running health=32722582 slowUploads=65940 slowDownloads=3440 uploadedBytes=17285775360 downloadedBytes=28856811520 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=18m45.143s requests=33238456 failures=0 heapBytes=73365344 rssBytes=121778176 goroutines=310 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:16} + mixedSoak_test.go:124: mixedTotals phase=running health=33168137 slowUploads=66831 slowDownloads=3488 uploadedBytes=17519345664 downloadedBytes=29259464704 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=19m0.143s requests=33678524 failures=0 heapBytes=73470384 rssBytes=96964608 goroutines=356 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:13} + mixedSoak_test.go:124: mixedTotals phase=running health=33607268 slowUploads=67723 slowDownloads=3533 uploadedBytes=17753178112 downloadedBytes=29636952064 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=19m15.143s requests=34124154 failures=0 heapBytes=44371688 rssBytes=86138880 goroutines=306 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=34051968 slowUploads=68615 slowDownloads=3576 uploadedBytes=17987010560 downloadedBytes=29997662208 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=19m30.143s requests=34567776 failures=0 heapBytes=69339968 rssBytes=116219904 goroutines=356 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=34494646 slowUploads=69506 slowDownloads=3624 uploadedBytes=18220580864 downloadedBytes=30400315392 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=19m45.143s requests=35012899 failures=0 heapBytes=77088312 rssBytes=122314752 goroutines=333 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:12} + mixedSoak_test.go:124: mixedTotals phase=running health=34938829 slowUploads=70399 slowDownloads=3672 uploadedBytes=18454675456 downloadedBytes=30802968576 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=20m0.143s requests=35459295 failures=0 heapBytes=71491968 rssBytes=121794560 goroutines=346 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:16} + mixedSoak_test.go:124: mixedTotals phase=running health=35384287 slowUploads=71292 slowDownloads=3720 uploadedBytes=18688770048 downloadedBytes=31205621760 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=20m15.143s requests=35904737 failures=0 heapBytes=71675952 rssBytes=106598400 goroutines=331 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:16} + mixedSoak_test.go:124: mixedTotals phase=running health=35828787 slowUploads=72182 slowDownloads=3768 uploadedBytes=18922078208 downloadedBytes=31608274944 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=20m30.143s requests=36350214 failures=0 heapBytes=50574208 rssBytes=84537344 goroutines=306 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:10} + mixedSoak_test.go:124: mixedTotals phase=running health=36273329 slowUploads=73074 slowDownloads=3811 uploadedBytes=19155910656 downloadedBytes=31968985088 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=20m45.143s requests=36794194 failures=0 heapBytes=52755624 rssBytes=104304640 goroutines=347 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=36716374 slowUploads=73964 slowDownloads=3856 uploadedBytes=19389218816 downloadedBytes=32346472448 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=21m0.143s requests=37237267 failures=0 heapBytes=90759440 rssBytes=121802752 goroutines=285 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:9} + mixedSoak_test.go:124: mixedTotals phase=running health=37158506 slowUploads=74857 slowDownloads=3904 uploadedBytes=19623313408 downloadedBytes=32749125632 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=21m15.143s requests=37682135 failures=0 heapBytes=75071160 rssBytes=121802752 goroutines=332 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:15} + mixedSoak_test.go:124: mixedTotals phase=running health=37602436 slowUploads=75747 slowDownloads=3952 uploadedBytes=19856621568 downloadedBytes=33151778816 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=21m30.143s requests=38125279 failures=0 heapBytes=84651016 rssBytes=117342208 goroutines=331 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:16} + mixedSoak_test.go:124: mixedTotals phase=running health=38044640 slowUploads=76639 slowDownloads=4000 uploadedBytes=20090454016 downloadedBytes=33554432000 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=21m45.143s requests=38569220 failures=0 heapBytes=70593904 rssBytes=97050624 goroutines=373 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:11} + mixedSoak_test.go:124: mixedTotals phase=running health=38487645 slowUploads=77531 slowDownloads=4044 uploadedBytes=20324286464 downloadedBytes=33923530752 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=22m0.143s requests=39016925 failures=0 heapBytes=59654016 rssBytes=93556736 goroutines=325 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=38934413 slowUploads=78424 slowDownloads=4088 uploadedBytes=20558381056 downloadedBytes=34292629504 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=22m15.143s requests=39463910 failures=0 heapBytes=53261856 rssBytes=114139136 goroutines=331 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=39380459 slowUploads=79315 slowDownloads=4136 uploadedBytes=20791951360 downloadedBytes=34695282688 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=22m30.143s requests=39910237 failures=0 heapBytes=62860672 rssBytes=121815040 goroutines=366 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:12} + mixedSoak_test.go:124: mixedTotals phase=running health=39825849 slowUploads=80209 slowDownloads=4184 uploadedBytes=21026308096 downloadedBytes=35097935872 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=22m45.143s requests=40360417 failures=0 heapBytes=70322976 rssBytes=121286656 goroutines=368 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:16} + mixedSoak_test.go:124: mixedTotals phase=running health=40275086 slowUploads=81099 slowDownloads=4232 uploadedBytes=21259616256 downloadedBytes=35500589056 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=23m0.143s requests=40801788 failures=0 heapBytes=76912600 rssBytes=97243136 goroutines=321 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:16} + mixedSoak_test.go:124: mixedTotals phase=running health=40715518 slowUploads=81990 slowDownloads=4280 uploadedBytes=21493186560 downloadedBytes=35903242240 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=23m15.143s requests=41246645 failures=0 heapBytes=54950248 rssBytes=84979712 goroutines=337 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:12} + mixedSoak_test.go:124: mixedTotals phase=running health=41159438 slowUploads=82883 slowDownloads=4324 uploadedBytes=21727281152 downloadedBytes=36272340992 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=23m30.143s requests=41687236 failures=0 heapBytes=43818576 rssBytes=101183488 goroutines=321 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:7} + mixedSoak_test.go:124: mixedTotals phase=running health=41599097 slowUploads=83774 slowDownloads=4368 uploadedBytes=21960851456 downloadedBytes=36641439744 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=23m45.143s requests=42128546 failures=0 heapBytes=54495128 rssBytes=121827328 goroutines=288 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:9} + mixedSoak_test.go:124: mixedTotals phase=running health=42039470 slowUploads=84667 slowDownloads=4416 uploadedBytes=22194946048 downloadedBytes=37044092928 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=24m0.143s requests=42569443 failures=0 heapBytes=98238024 rssBytes=119263232 goroutines=362 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:15} + mixedSoak_test.go:124: mixedTotals phase=running health=42479426 slowUploads=85556 slowDownloads=4464 uploadedBytes=22427992064 downloadedBytes=37446746112 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=24m15.143s requests=43006434 failures=0 heapBytes=61451176 rssBytes=115818496 goroutines=330 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:16} + mixedSoak_test.go:124: mixedTotals phase=running health=42915474 slowUploads=86448 slowDownloads=4512 uploadedBytes=22661824512 downloadedBytes=37849399296 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=24m30.143s requests=43446211 failures=0 heapBytes=53221152 rssBytes=96935936 goroutines=294 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:12} + mixedSoak_test.go:124: mixedTotals phase=running health=43354315 slowUploads=87339 slowDownloads=4557 uploadedBytes=22895394816 downloadedBytes=38226886656 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=24m45.143s requests=43888201 failures=0 heapBytes=41094952 rssBytes=88412160 goroutines=306 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=43795377 slowUploads=88230 slowDownloads=4600 uploadedBytes=23128965120 downloadedBytes=38587596800 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=25m0.143s requests=44331683 failures=0 heapBytes=74520696 rssBytes=117968896 goroutines=360 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=44237912 slowUploads=89123 slowDownloads=4648 uploadedBytes=23363059712 downloadedBytes=38990249984 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=25m15.143s requests=44771023 failures=0 heapBytes=61522184 rssBytes=121311232 goroutines=314 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:11} + mixedSoak_test.go:124: mixedTotals phase=running health=44676311 slowUploads=90016 slowDownloads=4696 uploadedBytes=23597154304 downloadedBytes=39392903168 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=25m30.143s requests=45210979 failures=0 heapBytes=71823520 rssBytes=121315328 goroutines=364 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:16} + mixedSoak_test.go:124: mixedTotals phase=running health=45115328 slowUploads=90908 slowDownloads=4744 uploadedBytes=23830986752 downloadedBytes=39795556352 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=25m45.143s requests=45655488 failures=0 heapBytes=73294312 rssBytes=98951168 goroutines=352 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:15} + mixedSoak_test.go:124: mixedTotals phase=running health=45558899 slowUploads=91798 slowDownloads=4791 uploadedBytes=24064294912 downloadedBytes=40189820928 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=26m0.143s requests=46098111 failures=0 heapBytes=61891384 rssBytes=85794816 goroutines=331 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:11} + mixedSoak_test.go:124: mixedTotals phase=running health=46000586 slowUploads=92690 slowDownloads=4835 uploadedBytes=24298127360 downloadedBytes=40558919680 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=26m15.143s requests=46542135 failures=0 heapBytes=60185208 rssBytes=103088128 goroutines=303 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:7} + mixedSoak_test.go:124: mixedTotals phase=running health=46443672 slowUploads=93583 slowDownloads=4880 uploadedBytes=24532221952 downloadedBytes=40936407040 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=26m30.143s requests=46985865 failures=0 heapBytes=82859896 rssBytes=121839616 goroutines=364 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:9} + mixedSoak_test.go:124: mixedTotals phase=running health=46886464 slowUploads=94473 slowDownloads=4928 uploadedBytes=24765530112 downloadedBytes=41339060224 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=26m45.143s requests=47426140 failures=0 heapBytes=76512768 rssBytes=121827328 goroutines=319 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:15} + mixedSoak_test.go:124: mixedTotals phase=running health=47325797 slowUploads=95367 slowDownloads=4976 uploadedBytes=24999886848 downloadedBytes=41741713408 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=27m0.143s requests=47864835 failures=0 heapBytes=96303144 rssBytes=115740672 goroutines=380 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:16} + mixedSoak_test.go:124: mixedTotals phase=running health=47763553 slowUploads=96258 slowDownloads=5024 uploadedBytes=25233457152 downloadedBytes=42144366592 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=27m15.143s requests=48307600 failures=0 heapBytes=74108016 rssBytes=93282304 goroutines=358 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:12} + mixedSoak_test.go:124: mixedTotals phase=running health=48205383 slowUploads=97149 slowDownloads=5068 uploadedBytes=25467027456 downloadedBytes=42513465344 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=27m30.143s requests=48750920 failures=0 heapBytes=48575472 rssBytes=90746880 goroutines=376 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=48647765 slowUploads=98043 slowDownloads=5112 uploadedBytes=25701384192 downloadedBytes=42882564096 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=27m45.143s requests=49191794 failures=0 heapBytes=89907488 rssBytes=120475648 goroutines=357 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=49087700 slowUploads=98934 slowDownloads=5160 uploadedBytes=25934954496 downloadedBytes=43285217280 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=28m0.143s requests=49637025 failures=0 heapBytes=71241912 rssBytes=120827904 goroutines=338 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:12} + mixedSoak_test.go:124: mixedTotals phase=running health=49531996 slowUploads=99826 slowDownloads=5208 uploadedBytes=26168786944 downloadedBytes=43687870464 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=28m15.143s requests=50077201 failures=0 heapBytes=71823760 rssBytes=121327616 goroutines=342 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:16} + mixedSoak_test.go:124: mixedTotals phase=running health=49971226 slowUploads=100719 slowDownloads=5256 uploadedBytes=26402881536 downloadedBytes=44090523648 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=28m30.143s requests=50524644 failures=0 heapBytes=88321680 rssBytes=107315200 goroutines=315 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:15} + mixedSoak_test.go:124: mixedTotals phase=running health=50417733 slowUploads=101610 slowDownloads=5303 uploadedBytes=26636451840 downloadedBytes=44484788224 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=28m45.143s requests=50971603 failures=0 heapBytes=49721352 rssBytes=87646208 goroutines=335 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:9} + mixedSoak_test.go:124: mixedTotals phase=running health=50863761 slowUploads=102501 slowDownloads=5346 uploadedBytes=26870022144 downloadedBytes=44845498368 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=29m0.143s requests=51417802 failures=0 heapBytes=55859872 rssBytes=104423424 goroutines=356 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:8} + mixedSoak_test.go:124: mixedTotals phase=running health=51309017 slowUploads=103394 slowDownloads=5392 uploadedBytes=27104116736 downloadedBytes=45231374336 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=29m15.143s requests=51862535 failures=0 heapBytes=63482984 rssBytes=121856000 goroutines=349 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:10} + mixedSoak_test.go:124: mixedTotals phase=running health=51752810 slowUploads=104285 slowDownloads=5440 uploadedBytes=27337687040 downloadedBytes=45634027520 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=29m30.143s requests=52305456 failures=0 heapBytes=85512792 rssBytes=118308864 goroutines=332 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:15} + mixedSoak_test.go:124: mixedTotals phase=running health=52194795 slowUploads=105177 slowDownloads=5488 uploadedBytes=27571519488 downloadedBytes=46036680704 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=29m45.143s requests=52747376 failures=0 heapBytes=74143584 rssBytes=114286592 goroutines=333 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:16} + mixedSoak_test.go:124: mixedTotals phase=running health=52635773 slowUploads=106069 slowDownloads=5536 uploadedBytes=27805351936 downloadedBytes=46439333888 serverFailures=0 + mixedSoak_test.go:135: phase=running elapsed=30m0.143s requests=53191576 failures=0 heapBytes=43650296 rssBytes=97910784 goroutines=272 fileDescriptors=23 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:8 ActiveRequests:12} + mixedSoak_test.go:124: mixedTotals phase=running health=53079033 slowUploads=106963 slowDownloads=5580 uploadedBytes=28039708672 downloadedBytes=46808432640 serverFailures=0 + mixedSoak_test.go:190: phase=after elapsed=30m2.635s requests=53191687 failures=0 heapBytes=44586352 rssBytes=97927168 goroutines=2 fileDescriptors=6 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:5 RSTStreams:0 GoAwayFrames:1 ActiveConnections:0 ActiveRequests:0} + mixedSoak_test.go:124: mixedTotals phase=after health=53079128 slowUploads=106971 slowDownloads=5588 uploadedBytes=28041805824 downloadedBytes=46875541504 serverFailures=0 + mixedSoak_test.go:196: connection=0 health=6632549 slowUploads=13372 slowDownloads=698 + mixedSoak_test.go:196: connection=1 health=6629530 slowUploads=13371 slowDownloads=699 + mixedSoak_test.go:196: connection=2 health=6636544 slowUploads=13376 slowDownloads=699 + mixedSoak_test.go:196: connection=3 health=6634170 slowUploads=13369 slowDownloads=698 + mixedSoak_test.go:196: connection=4 health=6636236 slowUploads=13368 slowDownloads=698 + mixedSoak_test.go:196: connection=5 health=6640096 slowUploads=13371 slowDownloads=698 + mixedSoak_test.go:196: connection=6 health=6634043 slowUploads=13372 slowDownloads=699 + mixedSoak_test.go:196: connection=7 health=6635960 slowUploads=13372 slowDownloads=699 + mixedSoak_test.go:209: phase=afterReclaim elapsed=30m2.639s requests=53191687 failures=0 heapBytes=461176 rssBytes=95506432 goroutines=2 fileDescriptors=6 stats={AcceptedConnections:8 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:5 RSTStreams:0 GoAwayFrames:1 ActiveConnections:0 ActiveRequests:0} +--- PASS: TestTLSMixedSoak (1802.64s) +PASS +ok git.yuntuo.hk/k2safe/go-omni/transport/http2 1802.651s +PASS HTTP/2 TLS soak diff --git a/transport/native/HTTP2.md b/transport/native/HTTP2.md index 06ac209..7cd5398 100644 --- a/transport/native/HTTP2.md +++ b/transport/native/HTTP2.md @@ -4,7 +4,11 @@ 当前已提供独立的 `transport/http2` 实验 Runner。它已经验证 TLS/h2、h2c、本地连接和请求闸门、GOAWAY 排空以及 RST_STREAM 取消;这些结果用于验证生命周期设计,不代表 native 已经启用 HTTP/2。实验 Runner 还覆盖了默认 1 MiB 头部上限、8 MiB 请求体上限、128 路同连接 stream 多路复用,以及 2 MiB 慢读取 body 在窗口耗尽后的恢复。`TestTLSSoak` 默认运行 3 秒,Linux 长测通过 `python3 scripts/verifyHTTP2.py --duration 30m` 启动。 -2026-09-23 已在 Linux amd64 完成单 TLS 连接、128 个 worker 的 30 分钟长测:58,102,476 次请求,0 失败与协议错误,采样 RSS 峰值约 22.6 MiB,退出后连接、活动请求和 FD 回收。测试容器限制为 2 核、2 GiB,测量包含同一进程中的客户端与服务端,见 [报告](../../performance/http2SoakLinux.json)。本次包含慢 Handler 与 64 KiB body;多连接、持续慢客户端及代理 HTTP/2 回源验收仍未完成。 +2026-09-23 已在 Linux amd64 完成单 TLS 连接、128 个 worker 的 30 分钟长测:58,102,476 次请求,0 失败与协议错误,采样 RSS 峰值约 22.6 MiB,退出后连接、活动请求和 FD 回收。测试容器限制为 2 核、2 GiB,测量包含同一进程中的客户端与服务端,见 [报告](../../performance/http2SoakLinux.json)。该场景包含慢 Handler 与 64 KiB body。 + +同日完成多连接慢客户端混合场景:8 条独立 TLS 连接,每条 14 个普通请求 worker、1 个慢上传 worker、1 个慢下载 worker,持续 30 分钟。256 KiB 上传每 4 KiB 等待 2 ms;8 MiB 下载每次最多读取 64 KiB 后等待 20 ms。共完成 53,191,687 次请求,其中慢上传 106,971 次、慢下载 5,588 次,0 失败与协议错误;每条连接均覆盖三类请求且没有重连。采样 RSS 峰值约 116.6 MiB,包含客户端、服务端与下载缓冲;退出后活动连接/请求归零、goroutine 回到 2、FD 回到 6,释放测试数据并两次 GC 后存活堆约 450 KiB。运行命令为 `python3 scripts/verifyHTTP2.py --scenario mixed --duration 30m`,完整采样见 [混合长测报告](../../performance/http2MixedSoakLinux.json)。8 MiB 下载超过客户端的 stream 初始窗口,需要窗口更新,但不代表耗尽了连接级窗口;后者由下述独立帧测试验证。HTTP/2 回源代理联调仍未完成。 + +连接级流控及关闭边界测试已通过 Linux amd64 的 HTTP/2 全包 race、vet、build 回归,测试提交、执行命令和原始日志校验值见 [边界回归报告](../../performance/http2FlowControlLinux.json)。 ## 目标边界 @@ -29,11 +33,11 @@ HTTP/2 版本需要在 native `Stats` 之外至少记录:活动 stream、被 ## 进入实现前的验收矩阵 - TLS ALPN:只协商 `h2`,HTTP/1.1 客户端仍由现有 native 路径处理;不支持的 ALPN 在握手前后都不会误入错误解析器。 -- 多路复用:一个连接并发至少 128 个 stream,响应和 requestId 不串线,单个慢 stream 不阻塞其他 stream(实验 Runner 已覆盖 128 路同连接 stream)。 -- 流控:慢读取、慢写、窗口耗尽和大 body 都能恢复;内存不会随未消费 body 无限增长。实验 Runner 已覆盖 2 MiB 慢读取 body 和请求体上限,以及客户端将 stream 窗口设为零时的大响应阻塞、同连接 204、其他连接带 body 响应、WINDOW_UPDATE 恢复发送和 RST_STREAM 取消回收;连接级窗口耗尽和持续慢客户端混合长测仍需补齐。 -- 取消:RST_STREAM、客户端断开、服务关闭分别只影响应受影响的请求,并能在 metrics 中看到回收;当前实验 Runner 已覆盖 RST_STREAM 与服务关闭。 +- 多路复用:一个连接并发至少 128 个 stream,响应和 requestId 不串线,在流与连接级发送额度充足时,单个慢 stream 不阻塞其他可发送 stream(实验 Runner 已覆盖 128 路同连接 stream)。 +- 流控:慢读取、慢写、窗口耗尽和大 body 都能恢复;内存不会随未消费 body 无限增长。实验 Runner 已覆盖 2 MiB 慢读取 body 和请求体上限,以及客户端将 stream 窗口设为零时的大响应阻塞、同连接 204、其他连接带 body 响应、WINDOW_UPDATE 恢复发送和 RST_STREAM 取消回收;连接级独立测试将初始 stream 窗口设为 128 KiB,仅消耗默认 65,535 字节连接窗口,确认暂停与隔离,连接级 WINDOW_UPDATE 后恢复并复用连接;持续慢客户端混合长测也已通过。连接级窗口耗尽时,同连接的其他 DATA 也受该窗口约束,HEADERS 和其他 TCP 连接仍可继续。 +- 取消:RST_STREAM、客户端断开、服务关闭分别只影响应受影响的请求,并能在 metrics 中看到回收;当前实验 Runner 已覆盖 RST_STREAM 与服务关闭,包括客户端零接收窗口造成写阻塞时,关闭超时强制解除写阻塞、取消请求并回收连接。 - 背压:连接上限、全局 stream 上限、单连接 stream 上限和 header/body 上限均能快速拒绝并自动恢复。实验 Runner 已增加 TLS 未完成握手占满连接槽位时的及时拒绝、握手超时回收及后续正常 HTTPS 请求恢复验收。 - 代理联调:Nginx/Cloudflare 的 TLS、Keep-Alive、超时、GOAWAY 和优雅发布行为与 HTTP/1.1 回源结果一致。现有 `verifyProxy.py` 检查边缘 HTTP/2 协商与 native HTTP/1.1 TLS 回源,不构成 HTTP/2 上游 GOAWAY/排空的验收依据。 -- 长测:Linux amd64 至少 30 分钟 TLS、多连接、多 stream、慢客户端混合场景;要求 0 协议错误、0 请求串线,连接、stream、goroutine 和 FD 在停止后回收。单连接 30 分钟场景已通过,完整混合场景仍待验证。 +- 长测:Linux amd64 至少 30 分钟 TLS、多连接、多 stream、慢客户端混合场景;要求 0 协议错误、0 请求串线,连接、stream、goroutine 和 FD 在停止后回收。单连接场景与 8 连接慢上传/慢下载混合场景均已通过,原始日志与采样分别保存在两个报告中。 只有上述矩阵完成,才把 `h2` 加入 native 的 TLS ALPN,并考虑把 HTTP/2 作为独立版本能力发布。此前生产环境使用 Nginx/Cloudflare 终止 HTTP/2 后以 HTTP/1.1 回源,或使用支持 HTTP/2 的 `transport/nethttp`。