diff --git a/docs/server-performance-2026-10-11.json b/docs/server-performance-2026-10-11.json new file mode 100644 index 000000000..1c9b3a1a0 --- /dev/null +++ b/docs/server-performance-2026-10-11.json @@ -0,0 +1,21508 @@ +{ + "capturedAtUtc": "2026-10-11T05:16:45Z", + "observationLocal": "October 11, 2026, approximately 1:13\u20131:17 a.m. America/New_York", + "target": { + "app": "rs-sdk-demo", + "release": 190, + "image": "world-feed-68ff9ebf8", + "region": "iad", + "cpus": 2, + "cpuKind": "performance", + "memoryMB": 4096, + "targetTickMs": 300 + }, + "conclusion": "Intermittent severe server lag. Baseline cycles around 150\u2013158 ms, but session-takeover burst produced a 7873 ms game cycle, 7685 ms login phase and 8177 ms tick interval. Final rolling average cycle 200.2 ms and interval 334.1 ms.", + "initialObservation": { + "tick": 403009, + "players": 1315, + "window": 300, + "overBudget": 3, + "avgCycleMs": 157.6, + "avgIntervalMs": 305.9, + "peakCycleMs": 2577, + "peakLogoutMs": 2431, + "peakIntervalMs": 2682 + }, + "takeoverBurst": { + "capturedAt": "2026-10-11T05:16:39.696Z", + "windowStart": "2026-10-11T05:15:13Z", + "windowEnd": "2026-10-11T05:15:29Z", + "replacements": 185, + "distinctAccounts": 185, + "maxReplacementsOneAccount": 1, + "groups": [ + [ + "tygem#", + 145 + ], + [ + "tyrun#", + 28 + ], + [ + "tyrope#", + 4 + ], + [ + "tywalk#", + 4 + ], + [ + "tyess#", + 2 + ], + [ + "typick#", + 1 + ], + [ + "tyarms#", + 1 + ] + ] + }, + "rootCauseEvidence": [ + { + "source": "server/engine/src/engine/World.ts:992", + "finding": "Existing-session takeover calls other.save(); no login work budget bounds the newPlayers loop." + }, + { + "source": "server/engine/src/engine/entity/Player.ts:308", + "finding": "Default save calls World.checkpointPlayers(this,bytes)." + }, + { + "source": "server/engine/src/engine/World.ts:1435", + "finding": "Every checkpoint serializes all online players plus pending logout saves, then synchronously upserts them into market.sqlite." + }, + { + "source": "server/engine/src/engine/World.ts:2824", + "finding": "Each logout flush also invokes a whole-world checkpoint." + }, + { + "source": "server/engine/src/engine/market/MarketStore.ts:68", + "finding": "WAL with synchronous=FULL preserves durable account/GE consistency. Repeated checkpoints multiply work; do not simply remove durability or save only one participant." + } + ], + "recommendedOrder": [ + { + "priority": 1, + "change": "Stagger fleet restarts/reconnects with jitter; stop duplicate client ownership for the same account. The sampled burst replaced 185 distinct accounts once each, so a repeated per-account loop was not demonstrated." + }, + { + "priority": 1, + "change": "Bound login processing by elapsed time and count per tick; preserve queued arrivals across ticks rather than clearing newPlayers indiscriminately. Deduplicate queued requests per account and explicitly close superseded requests. Validate both reconnect and session takeover." + }, + { + "priority": 1, + "change": "Redesign/coalesce redundant whole-world checkpoints inside safe synchronous phases. Include pending logout saves, temp-inventory recovery and cross-player trade/GE consistency, and acknowledge persistence only after commit. Add serialization, SQL, commit timings and checkpoint counts before changing this boundary." + }, + { + "priority": 2, + "change": "Move hiscores SQL and rendering off the game thread, using the existing standalone hiscores service or a worker. Retain/increase bounded caching, use stale-while-revalidate from the worker, and cache rank lookup maps to avoid repeated linear searches." + }, + { + "priority": 2, + "change": "Benchmark and add hiscore and hiscore_large indexes on (profile,type,level DESC,playtime ASC,account_id) in a controlled migration. An isolated schema query-plan check eliminated the ranked query temporary sort." + }, + { + "priority": 3, + "change": "Optimize steady clientOut work (roughly 56\u201365 ms/tick): player visibility/update construction, zone updates and socket sends. WebSocket batching is already deployed. Spectator feed accounted for 4.7\u20135.3% inclusive busy-JS samples and is a smaller target." + }, + { + "priority": 3, + "change": "Add p95/p99 tick intervals, event-loop delay, checkpoint and login counts, and separate processInfo/worldfeed phase timings. Current overBudget counts only cycle runtime, missing HTTP/event-loop gaps." + }, + { + "priority": 3, + "change": "Plan telemetry/database retention and disk capacity: 86% disk used, about 9.7 GiB free; main database about 55.2 GiB. Do not infer that disk size alone caused the sampled stall. Avoid a live full-database VACUUM." + } + ], + "profileEvidence": { + "profile1": { + "durationMs": 10000, + "intervalUs": 500, + "tickStart": 403043, + "tickEnd": 403077, + "busyJsEstimatePercent": 39, + "sqliteAllLeafPercentOfSamples": 9.3, + "worldFeedInclusivePercentOfSamples": 4.7, + "excerpt": "# profile 10000ms @ 500us, 7736 samples (~39% of wall busy in JS), ticks 403043..403077, players 1315\n\n# inclusive samples per frame (top 35)\n 2820 36.5% cycle src/engine/World.ts:458\n 996 12.9% send Unknown Executable\n 964 12.5% processTicksAndRejections FTL\n 960 12.4% (anon) Unknown Executable\n 942 12.2% cycle src/engine/World.ts:425\n 926 12.0% generatorResume FTL\n 917 11.9% updatePlayers src/engine/entity/NetworkPlayer.ts:288\n 917 11.9% processClientsOut src/engine/World.ts:1283\n 915 11.8% next FTL\n 762 9.9% sendNow src/server/ws/WSClientSocket.ts:98\n 752 9.7% processClientsOut src/engine/World.ts:1287\n 729 9.4% write src/engine/entity/Player.ts:2301\n 720 9.3% all Unknown Executable\n 719 9.3% executeQuery src/db/dialect/BunSqliteDriver.ts:63\n 719 9.3% (anon) /opt/server/engine/node_modules/kysely/dist/query-executor/query-executor-base.js:39\n 719 9.3% (anon) /opt/server/engine/node_modules/kysely/dist/query-executor/query-executor-base.js:38\n 719 9.3% provideConnection /opt/server/engine/node_modules/kysely/dist/driver/default-connection-provider.js:10\n 717 9.3% executeQuery src/db/dialect/BunSqliteDriver.ts:71\n 716 9.3% execute src/engine/script/ScriptRunner.ts:156\n 651 8.4% runScript src/engine/entity/Player.ts:2235\n 644 8.3% executeScript src/engine/entity/Player.ts:2262\n 601 7.8% cycle src/engine/World.ts:414\n 557 7.2% processNpcs src/engine/World.ts:753\n 549 7.1% cycle src/engine/World.ts:461\n 541 7.0% processPlayers src/engine/World.ts:801\n 476 6.2% endBatch src/server/ws/WSClientSocket.ts:86\n 476 6.2% processClientsOut src/engine/World.ts:1306\n 473 6.1% writeInner src/engine/entity/NetworkPlayer.ts:226\n 440 5.7% flush src/server/ws/WSClientSocket.ts:75\n 438 5.7% cycle src/engine/World.ts:434\n 417 5.4% save src/engine/entity/Player.ts:308\n 397 5.1% tryInteract src/engine/entity/Player.ts:1226\n 387 5.0% cycle src/engine/World.ts:402\n 360 4.7% cycleWorldFeed src/web/worldfeed.ts:215\n 358 4.6% turn src/engine/entity/Npc.ts:181\n\n# hottest leaf <- nearest source caller (top 35)\n 756 9.8% send Unknown Executable <- sendNow src/server/ws/WSClientSocket.ts:98\n 717 9.3% all Unknown Executable <- executeQuery src/db/dialect/BunSqliteDriver.ts:71\n 344 4.4% updateZones src/engine/entity/NetworkPlayer.ts:314 <- processClientsOut src/engine/World.ts:1287\n 300 3.9% getNearbyPlayersZones src/network/rsbuf/build.ts:4294967295 <- writeNewPlayers src/network/rsbuf/info.ts:96\n 160 2.1% updateZones src/engine/entity/NetworkPlayer.ts:301 <- processClientsOut src/engine/World.ts:1287\n 154 2.0% writePartialFollows src/engine/zone/Zone.ts:209 <- updateZones src/engine/entity/NetworkPlayer.ts:313\n 140 1.8% getNearbyNpcs src/network/rsbuf/build.ts:213 <- writeNewNpcs src/network/rsbuf/info.ts:336\n 136 1.8% send Unknown Executable <- send src/web/worldfeed.ts:589\n 118 1.5% subarray Unknown Executable <- pdata src/io/Packet.ts:352\n 116 1.5% set Unknown Executable <- read src/server/ClientSocket.ts:54\n 111 1.4% subarray Unknown Executable <- writeInner src/engine/entity/NetworkPlayer.ts:226\n 111 1.4% execute src/engine/script/ScriptRunner.ts:156 <- runScript src/engine/entity/Player.ts:2235\n 76 1.0% send Unknown Executable <- (anon) src/web/websocket.ts:131\n 74 1.0% subarray Unknown Executable <- pdata src/network/rsbuf/packet.ts:44\n 71 0.9% writeInner src/engine/entity/NetworkPlayer.ts:4294967295 <- write src/engine/entity/Player.ts:2301\n 70 0.9% generatorResume FTL <- processClientsIn src/engine/World.ts:690\n 64 0.8% generatorResume FTL <- processInfo src/engine/World.ts:1223\n 64 0.8% processQueues src/engine/entity/Player.ts:938 <- processPlayers src/engine/World.ts:785\n 61 0.8% getRecordJson src/web/worldfeed.ts:369 <- visit src/web/worldfeed.ts:349\n 60 0.8% getPlayerByUid src/engine/World.ts:1925 <- updateInvs src/engine/entity/NetworkPlayer.ts:360\n 60 0.8% stringify Unknown Executable <- handleRequest src/web/index.ts:136\n 60 0.8% getInventory src/engine/entity/Player.ts:1538 <- updateInvs src/engine/entity/NetworkPlayer.ts:365\n 57 0.7% alloc src/io/Packet.ts:130 <- save src/engine/entity/Player.ts:210\n 56 0.7% resetEntity src/engine/entity/Player.ts:520 <- processCleanup src/engine/World.ts:1325\n 53 0.7% typedArrayViewLength Unknown Executable <- (anon) src/engine/entity/EntityList.ts:37\n 50 0.6% takeStep src/engine/entity/PathingEntity.ts:4294967295 <- validateAndAdvanceStep src/engine/entity/PathingEntity.ts:221\n 46 0.6% generatorResume FTL <- getAllPlayersSafe src/engine/zone/Zone.ts:412\n 46 0.6% generatorResume FTL <- processClientsOut src/engine/World.ts:1274\n 46 0.6% getRecordJson src/web/worldfeed.ts:365 <- visit src/web/worldfeed.ts:349\n 46 0.6% run Unknown Executable <- #runNoArgs bun:sqlite:140\n 45 0.6% run Unknown Executable <- #run bun:sqlite:187\n 44 0.6% highdefinition src/network/rsbuf/info.ts:190 <- extend src/network/rsbuf/info.ts:178\n 43 0.6% generatorResume FTL <- processWorld src/engine/World.ts:663\n 43 0.6% stringify Unknown Executable <- getRecordJson src/web/worldfeed.ts:370\n 42 0.5% writePlayers src/network/rsbuf/info.ts:80 <- encode src/network/rsbuf/info.ts:37\n\n\n" + }, + "profile3": { + "durationMs": 8000, + "intervalUs": 1000, + "tickStart": 403354, + "tickEnd": 403381, + "busyJsEstimatePercent": 39, + "sqliteAllLeafPercentOfSamples": 0.4, + "worldFeedInclusivePercentOfSamples": 5.3, + "excerpt": "# profile 8000ms @ 1000us, 3118 samples (~39% of wall busy in JS), ticks 403354..403381, players 1328\n\n# inclusive samples per frame (top 100)\n 1190 38.2% cycle src/engine/World.ts:458\n 520 16.7% cycle src/engine/World.ts:425\n 476 15.3% send Unknown Executable\n 428 13.7% processClientsOut src/engine/World.ts:1283\n 421 13.5% updatePlayers src/engine/entity/NetworkPlayer.ts:288\n 383 12.3% execute src/engine/script/ScriptRunner.ts:156\n 354 11.4% write src/engine/entity/Player.ts:2301\n 346 11.1% executeScript src/engine/entity/Player.ts:2262\n 344 11.0% sendNow src/server/ws/WSClientSocket.ts:98\n 342 11.0% runScript src/engine/entity/Player.ts:2235\n 321 10.3% generatorResume FTL\n 306 9.8% processPlayers src/engine/World.ts:801\n 294 9.4% processClientsOut src/engine/World.ts:1287\n 279 8.9% cycle src/engine/World.ts:461\n 271 8.7% next FTL\n 269 8.6% cycle src/engine/World.ts:414\n 253 8.1% processNpcs src/engine/World.ts:753\n 226 7.2% writeInner src/engine/entity/NetworkPlayer.ts:226\n 222 7.1% tryInteract src/engine/entity/Player.ts:1226\n 197 6.3% endBatch src/server/ws/WSClientSocket.ts:86\n 197 6.3% processClientsOut src/engine/World.ts:1306\n 185 5.9% flush src/server/ws/WSClientSocket.ts:75\n 174 5.6% cycle src/engine/World.ts:402\n 166 5.3% subarray Unknown Executable\n 166 5.3% cycleWorldFeed src/web/worldfeed.ts:215\n 163 5.2% turn src/engine/entity/Npc.ts:181\n 161 5.2% (anon) Unknown Executable\n 161 5.2% processTicksAndRejections FTL\n 159 5.1% send src/server/ws/WSClientSocket.ts:49\n 139 4.5% processClientsIn src/engine/World.ts:701\n 139 4.5% updateNpcs src/engine/entity/NetworkPlayer.ts:292\n 139 4.5% processClientsOut src/engine/World.ts:1285\n 138 4.4% forEachInRect src/web/worldfeed.ts:279\n 137 4.4% updateZones src/engine/entity/NetworkPlayer.ts:314\n 136 4.4% cycle src/engine/World.ts:395\n 132 4.2% decodeIn src/engine/entity/NetworkPlayer.ts:69\n 132 4.2% encode src/network/rsbuf/info.ts:37\n 131 4.2% processInteraction src/engine/entity/Player.ts:1340\n 130 4.2% cycle src/engine/World.ts:447\n 130 4.2% encode src/network/rsbuf/info.ts:38\n 128 4.1% processMovement src/engine/entity/PathingEntity.ts:146\n 122 3.9% processMovementInteraction src/engine/entity/Npc.ts:601\n 118 3.8% processInteraction src/engine/entity/Player.ts:1319\n 113 3.6% writeNewPlayers src/network/rsbuf/info.ts:96\n 111 3.6% wanderMode src/engine/entity/Npc.ts:725\n 109 3.5% updateMovement src/engine/entity/Npc.ts:371\n 103 3.3% visit src/web/worldfeed.ts:349\n 100 3.2% unsetMapFlag src/engine/entity/Player.ts:2306\n 97 3.1% huntAll src/engine/entity/Npc.ts:273\n 97 3.1% processWorld src/engine/World.ts:671\n 95 3.0% cycleSubscriber src/web/worldfeed.ts:308\n 93 3.0% validateAndAdvanceStep src/engine/entity/PathingEntity.ts:221\n 93 3.0% (anon) src/web/worldfeed.ts:309\n 92 3.0% cycle src/engine/World.ts:468\n 91 2.9% huntPlayers src/engine/entity/Npc.ts:998\n 90 2.9% highdefinition src/network/rsbuf/info.ts:190\n 88 2.8% set Unknown Executable\n 86 2.8% generator src/engine/script/ScriptIterators.ts:79\n 83 2.7% send src/web/worldfeed.ts:589\n 78 2.5% extend src/network/rsbuf/info.ts:178\n 72 2.3% read src/server/ClientSocket.ts:54\n 72 2.3% stopAction src/engine/entity/Player.ts:1016\n 72 2.3% pdata src/network/rsbuf/packet.ts:44\n 71 2.3% read src/engine/entity/NetworkPlayer.ts:91\n 71 2.3% writeInner src/engine/entity/NetworkPlayer.ts:218\n 69 2.2% writePlayers src/network/rsbuf/info.ts:84\n 67 2.1% getNearbyPlayersZones src/network/rsbuf/build.ts:4294967295\n 67 2.1% processClientsOut src/engine/World.ts:1289\n 67 2.1% updateZones src/engine/entity/NetworkPlayer.ts:313\n 64 2.1% write src/network/rsbuf/renderer.ts:113\n 63 2.0% encode src/network/rsbuf/info.ts:291\n 62 2.0% cycleWorldFeed src/web/worldfeed.ts:208\n 57 1.8% getAllPlayersSafe src/engine/zone/Zone.ts:412\n 57 1.8% updateZones src/engine/entity/NetworkPlayer.ts:301\n 57 1.8% writePartialFollows src/engine/zone/Zone.ts:4294967295\n 56 1.8% getNearbyNpcs src/network/rsbuf/build.ts:4294967295\n 56 1.8% writeNewNpcs src/network/rsbuf/info.ts:336\n 56 1.8% pdata src/io/Packet.ts:352\n 52 1.7% (anon) src/engine/entity/EntityList.ts:37\n 51 1.6% processPlayers src/engine/World.ts:785\n 50 1.6% findIndex FTL\n 47 1.5% rankIn src/web/pages/hiscores.ts:134\n 47 1.5% takeStep src/engine/entity/PathingEntity.ts:664\n 46 1.5% executeScript src/engine/entity/Npc.ts:226\n 45 1.4% arrayIteratorNextHelper FTL\n 45 1.4% slice Unknown Executable\n 44 1.4% message src/web/websocket.ts:188\n 44 1.4% cycleWorldFeed src/web/worldfeed.ts:200\n 43 1.4% getNearbyPlayersZones src/network/rsbuf/build.ts:135\n 43 1.4% cycleSubscriber src/web/worldfeed.ts:300\n 43 1.4% getRecordJson src/web/worldfeed.ts:369\n 42 1.3% 2079 src/engine/script/handlers/PlayerOps.ts:396\n 41 1.3% onClientData src/engine/World.ts:2508\n 41 1.3% turn src/engine/entity/Npc.ts:179\n 41 1.3% (anon) src/web/worldfeed.ts:301\n 40 1.3% all src/datastruct/LinkList.ts:97\n 40 1.3% processPlayers src/engine/World.ts:793\n 40 1.3% processInfo src/engine/World.ts:1176\n 40 1.3% processInfo src/engine/World.ts:1223\n 39 1.3% noteOutdatedClient src/engine/World.ts:2127\n" + }, + "limitation": "Sample percentages are fractions of captured busy JS samples, inclusive stacks overlap, and do not measure disk waits. Profiles precede the observed takeover burst. One 15-second profile request returned an empty response; server continued running with monotonically increasing tick count." + }, + "queryPlans": { + "rankedSkill": [ + { + "id": 5, + "parent": 0, + "notused": 62, + "detail": "SEARCH hiscore USING INDEX sqlite_autoindex_hiscore_1 (profile=?)" + }, + { + "id": 12, + "parent": 0, + "notused": 45, + "detail": "SEARCH account USING INTEGER PRIMARY KEY (rowid=?)" + }, + { + "id": 23, + "parent": 0, + "notused": 0, + "detail": "USE TEMP B-TREE FOR ORDER BY" + } + ], + "playerSkills": [ + { + "id": 3, + "parent": 0, + "notused": 62, + "detail": "SEARCH hiscore USING INDEX sqlite_autoindex_hiscore_1 (profile=? AND account_id=?)" + } + ] + }, + "isolatedIndexPlan": { + "environment": "in-memory schema clone, no production writes", + "before": [ + [ + 5, + 0, + 62, + "SEARCH hiscore USING INDEX sqlite_autoindex_hiscore_1 (profile=?)" + ], + [ + 12, + 0, + 45, + "SEARCH account USING INTEGER PRIMARY KEY (rowid=?)" + ], + [ + 23, + 0, + 0, + "USE TEMP B-TREE FOR ORDER BY" + ] + ], + "after": [ + [ + 4, + 0, + 55, + "SEARCH hiscore USING COVERING INDEX hiscore_rank (profile=? AND type=?)" + ], + [ + 9, + 0, + 45, + "SEARCH account USING INTEGER PRIMARY KEY (rowid=?)" + ] + ] + }, + "verifiedSourceHashes": [ + { + "path": "src/web/index.ts", + "sha256": "b1b399d9deb1262f9c46488b32632d67c4758418dfb95ec7fda6077388cfe926" + }, + { + "path": "src/web/pages/hiscores.ts", + "sha256": "932f3858bcf54c78f35d2c9432352698699fe32f99f98cb9cbecae3473e7e941" + }, + { + "path": "src/db/dialect/BunSqliteDriver.ts", + "sha256": "cbd3becde7476da66de376fbde0a41d1316919998506a71bdb03620367c2f6bf" + }, + { + "path": "src/web/worldfeed.ts", + "sha256": "4da24805983e4b9c6a64b1efce6ec1a8eb51fc0b1a7abc8179cc225d5fe4530d" + } + ], + "hostSnapshot": { + "capturedAt": "2026-10-11T05:14:21.671Z", + "sampleMs": 5002, + "processes": [ + { + "pid": "656", + "command": [ + "bun", + "run", + "src/app.ts", + "" + ], + "status": [ + "VmRSS:\t 1616724 kB", + "Threads:\t23" + ], + "io": "rchar: 1032115716537\nwchar: 614826741327\nsyscr: 265785935\nsyscw: 263475367\nread_bytes: 2652164096\nwrite_bytes: 566562627584\ncancelled_write_bytes: 6872449024\n" + }, + { + "pid": "700", + "command": [ + "bun", + "run", + "gateway.ts", + "" + ], + "status": [ + "VmRSS:\t 297164 kB", + "Threads:\t8" + ], + "io": "rchar: 133647798\nwchar: 952958307\nsyscr: 3608487\nsyscw: 14300638\nread_bytes: 3743744\nwrite_bytes: 0\ncancelled_write_bytes: 0\n" + } + ], + "threads": [ + { + "id": "656:656", + "ticks": 6561517, + "comm": "bun", + "state": "R", + "cpuPercent": 62.77489004398241 + }, + { + "id": "700:700", + "ticks": 4582320, + "comm": "bun", + "state": "S", + "cpuPercent": 40.38384646141543 + }, + { + "id": "656:702", + "ticks": 461286, + "comm": "mi-scavenger", + "state": "S", + "cpuPercent": 2.998800479808077 + }, + { + "id": "656:720", + "ticks": 275311, + "comm": "Worker", + "state": "S", + "cpuPercent": 2.3990403838464616 + }, + { + "id": "656:8083", + "ticks": 5078, + "comm": "JITWorker", + "state": "S", + "cpuPercent": 1.9992003198720512 + }, + { + "id": "656:714", + "ticks": 323319, + "comm": "HeapHelper", + "state": "S", + "cpuPercent": 1.599360255897641 + }, + { + "id": "700:705", + "ticks": 190317, + "comm": "mi-scavenger", + "state": "S", + "cpuPercent": 1.599360255897641 + }, + { + "id": "656:8425", + "ticks": 173, + "comm": "thread", + "state": "R", + "cpuPercent": 1.3994402239104358 + }, + { + "id": "656:710", + "ticks": 89361, + "comm": "JSCWarmUp", + "state": "S", + "cpuPercent": 0.9996001599360256 + }, + { + "id": "700:711", + "ticks": 114485, + "comm": "HeapHelper", + "state": "S", + "cpuPercent": 0.5997600959616154 + }, + { + "id": "700:8433", + "ticks": 4, + "comm": "JITWorker", + "state": "S", + "cpuPercent": 0.5997600959616154 + }, + { + "id": "700:709", + "ticks": 37572, + "comm": "JSCWarmUp", + "state": "S", + "cpuPercent": 0.39984006397441024 + }, + { + "id": "656:715", + "ticks": 14494, + "comm": "Worker", + "state": "S", + "cpuPercent": 0.19992003198720512 + }, + { + "id": "656:716", + "ticks": 9577, + "comm": "Worker", + "state": "S", + "cpuPercent": 0.19992003198720512 + }, + { + "id": "656:717", + "ticks": 19574, + "comm": "Worker", + "state": "S", + "cpuPercent": 0.19992003198720512 + }, + { + "id": "656:718", + "ticks": 67454, + "comm": "Worker", + "state": "S", + "cpuPercent": 0.19992003198720512 + }, + { + "id": "656:719", + "ticks": 23865, + "comm": "Worker", + "state": "S", + "cpuPercent": 0.19992003198720512 + }, + { + "id": "656:8424", + "ticks": 46, + "comm": "JITWorker", + "state": "S", + "cpuPercent": 0.19992003198720512 + } + ], + "files": [ + { + "name": "market.sqlite-wal", + "bytes": 6439592, + "dir": false + }, + { + "name": "db.sqlite-shm", + "bytes": 688128, + "dir": false + }, + { + "name": "db.sqlite.bak-20260401", + "bytes": 162254848, + "dir": false + }, + { + "name": "market.sqlite", + "bytes": 7299072, + "dir": false + }, + { + "name": "db.sqlite", + "bytes": 59294662656, + "dir": false + }, + { + "name": "db.sqlite-wal", + "bytes": 346574432, + "dir": false + }, + { + "name": "market.sqlite-shm", + "bytes": 32768, + "dir": false + } + ], + "pressure": { + "cpu": "some avg10=13.70 avg60=13.75 avg300=13.05 total=14268963929\nfull avg10=0.00 avg60=0.00 avg300=0.00 total=0\n", + "io": "some avg10=0.00 avg60=0.01 avg300=0.46 total=903321365\nfull avg10=0.00 avg60=0.01 avg300=0.24 total=584285433\n", + "memory": "some avg10=0.00 avg60=0.01 avg300=0.37 total=23583516\nfull avg10=0.00 avg60=0.00 avg300=0.15 total=9269806\n" + }, + "load": "1.88 1.63 1.60 2/130 8436\n" + }, + "logWatch": { + "seconds": 45.0, + "lines": 4848, + "counts": { + "droppedSend": 0, + "slowWeb": 9, + "logout": 191, + "dbLocked": 0, + "serverErrors": 0 + }, + "slowRoutes": [ + { + "route": "/status/:name", + "ms": 136 + }, + { + "route": "/status/:name", + "ms": 251 + }, + { + "route": "/status/:name", + "ms": 658 + }, + { + "route": "/status/:name", + "ms": 643 + }, + { + "route": "/status/:name", + "ms": 511 + }, + { + "route": "/hiscores/player/:name", + "ms": 411 + }, + { + "route": "/hiscores/player/:name", + "ms": 183 + }, + { + "route": "/status/:name", + "ms": 407 + }, + { + "route": "/status/:name", + "ms": 246 + } + ] + }, + "samples": [ + { + "capturedAt": "2026-10-11T05:13:40.383Z", + "requestMs": 112, + "tick": 403096, + "tickRate": 300, + "players": 1314, + "npcs": 8180, + "zonesTracking": 0, + "window": 300, + "overBudget": 4, + "avg": { + "cycle": 153.3, + "world": 7.3, + "clientIn": 9.6, + "npc": 13.8, + "player": 27.7, + "logout": 1.2, + "login": 8.1, + "zone": 0.6, + "clientOut": 60.1, + "cleanup": 4.3, + "bandwidthIn": 1873.5, + "bandwidthOut": 19228.2, + "interval": 300.3 + }, + "peak": { + "cycle": 614, + "world": 60, + "clientIn": 123, + "npc": 62, + "player": 119, + "logout": 136, + "login": 380, + "zone": 6, + "clientOut": 126, + "cleanup": 10, + "bandwidthIn": 3680, + "bandwidthOut": 65467, + "interval": 786 + }, + "last": { + "cycle": 174, + "world": 7, + "clientIn": 12, + "npc": 21, + "player": 37, + "logout": 1, + "login": 0, + "zone": 0, + "clientOut": 56, + "cleanup": 4, + "bandwidthIn": 2469, + "bandwidthOut": 19892 + }, + "heapMB": 597, + "rssMB": 1490, + "web": { + "current": { + "start": 1791695609862, + "end": 1791695620428, + "routes": { + "/playerpositions": { + "count": 48, + "totalMs": 75, + "maxMs": 7 + }, + "/": { + "count": 76, + "totalMs": 172, + "maxMs": 29 + }, + "/favicon.ico": { + "count": 5, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days": { + "count": 5, + "totalMs": 5, + "maxMs": 3 + }, + "/crc": { + "count": 28, + "totalMs": 0, + "maxMs": 0 + }, + "/playercount": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + }, + "/status/:bot": { + "count": 63, + "totalMs": 10511, + "maxMs": 374 + }, + "/gateway": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/api/version": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 64, + "totalMs": 960, + "maxMs": 362 + }, + "/api/market/*?days&limit&q": { + "count": 1, + "totalMs": 23, + "maxMs": 23 + }, + "/favicon-active.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791695549838, + "end": 1791695609862, + "routes": { + "/playercount": { + "count": 48, + "totalMs": 0, + "maxMs": 0 + }, + "/playerpositions": { + "count": 267, + "totalMs": 464, + "maxMs": 18 + }, + "/gateway": { + "count": 42, + "totalMs": 5, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 232, + "totalMs": 1382, + "maxMs": 449 + }, + "/": { + "count": 396, + "totalMs": 450, + "maxMs": 22 + }, + "/api/version": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/crc": { + "count": 76, + "totalMs": 5, + "maxMs": 1 + }, + "/status/:bot": { + "count": 254, + "totalMs": 15704, + "maxMs": 264 + }, + "/favicon.ico": { + "count": 9, + "totalMs": 18, + "maxMs": 15 + }, + "/config819086852": { + "count": 4, + "totalMs": 3, + "maxMs": 1 + }, + "/interface282644100": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 13, + "totalMs": 3, + "maxMs": 1 + }, + "/worldfeed": { + "count": 3, + "totalMs": 3, + "maxMs": 2 + }, + "/api/market/*?days": { + "count": 31, + "totalMs": 9, + "maxMs": 2 + }, + "/state/:bot?password": { + "count": 1, + "totalMs": 8, + "maxMs": 8 + }, + "/gateway/state/*?password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 19, + "maxMs": 19 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T05:13:55.460Z", + "requestMs": 188, + "tick": 403146, + "tickRate": 300, + "players": 1316, + "npcs": 8184, + "zonesTracking": 0, + "window": 300, + "overBudget": 5, + "avg": { + "cycle": 156.6, + "world": 7.5, + "clientIn": 9.3, + "npc": 14.3, + "player": 28.8, + "logout": 1, + "login": 9.7, + "zone": 0.7, + "clientOut": 60, + "cleanup": 4.4, + "bandwidthIn": 1868, + "bandwidthOut": 19259.3, + "interval": 300.3 + }, + "peak": { + "cycle": 614, + "world": 60, + "clientIn": 30, + "npc": 62, + "player": 102, + "logout": 136, + "login": 380, + "zone": 6, + "clientOut": 139, + "cleanup": 10, + "bandwidthIn": 3680, + "bandwidthOut": 65467, + "interval": 786 + }, + "last": { + "cycle": 260, + "world": 18, + "clientIn": 15, + "npc": 41, + "player": 75, + "logout": 1, + "login": 0, + "zone": 0, + "clientOut": 67, + "cleanup": 5, + "bandwidthIn": 2248, + "bandwidthOut": 15750 + }, + "heapMB": 595, + "rssMB": 1467, + "web": { + "current": { + "start": 1791695609862, + "end": 1791695635504, + "routes": { + "/playerpositions": { + "count": 116, + "totalMs": 184, + "maxMs": 18 + }, + "/": { + "count": 210, + "totalMs": 351, + "maxMs": 29 + }, + "/favicon.ico": { + "count": 8, + "totalMs": 2, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 25, + "totalMs": 13, + "maxMs": 3 + }, + "/crc": { + "count": 53, + "totalMs": 2, + "maxMs": 1 + }, + "/playercount": { + "count": 20, + "totalMs": 0, + "maxMs": 0 + }, + "/status/:bot": { + "count": 129, + "totalMs": 10897, + "maxMs": 374 + }, + "/gateway": { + "count": 10, + "totalMs": 0, + "maxMs": 0 + }, + "/api/version": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 96, + "totalMs": 1053, + "maxMs": 362 + }, + "/api/market/*?days&limit&q": { + "count": 2, + "totalMs": 27, + "maxMs": 23 + }, + "/favicon-active.ico": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791695549838, + "end": 1791695609862, + "routes": { + "/playercount": { + "count": 48, + "totalMs": 0, + "maxMs": 0 + }, + "/playerpositions": { + "count": 267, + "totalMs": 464, + "maxMs": 18 + }, + "/gateway": { + "count": 42, + "totalMs": 5, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 232, + "totalMs": 1382, + "maxMs": 449 + }, + "/": { + "count": 396, + "totalMs": 450, + "maxMs": 22 + }, + "/api/version": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/crc": { + "count": 76, + "totalMs": 5, + "maxMs": 1 + }, + "/status/:bot": { + "count": 254, + "totalMs": 15704, + "maxMs": 264 + }, + "/favicon.ico": { + "count": 9, + "totalMs": 18, + "maxMs": 15 + }, + "/config819086852": { + "count": 4, + "totalMs": 3, + "maxMs": 1 + }, + "/interface282644100": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 13, + "totalMs": 3, + "maxMs": 1 + }, + "/worldfeed": { + "count": 3, + "totalMs": 3, + "maxMs": 2 + }, + "/api/market/*?days": { + "count": 31, + "totalMs": 9, + "maxMs": 2 + }, + "/state/:bot?password": { + "count": 1, + "totalMs": 8, + "maxMs": 8 + }, + "/gateway/state/*?password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 19, + "maxMs": 19 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T05:14:10.361Z", + "requestMs": 88, + "tick": 403196, + "tickRate": 300, + "players": 1316, + "npcs": 8184, + "zonesTracking": 0, + "window": 300, + "overBudget": 4, + "avg": { + "cycle": 157, + "world": 7.7, + "clientIn": 9.2, + "npc": 14.5, + "player": 29.3, + "logout": 1, + "login": 9.2, + "zone": 0.7, + "clientOut": 59.6, + "cleanup": 4.6, + "bandwidthIn": 1836.3, + "bandwidthOut": 17715.6, + "interval": 300.3 + }, + "peak": { + "cycle": 359, + "world": 60, + "clientIn": 30, + "npc": 62, + "player": 102, + "logout": 136, + "login": 120, + "zone": 6, + "clientOut": 139, + "cleanup": 10, + "bandwidthIn": 3680, + "bandwidthOut": 65467, + "interval": 786 + }, + "last": { + "cycle": 177, + "world": 7, + "clientIn": 11, + "npc": 20, + "player": 41, + "logout": 1, + "login": 0, + "zone": 1, + "clientOut": 58, + "cleanup": 4, + "bandwidthIn": 2440, + "bandwidthOut": 17058 + }, + "heapMB": 599, + "rssMB": 1523, + "web": { + "current": { + "start": 1791695609862, + "end": 1791695650406, + "routes": { + "/playerpositions": { + "count": 182, + "totalMs": 315, + "maxMs": 18 + }, + "/": { + "count": 298, + "totalMs": 492, + "maxMs": 29 + }, + "/favicon.ico": { + "count": 12, + "totalMs": 4, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 66, + "totalMs": 22, + "maxMs": 3 + }, + "/crc": { + "count": 66, + "totalMs": 3, + "maxMs": 1 + }, + "/playercount": { + "count": 27, + "totalMs": 1, + "maxMs": 1 + }, + "/status/:bot": { + "count": 184, + "totalMs": 11392, + "maxMs": 374 + }, + "/gateway": { + "count": 19, + "totalMs": 1, + "maxMs": 1 + }, + "/api/version": { + "count": 5, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 112, + "totalMs": 1083, + "maxMs": 362 + }, + "/api/market/*?days&limit&q": { + "count": 2, + "totalMs": 27, + "maxMs": 23 + }, + "/favicon-active.ico": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/state/:bot?password": { + "count": 1, + "totalMs": 199, + "maxMs": 199 + } + } + }, + "last": { + "start": 1791695549838, + "end": 1791695609862, + "routes": { + "/playercount": { + "count": 48, + "totalMs": 0, + "maxMs": 0 + }, + "/playerpositions": { + "count": 267, + "totalMs": 464, + "maxMs": 18 + }, + "/gateway": { + "count": 42, + "totalMs": 5, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 232, + "totalMs": 1382, + "maxMs": 449 + }, + "/": { + "count": 396, + "totalMs": 450, + "maxMs": 22 + }, + "/api/version": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/crc": { + "count": 76, + "totalMs": 5, + "maxMs": 1 + }, + "/status/:bot": { + "count": 254, + "totalMs": 15704, + "maxMs": 264 + }, + "/favicon.ico": { + "count": 9, + "totalMs": 18, + "maxMs": 15 + }, + "/config819086852": { + "count": 4, + "totalMs": 3, + "maxMs": 1 + }, + "/interface282644100": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 13, + "totalMs": 3, + "maxMs": 1 + }, + "/worldfeed": { + "count": 3, + "totalMs": 3, + "maxMs": 2 + }, + "/api/market/*?days": { + "count": 31, + "totalMs": 9, + "maxMs": 2 + }, + "/state/:bot?password": { + "count": 1, + "totalMs": 8, + "maxMs": 8 + }, + "/gateway/state/*?password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 19, + "maxMs": 19 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T05:14:25.623Z", + "requestMs": 349, + "tick": 403246, + "tickRate": 300, + "players": 1318, + "npcs": 8181, + "zonesTracking": 0, + "window": 300, + "overBudget": 5, + "avg": { + "cycle": 156.3, + "world": 7.6, + "clientIn": 9.4, + "npc": 14.9, + "player": 29.6, + "logout": 0.8, + "login": 8.6, + "zone": 0.7, + "clientOut": 58.6, + "cleanup": 4.7, + "bandwidthIn": 1815.2, + "bandwidthOut": 17836.5, + "interval": 300.5 + }, + "peak": { + "cycle": 359, + "world": 60, + "clientIn": 44, + "npc": 62, + "player": 102, + "logout": 136, + "login": 138, + "zone": 6, + "clientOut": 139, + "cleanup": 10, + "bandwidthIn": 3680, + "bandwidthOut": 65467, + "interval": 786 + }, + "last": { + "cycle": 346, + "world": 13, + "clientIn": 44, + "npc": 14, + "player": 35, + "logout": 1, + "login": 138, + "zone": 1, + "clientOut": 66, + "cleanup": 4, + "bandwidthIn": 2199, + "bandwidthOut": 16566 + }, + "heapMB": 637, + "rssMB": 1547, + "web": { + "current": { + "start": 1791695609862, + "end": 1791695665667, + "routes": { + "/playerpositions": { + "count": 255, + "totalMs": 429, + "maxMs": 18 + }, + "/": { + "count": 378, + "totalMs": 580, + "maxMs": 29 + }, + "/favicon.ico": { + "count": 15, + "totalMs": 6, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 72, + "totalMs": 34, + "maxMs": 3 + }, + "/crc": { + "count": 78, + "totalMs": 5, + "maxMs": 1 + }, + "/playercount": { + "count": 41, + "totalMs": 2, + "maxMs": 1 + }, + "/status/:bot": { + "count": 250, + "totalMs": 12279, + "maxMs": 374 + }, + "/gateway": { + "count": 32, + "totalMs": 3, + "maxMs": 1 + }, + "/api/version": { + "count": 7, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 232, + "totalMs": 1479, + "maxMs": 362 + }, + "/api/market/*?days&limit&q": { + "count": 2, + "totalMs": 27, + "maxMs": 23 + }, + "/favicon-active.ico": { + "count": 11, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/state/:bot?password": { + "count": 1, + "totalMs": 199, + "maxMs": 199 + }, + "/config819086852": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791695549838, + "end": 1791695609862, + "routes": { + "/playercount": { + "count": 48, + "totalMs": 0, + "maxMs": 0 + }, + "/playerpositions": { + "count": 267, + "totalMs": 464, + "maxMs": 18 + }, + "/gateway": { + "count": 42, + "totalMs": 5, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 232, + "totalMs": 1382, + "maxMs": 449 + }, + "/": { + "count": 396, + "totalMs": 450, + "maxMs": 22 + }, + "/api/version": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/crc": { + "count": 76, + "totalMs": 5, + "maxMs": 1 + }, + "/status/:bot": { + "count": 254, + "totalMs": 15704, + "maxMs": 264 + }, + "/favicon.ico": { + "count": 9, + "totalMs": 18, + "maxMs": 15 + }, + "/config819086852": { + "count": 4, + "totalMs": 3, + "maxMs": 1 + }, + "/interface282644100": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 13, + "totalMs": 3, + "maxMs": 1 + }, + "/worldfeed": { + "count": 3, + "totalMs": 3, + "maxMs": 2 + }, + "/api/market/*?days": { + "count": 31, + "totalMs": 9, + "maxMs": 2 + }, + "/state/:bot?password": { + "count": 1, + "totalMs": 8, + "maxMs": 8 + }, + "/gateway/state/*?password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 19, + "maxMs": 19 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T05:14:40.379Z", + "requestMs": 105, + "tick": 403296, + "tickRate": 300, + "players": 1322, + "npcs": 8185, + "zonesTracking": 0, + "window": 300, + "overBudget": 5, + "avg": { + "cycle": 154.7, + "world": 7.7, + "clientIn": 9.5, + "npc": 15.2, + "player": 29.5, + "logout": 0.8, + "login": 7.2, + "zone": 0.7, + "clientOut": 57.6, + "cleanup": 4.8, + "bandwidthIn": 1808.6, + "bandwidthOut": 18290.1, + "interval": 300.3 + }, + "peak": { + "cycle": 359, + "world": 60, + "clientIn": 44, + "npc": 62, + "player": 102, + "logout": 136, + "login": 138, + "zone": 6, + "clientOut": 139, + "cleanup": 10, + "bandwidthIn": 3549, + "bandwidthOut": 65467, + "interval": 786 + }, + "last": { + "cycle": 185, + "world": 7, + "clientIn": 11, + "npc": 18, + "player": 48, + "logout": 1, + "login": 0, + "zone": 1, + "clientOut": 54, + "cleanup": 5, + "bandwidthIn": 1986, + "bandwidthOut": 9696 + }, + "heapMB": 600, + "rssMB": 1490, + "web": { + "current": { + "start": 1791695669872, + "end": 1791695680425, + "routes": { + "/": { + "count": 60, + "totalMs": 89, + "maxMs": 19 + }, + "/playercount": { + "count": 7, + "totalMs": 0, + "maxMs": 0 + }, + "/playerpositions": { + "count": 48, + "totalMs": 72, + "maxMs": 8 + }, + "/crc": { + "count": 14, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/player/*": { + "count": 88, + "totalMs": 813, + "maxMs": 406 + }, + "/favicon.ico": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/status/:bot": { + "count": 64, + "totalMs": 1222, + "maxMs": 25 + }, + "/api/version": { + "count": 3, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway": { + "count": 4, + "totalMs": 8, + "maxMs": 6 + } + } + }, + "last": { + "start": 1791695609862, + "end": 1791695669872, + "routes": { + "/playerpositions": { + "count": 273, + "totalMs": 459, + "maxMs": 18 + }, + "/": { + "count": 398, + "totalMs": 603, + "maxMs": 29 + }, + "/favicon.ico": { + "count": 15, + "totalMs": 6, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 72, + "totalMs": 34, + "maxMs": 3 + }, + "/crc": { + "count": 82, + "totalMs": 5, + "maxMs": 1 + }, + "/playercount": { + "count": 44, + "totalMs": 2, + "maxMs": 1 + }, + "/status/:bot": { + "count": 252, + "totalMs": 12416, + "maxMs": 374 + }, + "/gateway": { + "count": 32, + "totalMs": 3, + "maxMs": 1 + }, + "/api/version": { + "count": 9, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 264, + "totalMs": 1530, + "maxMs": 362 + }, + "/api/market/*?days&limit&q": { + "count": 2, + "totalMs": 27, + "maxMs": 23 + }, + "/favicon-active.ico": { + "count": 12, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/state/:bot?password": { + "count": 1, + "totalMs": 199, + "maxMs": 199 + }, + "/config819086852": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*": { + "count": 4, + "totalMs": 2, + "maxMs": 2 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T05:14:55.376Z", + "requestMs": 102, + "tick": 403346, + "tickRate": 300, + "players": 1326, + "npcs": 8175, + "zonesTracking": 0, + "window": 300, + "overBudget": 5, + "avg": { + "cycle": 153.8, + "world": 7.8, + "clientIn": 9.6, + "npc": 15.4, + "player": 30, + "logout": 0.8, + "login": 6, + "zone": 0.7, + "clientOut": 56.8, + "cleanup": 4.8, + "bandwidthIn": 1809.7, + "bandwidthOut": 17233, + "interval": 300.3 + }, + "peak": { + "cycle": 359, + "world": 60, + "clientIn": 44, + "npc": 62, + "player": 102, + "logout": 136, + "login": 138, + "zone": 6, + "clientOut": 139, + "cleanup": 10, + "bandwidthIn": 3549, + "bandwidthOut": 65467, + "interval": 786 + }, + "last": { + "cycle": 157, + "world": 6, + "clientIn": 7, + "npc": 14, + "player": 39, + "logout": 0, + "login": 0, + "zone": 1, + "clientOut": 48, + "cleanup": 6, + "bandwidthIn": 1462, + "bandwidthOut": 12078 + }, + "heapMB": 609, + "rssMB": 1478, + "web": { + "current": { + "start": 1791695669872, + "end": 1791695695420, + "routes": { + "/": { + "count": 195, + "totalMs": 225, + "maxMs": 19 + }, + "/playercount": { + "count": 21, + "totalMs": 0, + "maxMs": 0 + }, + "/playerpositions": { + "count": 121, + "totalMs": 179, + "maxMs": 17 + }, + "/crc": { + "count": 51, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/player/*": { + "count": 208, + "totalMs": 1098, + "maxMs": 406 + }, + "/favicon.ico": { + "count": 6, + "totalMs": 1, + "maxMs": 1 + }, + "/status/:bot": { + "count": 130, + "totalMs": 1615, + "maxMs": 25 + }, + "/api/version": { + "count": 8, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway": { + "count": 10, + "totalMs": 8, + "maxMs": 6 + }, + "/favicon-active.ico": { + "count": 6, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791695609862, + "end": 1791695669872, + "routes": { + "/playerpositions": { + "count": 273, + "totalMs": 459, + "maxMs": 18 + }, + "/": { + "count": 398, + "totalMs": 603, + "maxMs": 29 + }, + "/favicon.ico": { + "count": 15, + "totalMs": 6, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 72, + "totalMs": 34, + "maxMs": 3 + }, + "/crc": { + "count": 82, + "totalMs": 5, + "maxMs": 1 + }, + "/playercount": { + "count": 44, + "totalMs": 2, + "maxMs": 1 + }, + "/status/:bot": { + "count": 252, + "totalMs": 12416, + "maxMs": 374 + }, + "/gateway": { + "count": 32, + "totalMs": 3, + "maxMs": 1 + }, + "/api/version": { + "count": 9, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 264, + "totalMs": 1530, + "maxMs": 362 + }, + "/api/market/*?days&limit&q": { + "count": 2, + "totalMs": 27, + "maxMs": 23 + }, + "/favicon-active.ico": { + "count": 12, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/state/:bot?password": { + "count": 1, + "totalMs": 199, + "maxMs": 199 + }, + "/config819086852": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*": { + "count": 4, + "totalMs": 2, + "maxMs": 2 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T05:15:10.541Z", + "requestMs": 266, + "tick": 403396, + "tickRate": 300, + "players": 1329, + "npcs": 8170, + "zonesTracking": 0, + "window": 300, + "overBudget": 3, + "avg": { + "cycle": 149.9, + "world": 7.4, + "clientIn": 9.7, + "npc": 15.2, + "player": 30.6, + "logout": 0.4, + "login": 3.9, + "zone": 0.7, + "clientOut": 55.7, + "cleanup": 4.8, + "bandwidthIn": 1793.7, + "bandwidthOut": 17127.3, + "interval": 300.2 + }, + "peak": { + "cycle": 346, + "world": 37, + "clientIn": 44, + "npc": 58, + "player": 83, + "logout": 2, + "login": 138, + "zone": 3, + "clientOut": 139, + "cleanup": 10, + "bandwidthIn": 3214, + "bandwidthOut": 65110, + "interval": 728 + }, + "last": { + "cycle": 309, + "world": 19, + "clientIn": 25, + "npc": 58, + "player": 48, + "logout": 1, + "login": 0, + "zone": 2, + "clientOut": 113, + "cleanup": 5, + "bandwidthIn": 1307, + "bandwidthOut": 18021 + }, + "heapMB": 618, + "rssMB": 1512, + "web": { + "current": { + "start": 1791695669872, + "end": 1791695710586, + "routes": { + "/": { + "count": 290, + "totalMs": 339, + "maxMs": 19 + }, + "/playercount": { + "count": 29, + "totalMs": 1, + "maxMs": 1 + }, + "/playerpositions": { + "count": 182, + "totalMs": 283, + "maxMs": 17 + }, + "/crc": { + "count": 65, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/player/*": { + "count": 328, + "totalMs": 1349, + "maxMs": 406 + }, + "/favicon.ico": { + "count": 9, + "totalMs": 2, + "maxMs": 1 + }, + "/status/:bot": { + "count": 185, + "totalMs": 2176, + "maxMs": 136 + }, + "/api/version": { + "count": 11, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway": { + "count": 24, + "totalMs": 11, + "maxMs": 6 + }, + "/favicon-active.ico": { + "count": 8, + "totalMs": 3, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/state/:bot?password": { + "count": 1, + "totalMs": 15, + "maxMs": 15 + }, + "/api/market/*": { + "count": 3, + "totalMs": 2, + "maxMs": 2 + }, + "/api/market/*?days": { + "count": 3, + "totalMs": 2, + "maxMs": 2 + } + } + }, + "last": { + "start": 1791695609862, + "end": 1791695669872, + "routes": { + "/playerpositions": { + "count": 273, + "totalMs": 459, + "maxMs": 18 + }, + "/": { + "count": 398, + "totalMs": 603, + "maxMs": 29 + }, + "/favicon.ico": { + "count": 15, + "totalMs": 6, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 72, + "totalMs": 34, + "maxMs": 3 + }, + "/crc": { + "count": 82, + "totalMs": 5, + "maxMs": 1 + }, + "/playercount": { + "count": 44, + "totalMs": 2, + "maxMs": 1 + }, + "/status/:bot": { + "count": 252, + "totalMs": 12416, + "maxMs": 374 + }, + "/gateway": { + "count": 32, + "totalMs": 3, + "maxMs": 1 + }, + "/api/version": { + "count": 9, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 264, + "totalMs": 1530, + "maxMs": 362 + }, + "/api/market/*?days&limit&q": { + "count": 2, + "totalMs": 27, + "maxMs": 23 + }, + "/favicon-active.ico": { + "count": 12, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/state/:bot?password": { + "count": 1, + "totalMs": 199, + "maxMs": 199 + }, + "/config819086852": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*": { + "count": 4, + "totalMs": 2, + "maxMs": 2 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T05:15:25.554Z", + "requestMs": 278, + "tick": 403417, + "tickRate": 300, + "players": 1330, + "npcs": 8175, + "zonesTracking": 0, + "window": 300, + "overBudget": 4, + "avg": { + "cycle": 177.9, + "world": 7.4, + "clientIn": 9.6, + "npc": 15.1, + "player": 30.2, + "logout": 0.4, + "login": 32.5, + "zone": 0.7, + "clientOut": 55.8, + "cleanup": 4.8, + "bandwidthIn": 1796.1, + "bandwidthOut": 17706.3, + "interval": 303.1 + }, + "peak": { + "cycle": 7873, + "world": 37, + "clientIn": 44, + "npc": 58, + "player": 83, + "logout": 2, + "login": 7685, + "zone": 3, + "clientOut": 130, + "cleanup": 10, + "bandwidthIn": 4426, + "bandwidthOut": 65110, + "interval": 1227 + }, + "last": { + "cycle": 7873, + "world": 10, + "clientIn": 9, + "npc": 13, + "player": 33, + "logout": 1, + "login": 7685, + "zone": 1, + "clientOut": 94, + "cleanup": 7, + "bandwidthIn": 2662, + "bandwidthOut": 4262 + }, + "heapMB": 599, + "rssMB": 1507, + "web": { + "current": { + "start": 1791695669872, + "end": 1791695725600, + "routes": { + "/": { + "count": 540, + "totalMs": 564, + "maxMs": 19 + }, + "/playercount": { + "count": 41, + "totalMs": 2, + "maxMs": 1 + }, + "/playerpositions": { + "count": 213, + "totalMs": 358, + "maxMs": 22 + }, + "/crc": { + "count": 73, + "totalMs": 4, + "maxMs": 3 + }, + "/hiscores/player/*": { + "count": 401, + "totalMs": 1575, + "maxMs": 406 + }, + "/favicon.ico": { + "count": 18, + "totalMs": 6, + "maxMs": 1 + }, + "/status/:bot": { + "count": 246, + "totalMs": 2847, + "maxMs": 251 + }, + "/api/version": { + "count": 199, + "totalMs": 5, + "maxMs": 1 + }, + "/gateway": { + "count": 31, + "totalMs": 11, + "maxMs": 6 + }, + "/favicon-active.ico": { + "count": 9, + "totalMs": 3, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 7, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/state/:bot?password": { + "count": 1, + "totalMs": 15, + "maxMs": 15 + }, + "/api/market/*": { + "count": 5, + "totalMs": 4, + "maxMs": 2 + }, + "/api/market/*?days": { + "count": 3, + "totalMs": 2, + "maxMs": 2 + } + } + }, + "last": { + "start": 1791695609862, + "end": 1791695669872, + "routes": { + "/playerpositions": { + "count": 273, + "totalMs": 459, + "maxMs": 18 + }, + "/": { + "count": 398, + "totalMs": 603, + "maxMs": 29 + }, + "/favicon.ico": { + "count": 15, + "totalMs": 6, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 72, + "totalMs": 34, + "maxMs": 3 + }, + "/crc": { + "count": 82, + "totalMs": 5, + "maxMs": 1 + }, + "/playercount": { + "count": 44, + "totalMs": 2, + "maxMs": 1 + }, + "/status/:bot": { + "count": 252, + "totalMs": 12416, + "maxMs": 374 + }, + "/gateway": { + "count": 32, + "totalMs": 3, + "maxMs": 1 + }, + "/api/version": { + "count": 9, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 264, + "totalMs": 1530, + "maxMs": 362 + }, + "/api/market/*?days&limit&q": { + "count": 2, + "totalMs": 27, + "maxMs": 23 + }, + "/favicon-active.ico": { + "count": 12, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/state/:bot?password": { + "count": 1, + "totalMs": 199, + "maxMs": 199 + }, + "/config819086852": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*": { + "count": 4, + "totalMs": 2, + "maxMs": 2 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T05:15:40.374Z", + "requestMs": 98, + "tick": 403462, + "tickRate": 300, + "players": 1333, + "npcs": 8175, + "zonesTracking": 0, + "window": 300, + "overBudget": 7, + "avg": { + "cycle": 185.8, + "world": 7.5, + "clientIn": 10.1, + "npc": 15.2, + "player": 29.9, + "logout": 0.8, + "login": 37.9, + "zone": 0.7, + "clientOut": 57.4, + "cleanup": 4.8, + "bandwidthIn": 2001.6, + "bandwidthOut": 21073.3, + "interval": 334.1 + }, + "peak": { + "cycle": 7873, + "world": 37, + "clientIn": 96, + "npc": 58, + "player": 131, + "logout": 63, + "login": 7685, + "zone": 3, + "clientOut": 130, + "cleanup": 8, + "bandwidthIn": 21545, + "bandwidthOut": 65110, + "interval": 8177 + }, + "last": { + "cycle": 137, + "world": 7, + "clientIn": 12, + "npc": 17, + "player": 23, + "logout": 1, + "login": 0, + "zone": 0, + "clientOut": 57, + "cleanup": 4, + "bandwidthIn": 1821, + "bandwidthOut": 38940 + }, + "heapMB": 618, + "rssMB": 1546, + "web": { + "current": { + "start": 1791695729911, + "end": 1791695740420, + "routes": { + "/playerpositions": { + "count": 78, + "totalMs": 124, + "maxMs": 14 + }, + "/hiscores/player/*": { + "count": 90, + "totalMs": 814, + "maxMs": 411 + }, + "/playercount": { + "count": 7, + "totalMs": 0, + "maxMs": 0 + }, + "/crc": { + "count": 9, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 2, + "totalMs": 4, + "maxMs": 2 + }, + "/": { + "count": 56, + "totalMs": 71, + "maxMs": 18 + }, + "/status/:bot": { + "count": 63, + "totalMs": 1880, + "maxMs": 407 + }, + "/gateway/state/*?password": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway": { + "count": 10, + "totalMs": 5, + "maxMs": 1 + }, + "/config819086852": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/interface282644100": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/api/version": { + "count": 3, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791695669872, + "end": 1791695729911, + "routes": { + "/": { + "count": 564, + "totalMs": 599, + "maxMs": 19 + }, + "/playercount": { + "count": 46, + "totalMs": 2, + "maxMs": 1 + }, + "/playerpositions": { + "count": 244, + "totalMs": 392, + "maxMs": 22 + }, + "/crc": { + "count": 79, + "totalMs": 4, + "maxMs": 3 + }, + "/hiscores/player/*": { + "count": 436, + "totalMs": 1621, + "maxMs": 406 + }, + "/favicon.ico": { + "count": 18, + "totalMs": 6, + "maxMs": 1 + }, + "/status/:bot": { + "count": 249, + "totalMs": 4659, + "maxMs": 658 + }, + "/api/version": { + "count": 200, + "totalMs": 5, + "maxMs": 1 + }, + "/gateway": { + "count": 31, + "totalMs": 11, + "maxMs": 6 + }, + "/favicon-active.ico": { + "count": 20, + "totalMs": 4, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 7, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/state/:bot?password": { + "count": 1, + "totalMs": 15, + "maxMs": 15 + }, + "/api/market/*": { + "count": 5, + "totalMs": 4, + "maxMs": 2 + }, + "/api/market/*?days": { + "count": 3, + "totalMs": 2, + "maxMs": 2 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T05:15:55.390Z", + "requestMs": 113, + "tick": 403512, + "tickRate": 300, + "players": 1337, + "npcs": 8176, + "zonesTracking": 0, + "window": 300, + "overBudget": 13, + "avg": { + "cycle": 190.6, + "world": 8.3, + "clientIn": 10.8, + "npc": 15.6, + "player": 30.8, + "logout": 0.8, + "login": 37.7, + "zone": 0.7, + "clientOut": 59.3, + "cleanup": 4.8, + "bandwidthIn": 2098.8, + "bandwidthOut": 23041, + "interval": 334.1 + }, + "peak": { + "cycle": 7873, + "world": 97, + "clientIn": 96, + "npc": 58, + "player": 131, + "logout": 63, + "login": 7685, + "zone": 4, + "clientOut": 130, + "cleanup": 19, + "bandwidthIn": 21545, + "bandwidthOut": 65110, + "interval": 8177 + }, + "last": { + "cycle": 131, + "world": 7, + "clientIn": 8, + "npc": 13, + "player": 26, + "logout": 1, + "login": 0, + "zone": 1, + "clientOut": 56, + "cleanup": 4, + "bandwidthIn": 1568, + "bandwidthOut": 40570 + }, + "heapMB": 598, + "rssMB": 1681, + "web": { + "current": { + "start": 1791695729911, + "end": 1791695755436, + "routes": { + "/playerpositions": { + "count": 150, + "totalMs": 258, + "maxMs": 14 + }, + "/hiscores/player/*": { + "count": 229, + "totalMs": 1170, + "maxMs": 411 + }, + "/playercount": { + "count": 21, + "totalMs": 0, + "maxMs": 0 + }, + "/crc": { + "count": 53, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 8, + "totalMs": 18, + "maxMs": 10 + }, + "/": { + "count": 188, + "totalMs": 308, + "maxMs": 44 + }, + "/status/:bot": { + "count": 129, + "totalMs": 28334, + "maxMs": 491 + }, + "/gateway/state/*?password": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway": { + "count": 17, + "totalMs": 8, + "maxMs": 1 + }, + "/config819086852": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/interface282644100": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/api/version": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 5, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 2, + "totalMs": 4, + "maxMs": 4 + }, + "/playertraces?hours": { + "count": 1, + "totalMs": 14, + "maxMs": 14 + }, + "/api/market/*": { + "count": 3, + "totalMs": 2, + "maxMs": 2 + } + } + }, + "last": { + "start": 1791695669872, + "end": 1791695729911, + "routes": { + "/": { + "count": 564, + "totalMs": 599, + "maxMs": 19 + }, + "/playercount": { + "count": 46, + "totalMs": 2, + "maxMs": 1 + }, + "/playerpositions": { + "count": 244, + "totalMs": 392, + "maxMs": 22 + }, + "/crc": { + "count": 79, + "totalMs": 4, + "maxMs": 3 + }, + "/hiscores/player/*": { + "count": 436, + "totalMs": 1621, + "maxMs": 406 + }, + "/favicon.ico": { + "count": 18, + "totalMs": 6, + "maxMs": 1 + }, + "/status/:bot": { + "count": 249, + "totalMs": 4659, + "maxMs": 658 + }, + "/api/version": { + "count": 200, + "totalMs": 5, + "maxMs": 1 + }, + "/gateway": { + "count": 31, + "totalMs": 11, + "maxMs": 6 + }, + "/favicon-active.ico": { + "count": 20, + "totalMs": 4, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 7, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/state/:bot?password": { + "count": 1, + "totalMs": 15, + "maxMs": 15 + }, + "/api/market/*": { + "count": 5, + "totalMs": 4, + "maxMs": 2 + }, + "/api/market/*?days": { + "count": 3, + "totalMs": 2, + "maxMs": 2 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T05:16:10.402Z", + "requestMs": 124, + "tick": 403562, + "tickRate": 300, + "players": 1338, + "npcs": 8178, + "zonesTracking": 0, + "window": 300, + "overBudget": 12, + "avg": { + "cycle": 191.2, + "world": 8.4, + "clientIn": 10.7, + "npc": 15.5, + "player": 30.6, + "logout": 1.3, + "login": 36.7, + "zone": 0.7, + "clientOut": 60.9, + "cleanup": 4.7, + "bandwidthIn": 2156.7, + "bandwidthOut": 23623.6, + "interval": 334.1 + }, + "peak": { + "cycle": 7873, + "world": 97, + "clientIn": 96, + "npc": 58, + "player": 131, + "logout": 86, + "login": 7685, + "zone": 5, + "clientOut": 130, + "cleanup": 19, + "bandwidthIn": 21545, + "bandwidthOut": 65110, + "interval": 8177 + }, + "last": { + "cycle": 160, + "world": 8, + "clientIn": 10, + "npc": 16, + "player": 38, + "logout": 1, + "login": 0, + "zone": 0, + "clientOut": 66, + "cleanup": 4, + "bandwidthIn": 1990, + "bandwidthOut": 2498 + }, + "heapMB": 603, + "rssMB": 1690, + "web": { + "current": { + "start": 1791695729911, + "end": 1791695770448, + "routes": { + "/playerpositions": { + "count": 222, + "totalMs": 359, + "maxMs": 14 + }, + "/hiscores/player/*": { + "count": 352, + "totalMs": 1398, + "maxMs": 411 + }, + "/playercount": { + "count": 29, + "totalMs": 0, + "maxMs": 0 + }, + "/crc": { + "count": 62, + "totalMs": 2, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 9, + "totalMs": 20, + "maxMs": 10 + }, + "/": { + "count": 290, + "totalMs": 420, + "maxMs": 44 + }, + "/status/:bot": { + "count": 184, + "totalMs": 29266, + "maxMs": 491 + }, + "/gateway/state/*?password": { + "count": 5, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway": { + "count": 22, + "totalMs": 8, + "maxMs": 1 + }, + "/config819086852": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/interface282644100": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/api/version": { + "count": 9, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 8, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 10, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 5, + "totalMs": 6, + "maxMs": 4 + }, + "/playertraces?hours": { + "count": 1, + "totalMs": 14, + "maxMs": 14 + }, + "/api/market/*": { + "count": 9, + "totalMs": 4, + "maxMs": 2 + }, + "/state/:bot?password": { + "count": 1, + "totalMs": 150, + "maxMs": 150 + } + } + }, + "last": { + "start": 1791695669872, + "end": 1791695729911, + "routes": { + "/": { + "count": 564, + "totalMs": 599, + "maxMs": 19 + }, + "/playercount": { + "count": 46, + "totalMs": 2, + "maxMs": 1 + }, + "/playerpositions": { + "count": 244, + "totalMs": 392, + "maxMs": 22 + }, + "/crc": { + "count": 79, + "totalMs": 4, + "maxMs": 3 + }, + "/hiscores/player/*": { + "count": 436, + "totalMs": 1621, + "maxMs": 406 + }, + "/favicon.ico": { + "count": 18, + "totalMs": 6, + "maxMs": 1 + }, + "/status/:bot": { + "count": 249, + "totalMs": 4659, + "maxMs": 658 + }, + "/api/version": { + "count": 200, + "totalMs": 5, + "maxMs": 1 + }, + "/gateway": { + "count": 31, + "totalMs": 11, + "maxMs": 6 + }, + "/favicon-active.ico": { + "count": 20, + "totalMs": 4, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 7, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/state/:bot?password": { + "count": 1, + "totalMs": 15, + "maxMs": 15 + }, + "/api/market/*": { + "count": 5, + "totalMs": 4, + "maxMs": 2 + }, + "/api/market/*?days": { + "count": 3, + "totalMs": 2, + "maxMs": 2 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T05:16:25.442Z", + "requestMs": 162, + "tick": 403612, + "tickRate": 300, + "players": 1341, + "npcs": 8176, + "zonesTracking": 0, + "window": 300, + "overBudget": 12, + "avg": { + "cycle": 194.2, + "world": 8.5, + "clientIn": 10.7, + "npc": 15.4, + "player": 31, + "logout": 1.7, + "login": 37.4, + "zone": 0.7, + "clientOut": 62.3, + "cleanup": 4.7, + "bandwidthIn": 2188.4, + "bandwidthOut": 25759.7, + "interval": 334.1 + }, + "peak": { + "cycle": 7873, + "world": 97, + "clientIn": 96, + "npc": 58, + "player": 131, + "logout": 86, + "login": 7685, + "zone": 5, + "clientOut": 130, + "cleanup": 19, + "bandwidthIn": 21545, + "bandwidthOut": 64389, + "interval": 8177 + }, + "last": { + "cycle": 233, + "world": 8, + "clientIn": 9, + "npc": 18, + "player": 42, + "logout": 0, + "login": 66, + "zone": 0, + "clientOut": 63, + "cleanup": 6, + "bandwidthIn": 1338, + "bandwidthOut": 25142 + }, + "heapMB": 608, + "rssMB": 1694, + "web": { + "current": { + "start": 1791695729911, + "end": 1791695785487, + "routes": { + "/playerpositions": { + "count": 290, + "totalMs": 462, + "maxMs": 14 + }, + "/hiscores/player/*": { + "count": 472, + "totalMs": 1727, + "maxMs": 411 + }, + "/playercount": { + "count": 42, + "totalMs": 0, + "maxMs": 0 + }, + "/crc": { + "count": 73, + "totalMs": 2, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 10, + "totalMs": 22, + "maxMs": 10 + }, + "/": { + "count": 380, + "totalMs": 513, + "maxMs": 44 + }, + "/status/:bot": { + "count": 250, + "totalMs": 31871, + "maxMs": 491 + }, + "/gateway/state/*?password": { + "count": 7, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway": { + "count": 36, + "totalMs": 8, + "maxMs": 1 + }, + "/config819086852": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/interface282644100": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/api/version": { + "count": 13, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 12, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 12, + "totalMs": 1, + "maxMs": 1 + }, + "/worldfeed": { + "count": 5, + "totalMs": 6, + "maxMs": 4 + }, + "/playertraces?hours": { + "count": 1, + "totalMs": 14, + "maxMs": 14 + }, + "/api/market/*": { + "count": 18, + "totalMs": 15, + "maxMs": 10 + }, + "/state/:bot?password": { + "count": 1, + "totalMs": 150, + "maxMs": 150 + }, + "/hiscores/player/*?profile": { + "count": 1, + "totalMs": 3, + "maxMs": 3 + } + } + }, + "last": { + "start": 1791695669872, + "end": 1791695729911, + "routes": { + "/": { + "count": 564, + "totalMs": 599, + "maxMs": 19 + }, + "/playercount": { + "count": 46, + "totalMs": 2, + "maxMs": 1 + }, + "/playerpositions": { + "count": 244, + "totalMs": 392, + "maxMs": 22 + }, + "/crc": { + "count": 79, + "totalMs": 4, + "maxMs": 3 + }, + "/hiscores/player/*": { + "count": 436, + "totalMs": 1621, + "maxMs": 406 + }, + "/favicon.ico": { + "count": 18, + "totalMs": 6, + "maxMs": 1 + }, + "/status/:bot": { + "count": 249, + "totalMs": 4659, + "maxMs": 658 + }, + "/api/version": { + "count": 200, + "totalMs": 5, + "maxMs": 1 + }, + "/gateway": { + "count": 31, + "totalMs": 11, + "maxMs": 6 + }, + "/favicon-active.ico": { + "count": 20, + "totalMs": 4, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 7, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/state/:bot?password": { + "count": 1, + "totalMs": 15, + "maxMs": 15 + }, + "/api/market/*": { + "count": 5, + "totalMs": 4, + "maxMs": 2 + }, + "/api/market/*?days": { + "count": 3, + "totalMs": 2, + "maxMs": 2 + } + } + } + } + } + ], + "finalRollingWindow": { + "tick": 403679, + "tickRate": 300, + "players": 1345, + "npcs": 8173, + "zonesTracking": 0, + "window": 300, + "overBudget": 16, + "avg": { + "cycle": 200.2, + "world": 8.7, + "clientIn": 11, + "npc": 15.6, + "player": 31.8, + "logout": 1.7, + "login": 39.1, + "zone": 0.7, + "clientOut": 65.1, + "cleanup": 4.7, + "bandwidthIn": 2234.3, + "bandwidthOut": 27071.7, + "interval": 334.1 + }, + "peak": { + "cycle": 7873, + "world": 97, + "clientIn": 96, + "npc": 58, + "player": 131, + "logout": 86, + "login": 7685, + "zone": 5, + "clientOut": 167, + "cleanup": 19, + "bandwidthIn": 21545, + "bandwidthOut": 63484, + "interval": 8177 + }, + "last": { + "cycle": 157, + "world": 8, + "clientIn": 10, + "npc": 14, + "player": 32, + "logout": 1, + "login": 0, + "zone": 1, + "clientOut": 65, + "cleanup": 5, + "bandwidthIn": 2299, + "bandwidthOut": 12002 + }, + "heapMB": 595, + "rssMB": 1662, + "web": { + "current": { + "start": 1791695789964, + "end": 1791695805528, + "routes": { + "/crc": { + "count": 31, + "totalMs": 9, + "maxMs": 9 + }, + "/playercount": { + "count": 9, + "totalMs": 0, + "maxMs": 0 + }, + "/playerpositions": { + "count": 71, + "totalMs": 111, + "maxMs": 5 + }, + "/status/:bot": { + "count": 66, + "totalMs": 2358, + "maxMs": 54 + }, + "/hiscores/player/*": { + "count": 128, + "totalMs": 940, + "maxMs": 439 + }, + "/": { + "count": 87, + "totalMs": 110, + "maxMs": 26 + }, + "/api/version": { + "count": 3, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days": { + "count": 2, + "totalMs": 2, + "maxMs": 2 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/config819086852": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 1, + "totalMs": 3, + "maxMs": 3 + }, + "/gateway": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791695729911, + "end": 1791695789964, + "routes": { + "/playerpositions": { + "count": 310, + "totalMs": 489, + "maxMs": 14 + }, + "/hiscores/player/*": { + "count": 504, + "totalMs": 1803, + "maxMs": 411 + }, + "/playercount": { + "count": 46, + "totalMs": 0, + "maxMs": 0 + }, + "/crc": { + "count": 76, + "totalMs": 2, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 10, + "totalMs": 22, + "maxMs": 10 + }, + "/": { + "count": 400, + "totalMs": 534, + "maxMs": 44 + }, + "/status/:bot": { + "count": 252, + "totalMs": 31887, + "maxMs": 491 + }, + "/gateway/state/*?password": { + "count": 7, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway": { + "count": 36, + "totalMs": 8, + "maxMs": 1 + }, + "/config819086852": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/interface282644100": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/api/version": { + "count": 14, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 13, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 13, + "totalMs": 2, + "maxMs": 1 + }, + "/worldfeed": { + "count": 6, + "totalMs": 6, + "maxMs": 4 + }, + "/playertraces?hours": { + "count": 1, + "totalMs": 14, + "maxMs": 14 + }, + "/api/market/*": { + "count": 18, + "totalMs": 15, + "maxMs": 10 + }, + "/state/:bot?password": { + "count": 1, + "totalMs": 150, + "maxMs": 150 + }, + "/hiscores/player/*?profile": { + "count": 1, + "totalMs": 3, + "maxMs": 3 + } + } + } + } + }, + "limitations": [ + "Rolling windows overlap: never sum overBudget counts across snapshots. Final window has 16 over-budget cycles of 300 (5.3%).", + "No per-tick raw history/percentiles exposed. Normal intervals return near 300ms outside burst; isolated subsecond event-loop gaps also occur.", + "CPU is a 5-second /proc thread sample assuming 100 USER_HZ. Game thread about 63% of one core, gateway about 40%; 4GB machine has about 1.75 GiB available memory. This is not sustained CPU/RAM exhaustion evidence.", + "Route timings include asynchronous network waits. Slow /status requests are not proof that status handling consumed that much game-thread CPU.", + "No production settings, database content, bot ownership, clients or deployments were modified. A temporary management-port tunnel and lightweight diagnostic processes were used." + ], + "validationForFix": [ + "Reconnect/takeover regression tests", + "GE recovery/integration tests, including cross-player trades and temporary inventories", + "Matched player count and fleet burst before/after observation without profiler; compare tick interval p95/p99/max and checkpoint counts, not only average cycle runtime" + ], + "implementation": { + "status": "Deployed and verified", + "image": "registry.fly.io/rs-sdk-demo:tick-budget-20261011", + "imageDigest": "sha256:b935c0e4e5faa607ed61b8175e3c9d84c0edeba87fb877f912e916e2389a174c", + "changes": [ + "Login admission stops after 10 candidates or a time budget of min(50ms,tickRate/6), with at least one candidate permitted. Pending candidates remain queued; dead queued clients are discarded.", + "Session takeover finishes admission within its iteration and updates per-IP counts without denying an existing slot at the cap.", + "Logout removal uses the same count/time budget, retaining loggingOut on deferred accounts; shutdown drains without this budget.", + "Hiscores ranking indexes on (profile,type,level DESC,playtime,account_id) for SQLite and MySQL, plus cached username-to-rank maps per leaderboard snapshot.", + "Management tickstats includes pendingLogins. Durable checkpoint boundaries and SQLite FULL synchronization remain unchanged." + ], + "validation": { + "repositoryTests": "384 pass, 0 fail", + "engineTypecheck": "passed", + "webclientTypecheck": "passed", + "prismaSchemas": "SQLite and MySQL validation passed", + "marketRecovery": "passed locally and in production-runtime image", + "marketIntegration": "passed locally", + "imageRuntimeTests": "7 pass, 0 fail (includes subprocess lifecycle regressions)", + "fullCheckLimitation": "bun run check stops at pre-existing strict TypeScript errors in unchanged server/gateway/traffic.ts and traffic.test.ts" + }, + "indexBenchmark": { + "environment": "Isolated Python SQLite in-memory benchmark, not production latency", + "accounts": 8000, + "skillRows": 176000, + "queries": 10, + "avgBeforeMs": 7.54, + "avgAfterMs": 2.57, + "speedup": 2.93 + }, + "limitations": [ + "A single synchronous checkpoint is not preemptible and can still exceed a tick budget. The patch prevents hundreds from accumulating inside one session-processing phase.", + "The login and logout budgets apply independently. A burst queues admissions instead of freezing the world; some clients may need to retry while waiting.", + "Post-deploy samples are at a recovering player load. They are not a controlled comparison at the pre-deployment 1,333 players.", + "Tick-work overBudget counts cycle duration only. Wall intervals still occasionally reached 911ms in the final rolling window, even with all work cycles under 300ms. Early restart warm-up included a 3488ms interval; remaining event-loop jitter is not eliminated by these changes." + ], + "sourceHashes": { + "src/engine/World.ts": "912664b2c74e19ed062f00dc4bb5eff52ac039ba50e4005a69dc5eeadb4820f7", + "src/web/pages/hiscores.ts": "de9e1503d19219162e7b9ed8e968d7257060a815535c5d4c427194743076c106" + }, + "deployment": { + "authorization": "User approved Deploy now", + "startedAtUtc": "2026-10-11T05:30:00Z", + "machine": "82962dc77ee3e8", + "procedure": "Cordon, SIGTERM with 300s grace, update only image with original full machine configuration, start, uncordon, verify", + "fleetBefore": { + "at": "2026-10-11T05:29:28.064Z", + "mode": "kalphite-renewable-v219", + "pid": 2595191, + "freshness": { + "fresh": 30, + "total": 30, + "expected": 30 + }, + "combat": { + "paused": false, + "pauseReason": null, + "kills": 16366, + "lastKillAt": "2026-10-11T05:26:39.945Z", + "minutesSinceKill": 3, + "ready": 14, + "required": 16, + "released": false, + "missing": [ + "goo009", + "goo012" + ], + "underground": [] + } + }, + "fleetLawState": "Existing held review at step31; controller and mutable journals retained. No controller reload or action replay.", + "gracefulShutdown": { + "finishedAtUtc": "2026-10-11T05:31:01Z", + "mainChildExitCode": 0 + }, + "machineStartedAtUtc": "2026-10-11T05:31:54Z", + "machineState": "started", + "cordoned": false, + "changedConfigKeys": [ + "image" + ], + "liveDigest": "sha256:b935c0e4e5faa607ed61b8175e3c9d84c0edeba87fb877f912e916e2389a174c", + "databaseVerification": { + "migrations": [ + { + "migration_name": "20261011000000_hiscore_rank_indexes", + "finished_at": 1791696718313 + } + ], + "indexes": [ + { + "name": "hiscore_rank", + "sql": "CREATE INDEX \"hiscore_rank\" ON \"hiscore\"(\"profile\", \"type\", \"level\" DESC, \"playtime\", \"account_id\")" + }, + { + "name": "hiscore_large_rank", + "sql": "CREATE INDEX \"hiscore_large_rank\" ON \"hiscore_large\"(\"profile\", \"type\", \"level\" DESC, \"playtime\", \"account_id\")" + } + ], + "plan": [ + { + "id": 4, + "parent": 0, + "notused": 55, + "detail": "SEARCH h USING COVERING INDEX hiscore_rank (profile=? AND type=?)" + }, + { + "id": 9, + "parent": 0, + "notused": 45, + "detail": "SEARCH a USING INTEGER PRIMARY KEY (rowid=?)" + } + ], + "hashes": { + "src/engine/World.ts": "912664b2c74e19ed062f00dc4bb5eff52ac039ba50e4005a69dc5eeadb4820f7", + "src/web/pages/hiscores.ts": "de9e1503d19219162e7b9ed8e968d7257060a815535c5d4c427194743076c106" + } + }, + "publicRevision": 289, + "fleetAfter": { + "at": "2026-10-11T05:34:27.010Z", + "mode": "kalphite-renewable-v219", + "pid": 2595191, + "freshness": { + "fresh": 30, + "total": 30, + "expected": 30 + }, + "combat": { + "paused": false, + "pauseReason": null, + "kills": 16366, + "lastKillAt": "2026-10-11T05:26:39.945Z", + "minutesSinceKill": 8, + "ready": 14, + "required": 16, + "released": false, + "missing": [ + "goo009", + "goo012" + ], + "underground": [] + } + }, + "beforeDeployRollingWindow": { + "tick": 406172, + "tickRate": 300, + "players": 1333, + "npcs": 8154, + "zonesTracking": 0, + "window": 300, + "overBudget": 11, + "avg": { + "cycle": 175.8, + "world": 9.4, + "clientIn": 10.7, + "npc": 15.8, + "player": 31, + "logout": 3.9, + "login": 12, + "zone": 0.6, + "clientOut": 66.4, + "cleanup": 4.8, + "bandwidthIn": 1983.3, + "bandwidthOut": 22721.2, + "interval": 302.3 + }, + "peak": { + "cycle": 714, + "world": 118, + "clientIn": 45, + "npc": 72, + "player": 102, + "logout": 365, + "login": 457, + "zone": 5, + "clientOut": 148, + "cleanup": 21, + "bandwidthIn": 3517, + "bandwidthOut": 63566, + "interval": 925 + }, + "last": { + "cycle": 170, + "world": 7, + "clientIn": 9, + "npc": 14, + "player": 40, + "logout": 1, + "login": 0, + "zone": 0, + "clientOut": 70, + "cleanup": 6, + "bandwidthIn": 1711, + "bandwidthOut": 21311 + }, + "heapMB": 619, + "rssMB": 1581, + "web": { + "current": { + "start": 1791696510927, + "end": 1791696568234, + "routes": { + "/hiscores/player/*": { + "count": 459, + "totalMs": 1774, + "maxMs": 500 + }, + "/": { + "count": 376, + "totalMs": 531, + "maxMs": 38 + }, + "/crc": { + "count": 80, + "totalMs": 3, + "maxMs": 1 + }, + "/playerpositions": { + "count": 262, + "totalMs": 395, + "maxMs": 20 + }, + "/playercount": { + "count": 42, + "totalMs": 2, + "maxMs": 1 + }, + "/status/:bot": { + "count": 250, + "totalMs": 5886, + "maxMs": 741 + }, + "/favicon.ico": { + "count": 8, + "totalMs": 2, + "maxMs": 1 + }, + "/config819086852": { + "count": 6, + "totalMs": 1, + "maxMs": 1 + }, + "/interface282644100": { + "count": 6, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway": { + "count": 25, + "totalMs": 4, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 28, + "totalMs": 18, + "maxMs": 4 + }, + "/favicon-active.ico": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/api/version": { + "count": 5, + "totalMs": 0, + "maxMs": 0 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 6, + "maxMs": 6 + }, + "/worldfeed": { + "count": 3, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791696450927, + "end": 1791696510927, + "routes": { + "/playerpositions": { + "count": 277, + "totalMs": 436, + "maxMs": 14 + }, + "/crc": { + "count": 80, + "totalMs": 1, + "maxMs": 1 + }, + "/": { + "count": 412, + "totalMs": 558, + "maxMs": 35 + }, + "/hiscores/player/*": { + "count": 485, + "totalMs": 2196, + "maxMs": 538 + }, + "/status/:bot": { + "count": 253, + "totalMs": 14223, + "maxMs": 275 + }, + "/playercount": { + "count": 46, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway": { + "count": 45, + "totalMs": 7, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 8, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/config819086852": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/interface282644100": { + "count": 2, + "totalMs": 15, + "maxMs": 15 + }, + "/api/market/*?days": { + "count": 151, + "totalMs": 45, + "maxMs": 8 + }, + "/api/version": { + "count": 3, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 7, + "maxMs": 7 + }, + "/api/market/*?days&limit&q": { + "count": 5, + "totalMs": 18, + "maxMs": 5 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 14, + "maxMs": 14 + }, + "/gateway/state/*?password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + }, + "verifiedAtUtc": "2026-10-11T05:36:45.755430+00:00", + "postDeploySamples": [ + { + "capturedAt": "2026-10-11T05:33:31.657Z", + "requestMs": 218, + "tick": 280, + "tickRate": 300, + "players": 682, + "pendingLogins": 0, + "npcs": 8142, + "zonesTracking": 0, + "window": 280, + "overBudget": 0, + "avg": { + "cycle": 75.6, + "world": 3.2, + "clientIn": 2.6, + "npc": 17.8, + "player": 9.6, + "logout": 0.3, + "login": 7.6, + "zone": 0.2, + "clientOut": 14.8, + "cleanup": 2.8, + "bandwidthIn": 492.5, + "bandwidthOut": 19034, + "interval": 321.1 + }, + "peak": { + "cycle": 269, + "world": 48, + "clientIn": 39, + "npc": 105, + "player": 35, + "logout": 52, + "login": 57, + "zone": 5, + "clientOut": 50, + "cleanup": 17, + "bandwidthIn": 2171, + "bandwidthOut": 64246, + "interval": 3488 + }, + "last": { + "cycle": 111, + "world": 4, + "clientIn": 5, + "npc": 23, + "player": 15, + "logout": 0, + "login": 4, + "zone": 0, + "clientOut": 37, + "cleanup": 4, + "bandwidthIn": 930, + "bandwidthOut": 34722 + }, + "heapMB": 442, + "rssMB": 1051, + "web": { + "current": { + "start": 1791696779403, + "end": 1791696811659, + "routes": { + "/": { + "count": 351, + "totalMs": 450, + "maxMs": 9 + }, + "/crc": { + "count": 98, + "totalMs": 2, + "maxMs": 1 + }, + "/playerpositions": { + "count": 171, + "totalMs": 105, + "maxMs": 5 + }, + "/status/:bot": { + "count": 124, + "totalMs": 859, + "maxMs": 109 + }, + "/api/version": { + "count": 43, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 256, + "totalMs": 761, + "maxMs": 433 + }, + "/api/market/*?days": { + "count": 402, + "totalMs": 72, + "maxMs": 3 + }, + "/bot/client.js": { + "count": 17, + "totalMs": 1, + "maxMs": 1 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/config819086852": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?limit&sort": { + "count": 1, + "totalMs": 4, + "maxMs": 4 + }, + "/api/market/*?days&limit&q": { + "count": 9, + "totalMs": 34, + "maxMs": 7 + }, + "/playercount": { + "count": 28, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?from&interval&to": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 6, + "totalMs": 1, + "maxMs": 1 + }, + "/img/stoneback.gif": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?limit&offset&q": { + "count": 1, + "totalMs": 3, + "maxMs": 3 + }, + "/bot?bot&password": { + "count": 6, + "totalMs": 14, + "maxMs": 8 + }, + "/bot/client.js?v": { + "count": 5, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/tinymidipcm.wasm": { + "count": 5, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 5, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 9, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/ondemandworker.js": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway": { + "count": 5, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores?category&profile": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791696719367, + "end": 1791696779403, + "routes": { + "/": { + "count": 1744, + "totalMs": 2892, + "maxMs": 53 + }, + "/crc": { + "count": 322, + "totalMs": 14, + "maxMs": 1 + }, + "/gateway": { + "count": 105, + "totalMs": 33, + "maxMs": 9 + }, + "/hiscores/player/*": { + "count": 471, + "totalMs": 2947, + "maxMs": 2181 + }, + "/playercount": { + "count": 97, + "totalMs": 2, + "maxMs": 1 + }, + "/hiscores?category&profile": { + "count": 19, + "totalMs": 6, + "maxMs": 1 + }, + "/playerpositions": { + "count": 664, + "totalMs": 76, + "maxMs": 7 + }, + "/worldfeed": { + "count": 25, + "totalMs": 15, + "maxMs": 5 + }, + "/bot?bot&password": { + "count": 5, + "totalMs": 7, + "maxMs": 2 + }, + "/api/version": { + "count": 616, + "totalMs": 23, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/config819086852": { + "count": 5, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 6, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon-disconnected.ico": { + "count": 11, + "totalMs": 5, + "maxMs": 3 + }, + "/market": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/client.js?v": { + "count": 5, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 425, + "totalMs": 127, + "maxMs": 37 + }, + "/img/background2.jpg": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?limit&offset&q": { + "count": 2, + "totalMs": 50, + "maxMs": 41 + }, + "/status/:bot": { + "count": 250, + "totalMs": 65319, + "maxMs": 1996 + }, + "/api/market/*?days&limit&q": { + "count": 42, + "totalMs": 393, + "maxMs": 70 + }, + "/interface282644100": { + "count": 5, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/tinymidipcm.wasm": { + "count": 5, + "totalMs": 7, + "maxMs": 5 + }, + "/client/SCC1_Florestan.sf2": { + "count": 5, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/ondemandworker.js": { + "count": 5, + "totalMs": 1, + "maxMs": 1 + }, + "/state/Jackpoo5?password": { + "count": 2, + "totalMs": 3167, + "maxMs": 3166 + }, + "/api/market/*": { + "count": 3, + "totalMs": 4, + "maxMs": 4 + }, + "/sprite/item/*": { + "count": 23, + "totalMs": 76506, + "maxMs": 5839 + }, + "/api/market/*?limit&sort": { + "count": 1, + "totalMs": 9, + "maxMs": 9 + }, + "/state/jacklove1?password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/state/jacklove2?password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/state/jacklove3?password": { + "count": 1, + "totalMs": 4, + "maxMs": 4 + }, + "/state/jacklove5?password": { + "count": 1, + "totalMs": 3, + "maxMs": 3 + }, + "/state/jacklove10?password": { + "count": 1, + "totalMs": 29, + "maxMs": 29 + }, + "/state/jacklove6?password": { + "count": 1, + "totalMs": 37, + "maxMs": 37 + }, + "/state/jacklove12?password": { + "count": 1, + "totalMs": 38, + "maxMs": 38 + }, + "/state/jacklove13?password": { + "count": 1, + "totalMs": 24, + "maxMs": 24 + }, + "/state/jacklove11?password": { + "count": 1, + "totalMs": 27, + "maxMs": 27 + }, + "/state/jacklove14?password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/state/jacklove17?password": { + "count": 1, + "totalMs": 2, + "maxMs": 2 + }, + "/state/jacklove16?password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/state/jacklove18?password": { + "count": 1, + "totalMs": 3, + "maxMs": 3 + }, + "/state/jacklove15?password": { + "count": 1, + "totalMs": 6, + "maxMs": 6 + }, + "/state/jacklove20?password": { + "count": 1, + "totalMs": 5, + "maxMs": 5 + }, + "/state/ABGARMY01?password": { + "count": 1, + "totalMs": 2, + "maxMs": 2 + }, + "/state/ABGARMY03?password": { + "count": 1, + "totalMs": 2, + "maxMs": 2 + }, + "/state/ABGARMY04?password": { + "count": 1, + "totalMs": 65, + "maxMs": 65 + }, + "/state/ABGARMY05?password": { + "count": 1, + "totalMs": 8, + "maxMs": 8 + }, + "/state/jacklove8?password": { + "count": 1, + "totalMs": 1540, + "maxMs": 1540 + }, + "/state/ABGARMY06?password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/state/jacklove7?password": { + "count": 1, + "totalMs": 1608, + "maxMs": 1608 + }, + "/state/jacklove9?password": { + "count": 1, + "totalMs": 1680, + "maxMs": 1680 + }, + "/state/ABGARMY07?password": { + "count": 1, + "totalMs": 4, + "maxMs": 4 + }, + "/state/ABGARMY08?password": { + "count": 1, + "totalMs": 4, + "maxMs": 4 + }, + "/state/ABGARMY09?password": { + "count": 1, + "totalMs": 3, + "maxMs": 3 + }, + "/state/ABGARMY10?password": { + "count": 1, + "totalMs": 6, + "maxMs": 6 + }, + "/state/ABGARMY11?password": { + "count": 1, + "totalMs": 5, + "maxMs": 5 + }, + "/state/ABGARMY14?password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/state/ABGARMY16?password": { + "count": 1, + "totalMs": 5, + "maxMs": 5 + }, + "/state/ABGARMY15?password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/state/ABGARMY17?password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/state/ABGARMY19?password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/state/pigfat?password": { + "count": 1, + "totalMs": 6966, + "maxMs": 6966 + }, + "/state/jackthief?password": { + "count": 1, + "totalMs": 7376, + "maxMs": 7376 + }, + "/state/jacklove4?password": { + "count": 1, + "totalMs": 8473, + "maxMs": 8473 + }, + "/state/Jackpoo1?password": { + "count": 1, + "totalMs": 8777, + "maxMs": 8777 + }, + "/state/Jackpoo3?password": { + "count": 1, + "totalMs": 9355, + "maxMs": 9355 + }, + "/state/Jackpoo2?password": { + "count": 1, + "totalMs": 9529, + "maxMs": 9529 + }, + "/state/Jackpoo4?password": { + "count": 1, + "totalMs": 9603, + "maxMs": 9603 + }, + "/state/ABGARMY20?password": { + "count": 1, + "totalMs": 6802, + "maxMs": 6802 + }, + "/state/ABGARMY18?password": { + "count": 1, + "totalMs": 6858, + "maxMs": 6858 + }, + "/state/ABGARMY13?password": { + "count": 1, + "totalMs": 7277, + "maxMs": 7277 + }, + "/state/ABGARMY12?password": { + "count": 1, + "totalMs": 7633, + "maxMs": 7633 + }, + "/state/jacklove19?password": { + "count": 1, + "totalMs": 9205, + "maxMs": 9205 + }, + "/state/ABGARMY02?password": { + "count": 1, + "totalMs": 9253, + "maxMs": 9253 + }, + "/state/fatpig?password": { + "count": 1, + "totalMs": 14589, + "maxMs": 14589 + }, + "/hiscores/outfit?profile": { + "count": 1, + "totalMs": 177, + "maxMs": 177 + }, + "/hiscores/bank?profile": { + "count": 1, + "totalMs": 1305, + "maxMs": 1305 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 45, + "maxMs": 45 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T05:33:46.533Z", + "requestMs": 93, + "tick": 329, + "tickRate": 300, + "players": 702, + "pendingLogins": 1, + "npcs": 8142, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 77, + "world": 3.1, + "clientIn": 3.1, + "npc": 15.4, + "player": 11.1, + "logout": 0.3, + "login": 7.5, + "zone": 0.3, + "clientOut": 17.7, + "cleanup": 2.6, + "bandwidthIn": 597.9, + "bandwidthOut": 22736.4, + "interval": 302 + }, + "peak": { + "cycle": 190, + "world": 48, + "clientIn": 39, + "npc": 58, + "player": 35, + "logout": 52, + "login": 55, + "zone": 5, + "clientOut": 50, + "cleanup": 6, + "bandwidthIn": 2171, + "bandwidthOut": 64246, + "interval": 1473 + }, + "last": { + "cycle": 123, + "world": 3, + "clientIn": 8, + "npc": 16, + "player": 20, + "logout": 0, + "login": 35, + "zone": 0, + "clientOut": 26, + "cleanup": 3, + "bandwidthIn": 1071, + "bandwidthOut": 28737 + }, + "heapMB": 435, + "rssMB": 1057, + "web": { + "current": { + "start": 1791696779403, + "end": 1791696826534, + "routes": { + "/": { + "count": 476, + "totalMs": 624, + "maxMs": 9 + }, + "/crc": { + "count": 173, + "totalMs": 7, + "maxMs": 1 + }, + "/playerpositions": { + "count": 247, + "totalMs": 158, + "maxMs": 5 + }, + "/status/:bot": { + "count": 189, + "totalMs": 1332, + "maxMs": 109 + }, + "/api/version": { + "count": 88, + "totalMs": 2, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 479, + "totalMs": 908, + "maxMs": 433 + }, + "/api/market/*?days": { + "count": 434, + "totalMs": 79, + "maxMs": 3 + }, + "/bot/client.js": { + "count": 26, + "totalMs": 3, + "maxMs": 1 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 3, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 3, + "totalMs": 1, + "maxMs": 1 + }, + "/config819086852": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?limit&sort": { + "count": 1, + "totalMs": 4, + "maxMs": 4 + }, + "/api/market/*?days&limit&q": { + "count": 9, + "totalMs": 34, + "maxMs": 7 + }, + "/playercount": { + "count": 44, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?from&interval&to": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 9, + "totalMs": 1, + "maxMs": 1 + }, + "/img/stoneback.gif": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?limit&offset&q": { + "count": 1, + "totalMs": 3, + "maxMs": 3 + }, + "/bot?bot&password": { + "count": 13, + "totalMs": 27, + "maxMs": 8 + }, + "/bot/client.js?v": { + "count": 12, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 12, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 12, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon-disconnected.ico": { + "count": 23, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/ondemandworker.js": { + "count": 13, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway": { + "count": 8, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores?category&profile": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791696719367, + "end": 1791696779403, + "routes": { + "/": { + "count": 1744, + "totalMs": 2892, + "maxMs": 53 + }, + "/crc": { + "count": 322, + "totalMs": 14, + "maxMs": 1 + }, + "/gateway": { + "count": 105, + "totalMs": 33, + "maxMs": 9 + }, + "/hiscores/player/*": { + "count": 471, + "totalMs": 2947, + "maxMs": 2181 + }, + "/playercount": { + "count": 97, + "totalMs": 2, + "maxMs": 1 + }, + "/hiscores?category&profile": { + "count": 19, + "totalMs": 6, + "maxMs": 1 + }, + "/playerpositions": { + "count": 664, + "totalMs": 76, + "maxMs": 7 + }, + "/worldfeed": { + "count": 25, + "totalMs": 15, + "maxMs": 5 + }, + "/bot?bot&password": { + "count": 5, + "totalMs": 7, + "maxMs": 2 + }, + "/api/version": { + "count": 616, + "totalMs": 23, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/config819086852": { + "count": 5, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 6, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon-disconnected.ico": { + "count": 11, + "totalMs": 5, + "maxMs": 3 + }, + "/market": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/client.js?v": { + "count": 5, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 425, + "totalMs": 127, + "maxMs": 37 + }, + "/img/background2.jpg": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?limit&offset&q": { + "count": 2, + "totalMs": 50, + "maxMs": 41 + }, + "/status/:bot": { + "count": 250, + "totalMs": 65319, + "maxMs": 1996 + }, + "/api/market/*?days&limit&q": { + "count": 42, + "totalMs": 393, + "maxMs": 70 + }, + "/interface282644100": { + "count": 5, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/tinymidipcm.wasm": { + "count": 5, + "totalMs": 7, + "maxMs": 5 + }, + "/client/SCC1_Florestan.sf2": { + "count": 5, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/ondemandworker.js": { + "count": 5, + "totalMs": 1, + "maxMs": 1 + }, + "/state/Jackpoo5?password": { + "count": 2, + "totalMs": 3167, + "maxMs": 3166 + }, + "/api/market/*": { + "count": 3, + "totalMs": 4, + "maxMs": 4 + }, + "/sprite/item/*": { + "count": 23, + "totalMs": 76506, + "maxMs": 5839 + }, + "/api/market/*?limit&sort": { + "count": 1, + "totalMs": 9, + "maxMs": 9 + }, + "/state/jacklove1?password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/state/jacklove2?password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/state/jacklove3?password": { + "count": 1, + "totalMs": 4, + "maxMs": 4 + }, + "/state/jacklove5?password": { + "count": 1, + "totalMs": 3, + "maxMs": 3 + }, + "/state/jacklove10?password": { + "count": 1, + "totalMs": 29, + "maxMs": 29 + }, + "/state/jacklove6?password": { + "count": 1, + "totalMs": 37, + "maxMs": 37 + }, + "/state/jacklove12?password": { + "count": 1, + "totalMs": 38, + "maxMs": 38 + }, + "/state/jacklove13?password": { + "count": 1, + "totalMs": 24, + "maxMs": 24 + }, + "/state/jacklove11?password": { + "count": 1, + "totalMs": 27, + "maxMs": 27 + }, + "/state/jacklove14?password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/state/jacklove17?password": { + "count": 1, + "totalMs": 2, + "maxMs": 2 + }, + "/state/jacklove16?password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/state/jacklove18?password": { + "count": 1, + "totalMs": 3, + "maxMs": 3 + }, + "/state/jacklove15?password": { + "count": 1, + "totalMs": 6, + "maxMs": 6 + }, + "/state/jacklove20?password": { + "count": 1, + "totalMs": 5, + "maxMs": 5 + }, + "/state/ABGARMY01?password": { + "count": 1, + "totalMs": 2, + "maxMs": 2 + }, + "/state/ABGARMY03?password": { + "count": 1, + "totalMs": 2, + "maxMs": 2 + }, + "/state/ABGARMY04?password": { + "count": 1, + "totalMs": 65, + "maxMs": 65 + }, + "/state/ABGARMY05?password": { + "count": 1, + "totalMs": 8, + "maxMs": 8 + }, + "/state/jacklove8?password": { + "count": 1, + "totalMs": 1540, + "maxMs": 1540 + }, + "/state/ABGARMY06?password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/state/jacklove7?password": { + "count": 1, + "totalMs": 1608, + "maxMs": 1608 + }, + "/state/jacklove9?password": { + "count": 1, + "totalMs": 1680, + "maxMs": 1680 + }, + "/state/ABGARMY07?password": { + "count": 1, + "totalMs": 4, + "maxMs": 4 + }, + "/state/ABGARMY08?password": { + "count": 1, + "totalMs": 4, + "maxMs": 4 + }, + "/state/ABGARMY09?password": { + "count": 1, + "totalMs": 3, + "maxMs": 3 + }, + "/state/ABGARMY10?password": { + "count": 1, + "totalMs": 6, + "maxMs": 6 + }, + "/state/ABGARMY11?password": { + "count": 1, + "totalMs": 5, + "maxMs": 5 + }, + "/state/ABGARMY14?password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/state/ABGARMY16?password": { + "count": 1, + "totalMs": 5, + "maxMs": 5 + }, + "/state/ABGARMY15?password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/state/ABGARMY17?password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/state/ABGARMY19?password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/state/pigfat?password": { + "count": 1, + "totalMs": 6966, + "maxMs": 6966 + }, + "/state/jackthief?password": { + "count": 1, + "totalMs": 7376, + "maxMs": 7376 + }, + "/state/jacklove4?password": { + "count": 1, + "totalMs": 8473, + "maxMs": 8473 + }, + "/state/Jackpoo1?password": { + "count": 1, + "totalMs": 8777, + "maxMs": 8777 + }, + "/state/Jackpoo3?password": { + "count": 1, + "totalMs": 9355, + "maxMs": 9355 + }, + "/state/Jackpoo2?password": { + "count": 1, + "totalMs": 9529, + "maxMs": 9529 + }, + "/state/Jackpoo4?password": { + "count": 1, + "totalMs": 9603, + "maxMs": 9603 + }, + "/state/ABGARMY20?password": { + "count": 1, + "totalMs": 6802, + "maxMs": 6802 + }, + "/state/ABGARMY18?password": { + "count": 1, + "totalMs": 6858, + "maxMs": 6858 + }, + "/state/ABGARMY13?password": { + "count": 1, + "totalMs": 7277, + "maxMs": 7277 + }, + "/state/ABGARMY12?password": { + "count": 1, + "totalMs": 7633, + "maxMs": 7633 + }, + "/state/jacklove19?password": { + "count": 1, + "totalMs": 9205, + "maxMs": 9205 + }, + "/state/ABGARMY02?password": { + "count": 1, + "totalMs": 9253, + "maxMs": 9253 + }, + "/state/fatpig?password": { + "count": 1, + "totalMs": 14589, + "maxMs": 14589 + }, + "/hiscores/outfit?profile": { + "count": 1, + "totalMs": 177, + "maxMs": 177 + }, + "/hiscores/bank?profile": { + "count": 1, + "totalMs": 1305, + "maxMs": 1305 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 45, + "maxMs": 45 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T05:34:01.689Z", + "requestMs": 247, + "tick": 380, + "tickRate": 300, + "players": 771, + "pendingLogins": 2, + "npcs": 8142, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 82.5, + "world": 3.2, + "clientIn": 3.7, + "npc": 13.5, + "player": 13.3, + "logout": 0.4, + "login": 9, + "zone": 0.3, + "clientOut": 21.4, + "cleanup": 2.5, + "bandwidthIn": 729.6, + "bandwidthOut": 28596.7, + "interval": 302 + }, + "peak": { + "cycle": 199, + "world": 48, + "clientIn": 39, + "npc": 41, + "player": 40, + "logout": 52, + "login": 55, + "zone": 4, + "clientOut": 50, + "cleanup": 6, + "bandwidthIn": 2171, + "bandwidthOut": 64246, + "interval": 1473 + }, + "last": { + "cycle": 135, + "world": 11, + "clientIn": 5, + "npc": 11, + "player": 18, + "logout": 0, + "login": 41, + "zone": 1, + "clientOut": 30, + "cleanup": 4, + "bandwidthIn": 868, + "bandwidthOut": 39999 + }, + "heapMB": 435, + "rssMB": 1038, + "web": { + "current": { + "start": 1791696839403, + "end": 1791696841691, + "routes": { + "/": { + "count": 29, + "totalMs": 34, + "maxMs": 2 + }, + "/api/market/*?days": { + "count": 37, + "totalMs": 9, + "maxMs": 2 + }, + "/playerpositions": { + "count": 13, + "totalMs": 10, + "maxMs": 2 + }, + "/crc": { + "count": 17, + "totalMs": 0, + "maxMs": 0 + }, + "/api/version": { + "count": 11, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/player/*": { + "count": 16, + "totalMs": 8, + "maxMs": 1 + }, + "/bot/client.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791696779403, + "end": 1791696839403, + "routes": { + "/": { + "count": 615, + "totalMs": 790, + "maxMs": 9 + }, + "/crc": { + "count": 210, + "totalMs": 9, + "maxMs": 1 + }, + "/playerpositions": { + "count": 315, + "totalMs": 206, + "maxMs": 5 + }, + "/status/:bot": { + "count": 255, + "totalMs": 1488, + "maxMs": 109 + }, + "/api/version": { + "count": 100, + "totalMs": 4, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 583, + "totalMs": 986, + "maxMs": 433 + }, + "/api/market/*?days": { + "count": 485, + "totalMs": 87, + "maxMs": 3 + }, + "/bot/client.js": { + "count": 33, + "totalMs": 6, + "maxMs": 1 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 3, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 3, + "totalMs": 1, + "maxMs": 1 + }, + "/config819086852": { + "count": 6, + "totalMs": 2, + "maxMs": 1 + }, + "/interface282644100": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?limit&sort": { + "count": 1, + "totalMs": 4, + "maxMs": 4 + }, + "/api/market/*?days&limit&q": { + "count": 10, + "totalMs": 36, + "maxMs": 7 + }, + "/playercount": { + "count": 50, + "totalMs": 2, + "maxMs": 1 + }, + "/api/market/*?from&interval&to": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 25, + "totalMs": 2, + "maxMs": 1 + }, + "/img/stoneback.gif": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?limit&offset&q": { + "count": 1, + "totalMs": 3, + "maxMs": 3 + }, + "/bot?bot&password": { + "count": 13, + "totalMs": 27, + "maxMs": 8 + }, + "/bot/client.js?v": { + "count": 12, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 12, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 12, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon-disconnected.ico": { + "count": 23, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/ondemandworker.js": { + "count": 13, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway": { + "count": 16, + "totalMs": 2, + "maxMs": 1 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores?category&profile": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T05:34:16.658Z", + "requestMs": 215, + "tick": 430, + "tickRate": 300, + "players": 826, + "pendingLogins": 1, + "npcs": 8143, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 87.6, + "world": 3.4, + "clientIn": 4.3, + "npc": 12.5, + "player": 15.1, + "logout": 0.4, + "login": 8.9, + "zone": 0.3, + "clientOut": 25.2, + "cleanup": 2.5, + "bandwidthIn": 846.4, + "bandwidthOut": 33480.4, + "interval": 302 + }, + "peak": { + "cycle": 199, + "world": 48, + "clientIn": 39, + "npc": 52, + "player": 40, + "logout": 52, + "login": 63, + "zone": 2, + "clientOut": 50, + "cleanup": 6, + "bandwidthIn": 2171, + "bandwidthOut": 64246, + "interval": 1473 + }, + "last": { + "cycle": 111, + "world": 4, + "clientIn": 5, + "npc": 17, + "player": 22, + "logout": 0, + "login": 0, + "zone": 0, + "clientOut": 39, + "cleanup": 2, + "bandwidthIn": 855, + "bandwidthOut": 35986 + }, + "heapMB": 450, + "rssMB": 1082, + "web": { + "current": { + "start": 1791696839403, + "end": 1791696856656, + "routes": { + "/": { + "count": 187, + "totalMs": 252, + "maxMs": 8 + }, + "/api/market/*?days": { + "count": 85, + "totalMs": 20, + "maxMs": 2 + }, + "/playerpositions": { + "count": 92, + "totalMs": 81, + "maxMs": 4 + }, + "/crc": { + "count": 71, + "totalMs": 0, + "maxMs": 0 + }, + "/api/version": { + "count": 37, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/player/*": { + "count": 136, + "totalMs": 643, + "maxMs": 394 + }, + "/bot/client.js": { + "count": 9, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/status/:bot": { + "count": 115, + "totalMs": 1059, + "maxMs": 18 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 19, + "maxMs": 19 + }, + "/worldfeed": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/playercount": { + "count": 15, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791696779403, + "end": 1791696839403, + "routes": { + "/": { + "count": 615, + "totalMs": 790, + "maxMs": 9 + }, + "/crc": { + "count": 210, + "totalMs": 9, + "maxMs": 1 + }, + "/playerpositions": { + "count": 315, + "totalMs": 206, + "maxMs": 5 + }, + "/status/:bot": { + "count": 255, + "totalMs": 1488, + "maxMs": 109 + }, + "/api/version": { + "count": 100, + "totalMs": 4, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 583, + "totalMs": 986, + "maxMs": 433 + }, + "/api/market/*?days": { + "count": 485, + "totalMs": 87, + "maxMs": 3 + }, + "/bot/client.js": { + "count": 33, + "totalMs": 6, + "maxMs": 1 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 3, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 3, + "totalMs": 1, + "maxMs": 1 + }, + "/config819086852": { + "count": 6, + "totalMs": 2, + "maxMs": 1 + }, + "/interface282644100": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?limit&sort": { + "count": 1, + "totalMs": 4, + "maxMs": 4 + }, + "/api/market/*?days&limit&q": { + "count": 10, + "totalMs": 36, + "maxMs": 7 + }, + "/playercount": { + "count": 50, + "totalMs": 2, + "maxMs": 1 + }, + "/api/market/*?from&interval&to": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 25, + "totalMs": 2, + "maxMs": 1 + }, + "/img/stoneback.gif": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?limit&offset&q": { + "count": 1, + "totalMs": 3, + "maxMs": 3 + }, + "/bot?bot&password": { + "count": 13, + "totalMs": 27, + "maxMs": 8 + }, + "/bot/client.js?v": { + "count": 12, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 12, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 12, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon-disconnected.ico": { + "count": 23, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/ondemandworker.js": { + "count": 13, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway": { + "count": 16, + "totalMs": 2, + "maxMs": 1 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores?category&profile": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T05:34:31.535Z", + "requestMs": 91, + "tick": 479, + "tickRate": 300, + "players": 846, + "pendingLogins": 0, + "npcs": 8143, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 89.7, + "world": 3.5, + "clientIn": 4.5, + "npc": 12.4, + "player": 15.9, + "logout": 0.2, + "login": 8.1, + "zone": 0.4, + "clientOut": 26.8, + "cleanup": 2.7, + "bandwidthIn": 884.2, + "bandwidthOut": 34498.2, + "interval": 300 + }, + "peak": { + "cycle": 199, + "world": 48, + "clientIn": 39, + "npc": 52, + "player": 40, + "logout": 20, + "login": 63, + "zone": 3, + "clientOut": 52, + "cleanup": 7, + "bandwidthIn": 2171, + "bandwidthOut": 52523, + "interval": 686 + }, + "last": { + "cycle": 68, + "world": 4, + "clientIn": 3, + "npc": 11, + "player": 9, + "logout": 0, + "login": 2, + "zone": 0, + "clientOut": 26, + "cleanup": 2, + "bandwidthIn": 912, + "bandwidthOut": 40135 + }, + "heapMB": 430, + "rssMB": 1033, + "web": { + "current": { + "start": 1791696839403, + "end": 1791696871537, + "routes": { + "/": { + "count": 330, + "totalMs": 438, + "maxMs": 8 + }, + "/api/market/*?days": { + "count": 90, + "totalMs": 22, + "maxMs": 2 + }, + "/playerpositions": { + "count": 170, + "totalMs": 149, + "maxMs": 4 + }, + "/crc": { + "count": 112, + "totalMs": 4, + "maxMs": 1 + }, + "/api/version": { + "count": 52, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/player/*": { + "count": 256, + "totalMs": 753, + "maxMs": 394 + }, + "/bot/client.js": { + "count": 17, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 5, + "totalMs": 1, + "maxMs": 1 + }, + "/status/:bot": { + "count": 134, + "totalMs": 1128, + "maxMs": 18 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 19, + "maxMs": 19 + }, + "/worldfeed": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/playercount": { + "count": 24, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway": { + "count": 3, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 11, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot?bot&password&stateEvery": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/title-564448443": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/config819086852": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/interface282644100": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/media-1710005394": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/textures915347346": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/wordenc455063218": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/sounds-1491954823": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/versionlist1333187759": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791696779403, + "end": 1791696839403, + "routes": { + "/": { + "count": 615, + "totalMs": 790, + "maxMs": 9 + }, + "/crc": { + "count": 210, + "totalMs": 9, + "maxMs": 1 + }, + "/playerpositions": { + "count": 315, + "totalMs": 206, + "maxMs": 5 + }, + "/status/:bot": { + "count": 255, + "totalMs": 1488, + "maxMs": 109 + }, + "/api/version": { + "count": 100, + "totalMs": 4, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 583, + "totalMs": 986, + "maxMs": 433 + }, + "/api/market/*?days": { + "count": 485, + "totalMs": 87, + "maxMs": 3 + }, + "/bot/client.js": { + "count": 33, + "totalMs": 6, + "maxMs": 1 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 3, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 3, + "totalMs": 1, + "maxMs": 1 + }, + "/config819086852": { + "count": 6, + "totalMs": 2, + "maxMs": 1 + }, + "/interface282644100": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?limit&sort": { + "count": 1, + "totalMs": 4, + "maxMs": 4 + }, + "/api/market/*?days&limit&q": { + "count": 10, + "totalMs": 36, + "maxMs": 7 + }, + "/playercount": { + "count": 50, + "totalMs": 2, + "maxMs": 1 + }, + "/api/market/*?from&interval&to": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 25, + "totalMs": 2, + "maxMs": 1 + }, + "/img/stoneback.gif": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?limit&offset&q": { + "count": 1, + "totalMs": 3, + "maxMs": 3 + }, + "/bot?bot&password": { + "count": 13, + "totalMs": 27, + "maxMs": 8 + }, + "/bot/client.js?v": { + "count": 12, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 12, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 12, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon-disconnected.ico": { + "count": 23, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/ondemandworker.js": { + "count": 13, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway": { + "count": 16, + "totalMs": 2, + "maxMs": 1 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores?category&profile": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T05:34:46.622Z", + "requestMs": 176, + "tick": 530, + "tickRate": 300, + "players": 862, + "pendingLogins": 0, + "npcs": 8143, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 91, + "world": 3.6, + "clientIn": 4.5, + "npc": 12.3, + "player": 16.1, + "logout": 0.2, + "login": 8.2, + "zone": 0.4, + "clientOut": 27.7, + "cleanup": 2.8, + "bandwidthIn": 871.4, + "bandwidthOut": 35260.1, + "interval": 300 + }, + "peak": { + "cycle": 199, + "world": 48, + "clientIn": 14, + "npc": 52, + "player": 40, + "logout": 20, + "login": 63, + "zone": 3, + "clientOut": 52, + "cleanup": 8, + "bandwidthIn": 1312, + "bandwidthOut": 53433, + "interval": 686 + }, + "last": { + "cycle": 69, + "world": 2, + "clientIn": 4, + "npc": 10, + "player": 13, + "logout": 0, + "login": 0, + "zone": 0, + "clientOut": 28, + "cleanup": 2, + "bandwidthIn": 949, + "bandwidthOut": 36525 + }, + "heapMB": 471, + "rssMB": 1116, + "web": { + "current": { + "start": 1791696839403, + "end": 1791696886614, + "routes": { + "/": { + "count": 441, + "totalMs": 581, + "maxMs": 13 + }, + "/api/market/*?days": { + "count": 90, + "totalMs": 22, + "maxMs": 2 + }, + "/playerpositions": { + "count": 249, + "totalMs": 225, + "maxMs": 4 + }, + "/crc": { + "count": 147, + "totalMs": 6, + "maxMs": 1 + }, + "/api/version": { + "count": 63, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/player/*": { + "count": 376, + "totalMs": 827, + "maxMs": 394 + }, + "/bot/client.js": { + "count": 25, + "totalMs": 3, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 9, + "totalMs": 2, + "maxMs": 1 + }, + "/status/:bot": { + "count": 224, + "totalMs": 2883, + "maxMs": 32 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 19, + "maxMs": 19 + }, + "/worldfeed": { + "count": 3, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 7, + "totalMs": 1, + "maxMs": 1 + }, + "/playercount": { + "count": 39, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway": { + "count": 3, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 17, + "totalMs": 4, + "maxMs": 1 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot?bot&password&stateEvery": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/title-564448443": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/config819086852": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/interface282644100": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/media-1710005394": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/textures915347346": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/wordenc455063218": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/sounds-1491954823": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/versionlist1333187759": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/ondemandworker.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?limit&q&sort": { + "count": 1, + "totalMs": 5, + "maxMs": 5 + }, + "/robots.txt": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + } + } + }, + "last": { + "start": 1791696779403, + "end": 1791696839403, + "routes": { + "/": { + "count": 615, + "totalMs": 790, + "maxMs": 9 + }, + "/crc": { + "count": 210, + "totalMs": 9, + "maxMs": 1 + }, + "/playerpositions": { + "count": 315, + "totalMs": 206, + "maxMs": 5 + }, + "/status/:bot": { + "count": 255, + "totalMs": 1488, + "maxMs": 109 + }, + "/api/version": { + "count": 100, + "totalMs": 4, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 583, + "totalMs": 986, + "maxMs": 433 + }, + "/api/market/*?days": { + "count": 485, + "totalMs": 87, + "maxMs": 3 + }, + "/bot/client.js": { + "count": 33, + "totalMs": 6, + "maxMs": 1 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 3, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 3, + "totalMs": 1, + "maxMs": 1 + }, + "/config819086852": { + "count": 6, + "totalMs": 2, + "maxMs": 1 + }, + "/interface282644100": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?limit&sort": { + "count": 1, + "totalMs": 4, + "maxMs": 4 + }, + "/api/market/*?days&limit&q": { + "count": 10, + "totalMs": 36, + "maxMs": 7 + }, + "/playercount": { + "count": 50, + "totalMs": 2, + "maxMs": 1 + }, + "/api/market/*?from&interval&to": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 25, + "totalMs": 2, + "maxMs": 1 + }, + "/img/stoneback.gif": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?limit&offset&q": { + "count": 1, + "totalMs": 3, + "maxMs": 3 + }, + "/bot?bot&password": { + "count": 13, + "totalMs": 27, + "maxMs": 8 + }, + "/bot/client.js?v": { + "count": 12, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 12, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 12, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon-disconnected.ico": { + "count": 23, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/ondemandworker.js": { + "count": 13, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway": { + "count": 16, + "totalMs": 2, + "maxMs": 1 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores?category&profile": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T05:35:01.638Z", + "requestMs": 191, + "tick": 580, + "tickRate": 300, + "players": 881, + "pendingLogins": 0, + "npcs": 8143, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 92.8, + "world": 3.4, + "clientIn": 4.6, + "npc": 12.3, + "player": 16.4, + "logout": 0.2, + "login": 8.6, + "zone": 0.4, + "clientOut": 28.7, + "cleanup": 2.8, + "bandwidthIn": 876.7, + "bandwidthOut": 36790.9, + "interval": 300 + }, + "peak": { + "cycle": 199, + "world": 22, + "clientIn": 14, + "npc": 52, + "player": 42, + "logout": 20, + "login": 63, + "zone": 3, + "clientOut": 63, + "cleanup": 8, + "bandwidthIn": 1312, + "bandwidthOut": 56762, + "interval": 686 + }, + "last": { + "cycle": 91, + "world": 3, + "clientIn": 6, + "npc": 11, + "player": 20, + "logout": 0, + "login": 3, + "zone": 1, + "clientOut": 31, + "cleanup": 4, + "bandwidthIn": 830, + "bandwidthOut": 41700 + }, + "heapMB": 454, + "rssMB": 1073, + "web": { + "current": { + "start": 1791696899404, + "end": 1791696901638, + "routes": { + "/": { + "count": 14, + "totalMs": 18, + "maxMs": 3 + }, + "/api/version": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/playerpositions": { + "count": 12, + "totalMs": 12, + "maxMs": 2 + }, + "/crc": { + "count": 5, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/player/*": { + "count": 16, + "totalMs": 9, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/client.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/status/:bot": { + "count": 1, + "totalMs": 2, + "maxMs": 2 + } + } + }, + "last": { + "start": 1791696839403, + "end": 1791696899404, + "routes": { + "/": { + "count": 536, + "totalMs": 706, + "maxMs": 13 + }, + "/api/market/*?days": { + "count": 90, + "totalMs": 22, + "maxMs": 2 + }, + "/playerpositions": { + "count": 317, + "totalMs": 281, + "maxMs": 4 + }, + "/crc": { + "count": 177, + "totalMs": 7, + "maxMs": 1 + }, + "/api/version": { + "count": 70, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/player/*": { + "count": 480, + "totalMs": 918, + "maxMs": 394 + }, + "/bot/client.js": { + "count": 33, + "totalMs": 4, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 10, + "totalMs": 2, + "maxMs": 1 + }, + "/status/:bot": { + "count": 305, + "totalMs": 6679, + "maxMs": 91 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 19, + "maxMs": 19 + }, + "/worldfeed": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 9, + "totalMs": 1, + "maxMs": 1 + }, + "/playercount": { + "count": 46, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 18, + "totalMs": 4, + "maxMs": 1 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot?bot&password&stateEvery": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/title-564448443": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/config819086852": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/interface282644100": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/media-1710005394": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/textures915347346": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/wordenc455063218": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/sounds-1491954823": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/versionlist1333187759": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/ondemandworker.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?limit&q&sort": { + "count": 1, + "totalMs": 5, + "maxMs": 5 + }, + "/robots.txt": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T05:35:16.551Z", + "requestMs": 102, + "tick": 629, + "tickRate": 300, + "players": 901, + "pendingLogins": 0, + "npcs": 8143, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 95.1, + "world": 3.6, + "clientIn": 4.7, + "npc": 12.3, + "player": 17.2, + "logout": 0.2, + "login": 8.7, + "zone": 0.4, + "clientOut": 29.7, + "cleanup": 2.8, + "bandwidthIn": 880, + "bandwidthOut": 38781.7, + "interval": 300 + }, + "peak": { + "cycle": 199, + "world": 22, + "clientIn": 19, + "npc": 52, + "player": 42, + "logout": 20, + "login": 69, + "zone": 3, + "clientOut": 63, + "cleanup": 8, + "bandwidthIn": 1348, + "bandwidthOut": 57148, + "interval": 911 + }, + "last": { + "cycle": 89, + "world": 3, + "clientIn": 6, + "npc": 12, + "player": 16, + "logout": 0, + "login": 0, + "zone": 0, + "clientOut": 35, + "cleanup": 4, + "bandwidthIn": 1070, + "bandwidthOut": 44539 + }, + "heapMB": 446, + "rssMB": 1067, + "web": { + "current": { + "start": 1791696899404, + "end": 1791696916552, + "routes": { + "/": { + "count": 124, + "totalMs": 134, + "maxMs": 3 + }, + "/api/version": { + "count": 17, + "totalMs": 0, + "maxMs": 0 + }, + "/playerpositions": { + "count": 92, + "totalMs": 89, + "maxMs": 2 + }, + "/crc": { + "count": 55, + "totalMs": 3, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 136, + "totalMs": 734, + "maxMs": 434 + }, + "/favicon.ico": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/client.js": { + "count": 9, + "totalMs": 2, + "maxMs": 1 + }, + "/status/:bot": { + "count": 115, + "totalMs": 385, + "maxMs": 9 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 2, + "maxMs": 2 + }, + "/favicon-active.ico": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/playercount": { + "count": 14, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/config819086852": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791696839403, + "end": 1791696899404, + "routes": { + "/": { + "count": 536, + "totalMs": 706, + "maxMs": 13 + }, + "/api/market/*?days": { + "count": 90, + "totalMs": 22, + "maxMs": 2 + }, + "/playerpositions": { + "count": 317, + "totalMs": 281, + "maxMs": 4 + }, + "/crc": { + "count": 177, + "totalMs": 7, + "maxMs": 1 + }, + "/api/version": { + "count": 70, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/player/*": { + "count": 480, + "totalMs": 918, + "maxMs": 394 + }, + "/bot/client.js": { + "count": 33, + "totalMs": 4, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 10, + "totalMs": 2, + "maxMs": 1 + }, + "/status/:bot": { + "count": 305, + "totalMs": 6679, + "maxMs": 91 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 19, + "maxMs": 19 + }, + "/worldfeed": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 9, + "totalMs": 1, + "maxMs": 1 + }, + "/playercount": { + "count": 46, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 18, + "totalMs": 4, + "maxMs": 1 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot?bot&password&stateEvery": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/title-564448443": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/config819086852": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/interface282644100": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/media-1710005394": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/textures915347346": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/wordenc455063218": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/sounds-1491954823": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/versionlist1333187759": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/ondemandworker.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?limit&q&sort": { + "count": 1, + "totalMs": 5, + "maxMs": 5 + }, + "/robots.txt": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T05:35:31.631Z", + "requestMs": 181, + "tick": 680, + "tickRate": 300, + "players": 909, + "pendingLogins": 0, + "npcs": 8143, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 96.3, + "world": 3.6, + "clientIn": 4.9, + "npc": 12.2, + "player": 17.5, + "logout": 0.1, + "login": 8.8, + "zone": 0.4, + "clientOut": 30.5, + "cleanup": 2.9, + "bandwidthIn": 887.8, + "bandwidthOut": 40060.1, + "interval": 300 + }, + "peak": { + "cycle": 197, + "world": 22, + "clientIn": 25, + "npc": 52, + "player": 74, + "logout": 2, + "login": 69, + "zone": 3, + "clientOut": 63, + "cleanup": 8, + "bandwidthIn": 1348, + "bandwidthOut": 57148, + "interval": 911 + }, + "last": { + "cycle": 69, + "world": 3, + "clientIn": 3, + "npc": 11, + "player": 11, + "logout": 0, + "login": 0, + "zone": 0, + "clientOut": 28, + "cleanup": 2, + "bandwidthIn": 836, + "bandwidthOut": 38580 + }, + "heapMB": 442, + "rssMB": 1022, + "web": { + "current": { + "start": 1791696899404, + "end": 1791696931626, + "routes": { + "/": { + "count": 264, + "totalMs": 292, + "maxMs": 5 + }, + "/api/version": { + "count": 17, + "totalMs": 0, + "maxMs": 0 + }, + "/playerpositions": { + "count": 171, + "totalMs": 163, + "maxMs": 3 + }, + "/crc": { + "count": 81, + "totalMs": 3, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 256, + "totalMs": 819, + "maxMs": 434 + }, + "/favicon.ico": { + "count": 3, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js": { + "count": 17, + "totalMs": 3, + "maxMs": 1 + }, + "/status/:bot": { + "count": 123, + "totalMs": 425, + "maxMs": 30 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 2, + "maxMs": 2 + }, + "/favicon-active.ico": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/playercount": { + "count": 24, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/config819086852": { + "count": 8, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 8, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores/player/*?profile": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 12, + "totalMs": 7, + "maxMs": 2 + } + } + }, + "last": { + "start": 1791696839403, + "end": 1791696899404, + "routes": { + "/": { + "count": 536, + "totalMs": 706, + "maxMs": 13 + }, + "/api/market/*?days": { + "count": 90, + "totalMs": 22, + "maxMs": 2 + }, + "/playerpositions": { + "count": 317, + "totalMs": 281, + "maxMs": 4 + }, + "/crc": { + "count": 177, + "totalMs": 7, + "maxMs": 1 + }, + "/api/version": { + "count": 70, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/player/*": { + "count": 480, + "totalMs": 918, + "maxMs": 394 + }, + "/bot/client.js": { + "count": 33, + "totalMs": 4, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 10, + "totalMs": 2, + "maxMs": 1 + }, + "/status/:bot": { + "count": 305, + "totalMs": 6679, + "maxMs": 91 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 19, + "maxMs": 19 + }, + "/worldfeed": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 9, + "totalMs": 1, + "maxMs": 1 + }, + "/playercount": { + "count": 46, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 18, + "totalMs": 4, + "maxMs": 1 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot?bot&password&stateEvery": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/title-564448443": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/config819086852": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/interface282644100": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/media-1710005394": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/textures915347346": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/wordenc455063218": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/sounds-1491954823": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/versionlist1333187759": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/ondemandworker.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?limit&q&sort": { + "count": 1, + "totalMs": 5, + "maxMs": 5 + }, + "/robots.txt": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T05:35:46.636Z", + "requestMs": 184, + "tick": 730, + "tickRate": 300, + "players": 919, + "pendingLogins": 0, + "npcs": 8143, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 96.6, + "world": 3.7, + "clientIn": 4.8, + "npc": 12.1, + "player": 17.8, + "logout": 0.1, + "login": 7.5, + "zone": 0.4, + "clientOut": 31.3, + "cleanup": 3, + "bandwidthIn": 909.9, + "bandwidthOut": 41267.9, + "interval": 300 + }, + "peak": { + "cycle": 197, + "world": 22, + "clientIn": 25, + "npc": 26, + "player": 74, + "logout": 1, + "login": 69, + "zone": 3, + "clientOut": 63, + "cleanup": 8, + "bandwidthIn": 1731, + "bandwidthOut": 58559, + "interval": 911 + }, + "last": { + "cycle": 76, + "world": 3, + "clientIn": 4, + "npc": 12, + "player": 11, + "logout": 0, + "login": 3, + "zone": 0, + "clientOut": 29, + "cleanup": 3, + "bandwidthIn": 754, + "bandwidthOut": 50088 + }, + "heapMB": 457, + "rssMB": 1092, + "web": { + "current": { + "start": 1791696899404, + "end": 1791696946634, + "routes": { + "/": { + "count": 370, + "totalMs": 426, + "maxMs": 5 + }, + "/api/version": { + "count": 17, + "totalMs": 0, + "maxMs": 0 + }, + "/playerpositions": { + "count": 248, + "totalMs": 237, + "maxMs": 5 + }, + "/crc": { + "count": 108, + "totalMs": 3, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 376, + "totalMs": 902, + "maxMs": 434 + }, + "/favicon.ico": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js": { + "count": 25, + "totalMs": 4, + "maxMs": 1 + }, + "/status/:bot": { + "count": 189, + "totalMs": 1289, + "maxMs": 30 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 2, + "maxMs": 2 + }, + "/favicon-active.ico": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/playercount": { + "count": 39, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/config819086852": { + "count": 9, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 9, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores/player/*?profile": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 15, + "totalMs": 9, + "maxMs": 2 + }, + "/gateway": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791696839403, + "end": 1791696899404, + "routes": { + "/": { + "count": 536, + "totalMs": 706, + "maxMs": 13 + }, + "/api/market/*?days": { + "count": 90, + "totalMs": 22, + "maxMs": 2 + }, + "/playerpositions": { + "count": 317, + "totalMs": 281, + "maxMs": 4 + }, + "/crc": { + "count": 177, + "totalMs": 7, + "maxMs": 1 + }, + "/api/version": { + "count": 70, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/player/*": { + "count": 480, + "totalMs": 918, + "maxMs": 394 + }, + "/bot/client.js": { + "count": 33, + "totalMs": 4, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 10, + "totalMs": 2, + "maxMs": 1 + }, + "/status/:bot": { + "count": 305, + "totalMs": 6679, + "maxMs": 91 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 19, + "maxMs": 19 + }, + "/worldfeed": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 9, + "totalMs": 1, + "maxMs": 1 + }, + "/playercount": { + "count": 46, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 18, + "totalMs": 4, + "maxMs": 1 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot?bot&password&stateEvery": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/title-564448443": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/config819086852": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/interface282644100": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/media-1710005394": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/textures915347346": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/wordenc455063218": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/sounds-1491954823": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/versionlist1333187759": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/ondemandworker.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?limit&q&sort": { + "count": 1, + "totalMs": 5, + "maxMs": 5 + }, + "/robots.txt": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T05:36:01.632Z", + "requestMs": 178, + "tick": 780, + "tickRate": 300, + "players": 927, + "pendingLogins": 0, + "npcs": 8143, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 97.3, + "world": 3.7, + "clientIn": 5, + "npc": 12.1, + "player": 18, + "logout": 0.1, + "login": 7.2, + "zone": 0.4, + "clientOut": 32.1, + "cleanup": 3.1, + "bandwidthIn": 920.5, + "bandwidthOut": 42363.7, + "interval": 300 + }, + "peak": { + "cycle": 197, + "world": 22, + "clientIn": 25, + "npc": 35, + "player": 74, + "logout": 1, + "login": 69, + "zone": 3, + "clientOut": 63, + "cleanup": 8, + "bandwidthIn": 1731, + "bandwidthOut": 63076, + "interval": 911 + }, + "last": { + "cycle": 70, + "world": 3, + "clientIn": 4, + "npc": 11, + "player": 10, + "logout": 0, + "login": 0, + "zone": 0, + "clientOut": 28, + "cleanup": 3, + "bandwidthIn": 896, + "bandwidthOut": 35255 + }, + "heapMB": 452, + "rssMB": 1089, + "web": { + "current": { + "start": 1791696959405, + "end": 1791696961628, + "routes": { + "/": { + "count": 9, + "totalMs": 9, + "maxMs": 2 + }, + "/playerpositions": { + "count": 11, + "totalMs": 9, + "maxMs": 1 + }, + "/crc": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/client.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days": { + "count": 1, + "totalMs": 3, + "maxMs": 3 + }, + "/hiscores/player/*": { + "count": 16, + "totalMs": 10, + "maxMs": 1 + }, + "/status/:bot": { + "count": 1, + "totalMs": 4, + "maxMs": 4 + } + } + }, + "last": { + "start": 1791696899404, + "end": 1791696959405, + "routes": { + "/": { + "count": 460, + "totalMs": 532, + "maxMs": 5 + }, + "/api/version": { + "count": 17, + "totalMs": 0, + "maxMs": 0 + }, + "/playerpositions": { + "count": 317, + "totalMs": 306, + "maxMs": 12 + }, + "/crc": { + "count": 130, + "totalMs": 4, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 480, + "totalMs": 962, + "maxMs": 434 + }, + "/favicon.ico": { + "count": 7, + "totalMs": 2, + "maxMs": 1 + }, + "/bot/client.js": { + "count": 32, + "totalMs": 5, + "maxMs": 1 + }, + "/status/:bot": { + "count": 255, + "totalMs": 2380, + "maxMs": 99 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 2, + "maxMs": 2 + }, + "/favicon-active.ico": { + "count": 5, + "totalMs": 1, + "maxMs": 1 + }, + "/playercount": { + "count": 46, + "totalMs": 3, + "maxMs": 2 + }, + "/gateway/state/*?password": { + "count": 3, + "totalMs": 0, + "maxMs": 0 + }, + "/config819086852": { + "count": 9, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 9, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores/player/*?profile": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 3, + "totalMs": 2, + "maxMs": 1 + }, + "/hiscores": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 99, + "totalMs": 31, + "maxMs": 2 + }, + "/gateway": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days&limit&q": { + "count": 9, + "totalMs": 41, + "maxMs": 8 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T05:36:16.547Z", + "requestMs": 90, + "tick": 829, + "tickRate": 300, + "players": 931, + "pendingLogins": 0, + "npcs": 8143, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 99.2, + "world": 3.7, + "clientIn": 5.2, + "npc": 12.3, + "player": 18.2, + "logout": 0.1, + "login": 7, + "zone": 0.4, + "clientOut": 33.2, + "cleanup": 3.1, + "bandwidthIn": 959, + "bandwidthOut": 43293.2, + "interval": 300 + }, + "peak": { + "cycle": 232, + "world": 22, + "clientIn": 25, + "npc": 35, + "player": 74, + "logout": 1, + "login": 69, + "zone": 3, + "clientOut": 75, + "cleanup": 7, + "bandwidthIn": 3062, + "bandwidthOut": 64610, + "interval": 911 + }, + "last": { + "cycle": 113, + "world": 6, + "clientIn": 7, + "npc": 23, + "player": 22, + "logout": 0, + "login": 0, + "zone": 1, + "clientOut": 37, + "cleanup": 3, + "bandwidthIn": 999, + "bandwidthOut": 47736 + }, + "heapMB": 454, + "rssMB": 1080, + "web": { + "current": { + "start": 1791696959405, + "end": 1791696976548, + "routes": { + "/": { + "count": 110, + "totalMs": 134, + "maxMs": 3 + }, + "/playerpositions": { + "count": 89, + "totalMs": 80, + "maxMs": 4 + }, + "/crc": { + "count": 31, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days": { + "count": 1, + "totalMs": 3, + "maxMs": 3 + }, + "/hiscores/player/*": { + "count": 136, + "totalMs": 687, + "maxMs": 378 + }, + "/status/:bot": { + "count": 115, + "totalMs": 2362, + "maxMs": 131 + }, + "/config819086852": { + "count": 99, + "totalMs": 19, + "maxMs": 1 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 10, + "maxMs": 10 + }, + "/worldfeed": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/api/version": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 2, + "totalMs": 2, + "maxMs": 2 + }, + "/playercount": { + "count": 14, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791696899404, + "end": 1791696959405, + "routes": { + "/": { + "count": 460, + "totalMs": 532, + "maxMs": 5 + }, + "/api/version": { + "count": 17, + "totalMs": 0, + "maxMs": 0 + }, + "/playerpositions": { + "count": 317, + "totalMs": 306, + "maxMs": 12 + }, + "/crc": { + "count": 130, + "totalMs": 4, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 480, + "totalMs": 962, + "maxMs": 434 + }, + "/favicon.ico": { + "count": 7, + "totalMs": 2, + "maxMs": 1 + }, + "/bot/client.js": { + "count": 32, + "totalMs": 5, + "maxMs": 1 + }, + "/status/:bot": { + "count": 255, + "totalMs": 2380, + "maxMs": 99 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 2, + "maxMs": 2 + }, + "/favicon-active.ico": { + "count": 5, + "totalMs": 1, + "maxMs": 1 + }, + "/playercount": { + "count": 46, + "totalMs": 3, + "maxMs": 2 + }, + "/gateway/state/*?password": { + "count": 3, + "totalMs": 0, + "maxMs": 0 + }, + "/config819086852": { + "count": 9, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 9, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores/player/*?profile": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 3, + "totalMs": 2, + "maxMs": 1 + }, + "/hiscores": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 99, + "totalMs": 31, + "maxMs": 2 + }, + "/gateway": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days&limit&q": { + "count": 9, + "totalMs": 41, + "maxMs": 8 + } + } + } + } + } + ], + "afterDeployRollingWindow": { + "capturedAt": "2026-10-11T05:36:16.547Z", + "requestMs": 90, + "tick": 829, + "tickRate": 300, + "players": 931, + "pendingLogins": 0, + "npcs": 8143, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 99.2, + "world": 3.7, + "clientIn": 5.2, + "npc": 12.3, + "player": 18.2, + "logout": 0.1, + "login": 7, + "zone": 0.4, + "clientOut": 33.2, + "cleanup": 3.1, + "bandwidthIn": 959, + "bandwidthOut": 43293.2, + "interval": 300 + }, + "peak": { + "cycle": 232, + "world": 22, + "clientIn": 25, + "npc": 35, + "player": 74, + "logout": 1, + "login": 69, + "zone": 3, + "clientOut": 75, + "cleanup": 7, + "bandwidthIn": 3062, + "bandwidthOut": 64610, + "interval": 911 + }, + "last": { + "cycle": 113, + "world": 6, + "clientIn": 7, + "npc": 23, + "player": 22, + "logout": 0, + "login": 0, + "zone": 1, + "clientOut": 37, + "cleanup": 3, + "bandwidthIn": 999, + "bandwidthOut": 47736 + }, + "heapMB": 454, + "rssMB": 1080, + "web": { + "current": { + "start": 1791696959405, + "end": 1791696976548, + "routes": { + "/": { + "count": 110, + "totalMs": 134, + "maxMs": 3 + }, + "/playerpositions": { + "count": 89, + "totalMs": 80, + "maxMs": 4 + }, + "/crc": { + "count": 31, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days": { + "count": 1, + "totalMs": 3, + "maxMs": 3 + }, + "/hiscores/player/*": { + "count": 136, + "totalMs": 687, + "maxMs": 378 + }, + "/status/:bot": { + "count": 115, + "totalMs": 2362, + "maxMs": 131 + }, + "/config819086852": { + "count": 99, + "totalMs": 19, + "maxMs": 1 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 10, + "maxMs": 10 + }, + "/worldfeed": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/api/version": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 2, + "totalMs": 2, + "maxMs": 2 + }, + "/playercount": { + "count": 14, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791696899404, + "end": 1791696959405, + "routes": { + "/": { + "count": 460, + "totalMs": 532, + "maxMs": 5 + }, + "/api/version": { + "count": 17, + "totalMs": 0, + "maxMs": 0 + }, + "/playerpositions": { + "count": 317, + "totalMs": 306, + "maxMs": 12 + }, + "/crc": { + "count": 130, + "totalMs": 4, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 480, + "totalMs": 962, + "maxMs": 434 + }, + "/favicon.ico": { + "count": 7, + "totalMs": 2, + "maxMs": 1 + }, + "/bot/client.js": { + "count": 32, + "totalMs": 5, + "maxMs": 1 + }, + "/status/:bot": { + "count": 255, + "totalMs": 2380, + "maxMs": 99 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 2, + "maxMs": 2 + }, + "/favicon-active.ico": { + "count": 5, + "totalMs": 1, + "maxMs": 1 + }, + "/playercount": { + "count": 46, + "totalMs": 3, + "maxMs": 2 + }, + "/gateway/state/*?password": { + "count": 3, + "totalMs": 0, + "maxMs": 0 + }, + "/config819086852": { + "count": 9, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 9, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores/player/*?profile": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 3, + "totalMs": 2, + "maxMs": 1 + }, + "/hiscores": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 99, + "totalMs": 31, + "maxMs": 2 + }, + "/gateway": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days&limit&q": { + "count": 9, + "totalMs": 41, + "maxMs": 8 + } + } + } + } + }, + "postDeploySummary": { + "firstSampleAtUtc": "2026-10-11T05:33:31.657Z", + "lastSampleAtUtc": "2026-10-11T05:36:16.547Z", + "samplingDurationSeconds": 180, + "samples": 12, + "playersFirst": 682, + "playersLast": 931, + "lastWindowTicks": 300, + "lastAvgCycleMs": 99.2, + "lastAvgIntervalMs": 300, + "lastPeakCycleMs": 232, + "lastPeakIntervalMs": 911, + "lastOverBudgetWorkCycles": 0, + "lastPendingLogins": 0, + "largestObservedLoginPhaseMs": 69, + "largestObservedLogoutPhaseMs": 52 + } + } + }, + "followupChecks": [ + { + "capturedAtUtc": "2026-10-11T05:39:24.067274+00:00", + "durationSeconds": 90, + "note": "Latency samples completed before CPU profiling. Six overlapping rolling-window samples; do not sum overBudget across them. Load remains below pre-deployment 1333 players.", + "samples": [ + { + "capturedAt": "2026-10-11T05:37:12.774Z", + "requestMs": 111, + "tick": 1017, + "tickRate": 300, + "players": 931, + "pendingLogins": 0, + "npcs": 8142, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 99.7, + "world": 3.5, + "clientIn": 5.8, + "npc": 12.5, + "player": 18.8, + "logout": 0.5, + "login": 2.7, + "zone": 0.4, + "clientOut": 35.9, + "cleanup": 3.2, + "bandwidthIn": 1178.6, + "bandwidthOut": 44662.2, + "interval": 300 + }, + "peak": { + "cycle": 232, + "world": 26, + "clientIn": 31, + "npc": 35, + "player": 57, + "logout": 54, + "login": 63, + "zone": 2, + "clientOut": 88, + "cleanup": 7, + "bandwidthIn": 3062, + "bandwidthOut": 65335, + "interval": 827 + }, + "last": { + "cycle": 111, + "world": 4, + "clientIn": 10, + "npc": 18, + "player": 28, + "logout": 0, + "login": 0, + "zone": 0, + "clientOut": 36, + "cleanup": 3, + "bandwidthIn": 2242, + "bandwidthOut": 14897 + }, + "heapMB": 517, + "rssMB": 1194, + "web": { + "current": { + "start": 1791697019405, + "end": 1791697032772, + "routes": { + "/": { + "count": 77, + "totalMs": 95, + "maxMs": 3 + }, + "/hiscores/player/*": { + "count": 112, + "totalMs": 642, + "maxMs": 561 + }, + "/playerpositions": { + "count": 69, + "totalMs": 67, + "maxMs": 5 + }, + "/status/:bot": { + "count": 54, + "totalMs": 410, + "maxMs": 14 + }, + "/crc": { + "count": 15, + "totalMs": 0, + "maxMs": 0 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 15, + "maxMs": 15 + }, + "/worldfeed": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/playercount": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 1, + "totalMs": 2, + "maxMs": 2 + } + } + }, + "last": { + "start": 1791696959405, + "end": 1791697019405, + "routes": { + "/": { + "count": 384, + "totalMs": 451, + "maxMs": 8 + }, + "/playerpositions": { + "count": 294, + "totalMs": 255, + "maxMs": 4 + }, + "/crc": { + "count": 78, + "totalMs": 2, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 13, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days": { + "count": 4, + "totalMs": 8, + "maxMs": 3 + }, + "/hiscores/player/*": { + "count": 531, + "totalMs": 966, + "maxMs": 378 + }, + "/status/:bot": { + "count": 253, + "totalMs": 3242, + "maxMs": 155 + }, + "/config819086852": { + "count": 100, + "totalMs": 19, + "maxMs": 1 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 10, + "maxMs": 10 + }, + "/worldfeed": { + "count": 4, + "totalMs": 2, + "maxMs": 1 + }, + "/api/version": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 5, + "totalMs": 2, + "maxMs": 2 + }, + "/playercount": { + "count": 46, + "totalMs": 5, + "maxMs": 1 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores?category": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T05:37:27.778Z", + "requestMs": 114, + "tick": 1067, + "tickRate": 300, + "players": 931, + "pendingLogins": 0, + "npcs": 8143, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 99, + "world": 3.4, + "clientIn": 5.9, + "npc": 12.5, + "player": 18.6, + "logout": 0.5, + "login": 1.7, + "zone": 0.4, + "clientOut": 36.4, + "cleanup": 3.1, + "bandwidthIn": 1247.4, + "bandwidthOut": 45748.8, + "interval": 300 + }, + "peak": { + "cycle": 232, + "world": 26, + "clientIn": 31, + "npc": 28, + "player": 57, + "logout": 54, + "login": 63, + "zone": 2, + "clientOut": 88, + "cleanup": 7, + "bandwidthIn": 3062, + "bandwidthOut": 65385, + "interval": 827 + }, + "last": { + "cycle": 83, + "world": 8, + "clientIn": 5, + "npc": 10, + "player": 10, + "logout": 1, + "login": 0, + "zone": 0, + "clientOut": 34, + "cleanup": 2, + "bandwidthIn": 1321, + "bandwidthOut": 55084 + }, + "heapMB": 459, + "rssMB": 1096, + "web": { + "current": { + "start": 1791697019405, + "end": 1791697047778, + "routes": { + "/": { + "count": 206, + "totalMs": 263, + "maxMs": 12 + }, + "/hiscores/player/*": { + "count": 240, + "totalMs": 762, + "maxMs": 561 + }, + "/playerpositions": { + "count": 146, + "totalMs": 141, + "maxMs": 5 + }, + "/status/:bot": { + "count": 122, + "totalMs": 1096, + "maxMs": 19 + }, + "/crc": { + "count": 39, + "totalMs": 0, + "maxMs": 0 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 15, + "maxMs": 15 + }, + "/worldfeed": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 3, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/playercount": { + "count": 20, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 14, + "totalMs": 5, + "maxMs": 3 + }, + "/favicon-active.ico": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/player/*?profile": { + "count": 5, + "totalMs": 3, + "maxMs": 1 + }, + "/api/market/*?limit&sort": { + "count": 1, + "totalMs": 5, + "maxMs": 5 + } + } + }, + "last": { + "start": 1791696959405, + "end": 1791697019405, + "routes": { + "/": { + "count": 384, + "totalMs": 451, + "maxMs": 8 + }, + "/playerpositions": { + "count": 294, + "totalMs": 255, + "maxMs": 4 + }, + "/crc": { + "count": 78, + "totalMs": 2, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 13, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days": { + "count": 4, + "totalMs": 8, + "maxMs": 3 + }, + "/hiscores/player/*": { + "count": 531, + "totalMs": 966, + "maxMs": 378 + }, + "/status/:bot": { + "count": 253, + "totalMs": 3242, + "maxMs": 155 + }, + "/config819086852": { + "count": 100, + "totalMs": 19, + "maxMs": 1 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 10, + "maxMs": 10 + }, + "/worldfeed": { + "count": 4, + "totalMs": 2, + "maxMs": 1 + }, + "/api/version": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 5, + "totalMs": 2, + "maxMs": 2 + }, + "/playercount": { + "count": 46, + "totalMs": 5, + "maxMs": 1 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores?category": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T05:37:42.762Z", + "requestMs": 97, + "tick": 1117, + "tickRate": 300, + "players": 935, + "pendingLogins": 0, + "npcs": 8143, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 99.5, + "world": 3.5, + "clientIn": 6, + "npc": 12.5, + "player": 18.9, + "logout": 0.5, + "login": 1.3, + "zone": 0.4, + "clientOut": 36.9, + "cleanup": 3.1, + "bandwidthIn": 1295.6, + "bandwidthOut": 45665.9, + "interval": 300 + }, + "peak": { + "cycle": 232, + "world": 26, + "clientIn": 31, + "npc": 34, + "player": 63, + "logout": 54, + "login": 72, + "zone": 2, + "clientOut": 88, + "cleanup": 6, + "bandwidthIn": 3062, + "bandwidthOut": 65385, + "interval": 827 + }, + "last": { + "cycle": 102, + "world": 4, + "clientIn": 5, + "npc": 11, + "player": 28, + "logout": 1, + "login": 0, + "zone": 0, + "clientOut": 35, + "cleanup": 4, + "bandwidthIn": 1265, + "bandwidthOut": 56052 + }, + "heapMB": 460, + "rssMB": 1073, + "web": { + "current": { + "start": 1791697019405, + "end": 1791697062760, + "routes": { + "/": { + "count": 281, + "totalMs": 351, + "maxMs": 12 + }, + "/hiscores/player/*": { + "count": 374, + "totalMs": 857, + "maxMs": 561 + }, + "/playerpositions": { + "count": 219, + "totalMs": 211, + "maxMs": 5 + }, + "/status/:bot": { + "count": 188, + "totalMs": 1681, + "maxMs": 19 + }, + "/crc": { + "count": 54, + "totalMs": 0, + "maxMs": 0 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 15, + "maxMs": 15 + }, + "/worldfeed": { + "count": 5, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 5, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/playercount": { + "count": 29, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 320, + "totalMs": 36, + "maxMs": 4 + }, + "/favicon-active.ico": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores/player/*?profile": { + "count": 6, + "totalMs": 4, + "maxMs": 1 + }, + "/api/market/*?limit&sort": { + "count": 1, + "totalMs": 5, + "maxMs": 5 + }, + "/api/version": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + } + } + }, + "last": { + "start": 1791696959405, + "end": 1791697019405, + "routes": { + "/": { + "count": 384, + "totalMs": 451, + "maxMs": 8 + }, + "/playerpositions": { + "count": 294, + "totalMs": 255, + "maxMs": 4 + }, + "/crc": { + "count": 78, + "totalMs": 2, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 13, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days": { + "count": 4, + "totalMs": 8, + "maxMs": 3 + }, + "/hiscores/player/*": { + "count": 531, + "totalMs": 966, + "maxMs": 378 + }, + "/status/:bot": { + "count": 253, + "totalMs": 3242, + "maxMs": 155 + }, + "/config819086852": { + "count": 100, + "totalMs": 19, + "maxMs": 1 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 10, + "maxMs": 10 + }, + "/worldfeed": { + "count": 4, + "totalMs": 2, + "maxMs": 1 + }, + "/api/version": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 5, + "totalMs": 2, + "maxMs": 2 + }, + "/playercount": { + "count": 46, + "totalMs": 5, + "maxMs": 1 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores?category": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T05:37:57.762Z", + "requestMs": 96, + "tick": 1167, + "tickRate": 300, + "players": 935, + "pendingLogins": 0, + "npcs": 8143, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 98.7, + "world": 3.6, + "clientIn": 5.9, + "npc": 12.6, + "player": 18.8, + "logout": 0.2, + "login": 0.7, + "zone": 0.4, + "clientOut": 37, + "cleanup": 3.1, + "bandwidthIn": 1328.4, + "bandwidthOut": 46349.6, + "interval": 300 + }, + "peak": { + "cycle": 218, + "world": 26, + "clientIn": 30, + "npc": 43, + "player": 63, + "logout": 1, + "login": 72, + "zone": 2, + "clientOut": 88, + "cleanup": 6, + "bandwidthIn": 2430, + "bandwidthOut": 65385, + "interval": 827 + }, + "last": { + "cycle": 75, + "world": 3, + "clientIn": 4, + "npc": 10, + "player": 11, + "logout": 0, + "login": 0, + "zone": 1, + "clientOut": 33, + "cleanup": 3, + "bandwidthIn": 1188, + "bandwidthOut": 60863 + }, + "heapMB": 455, + "rssMB": 1090, + "web": { + "current": { + "start": 1791697019405, + "end": 1791697077763, + "routes": { + "/": { + "count": 370, + "totalMs": 442, + "maxMs": 12 + }, + "/hiscores/player/*": { + "count": 494, + "totalMs": 934, + "maxMs": 561 + }, + "/playerpositions": { + "count": 297, + "totalMs": 301, + "maxMs": 15 + }, + "/status/:bot": { + "count": 254, + "totalMs": 4482, + "maxMs": 98 + }, + "/crc": { + "count": 76, + "totalMs": 0, + "maxMs": 0 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 15, + "maxMs": 15 + }, + "/worldfeed": { + "count": 6, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/playercount": { + "count": 45, + "totalMs": 3, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 322, + "totalMs": 36, + "maxMs": 4 + }, + "/favicon-active.ico": { + "count": 7, + "totalMs": 2, + "maxMs": 1 + }, + "/hiscores/player/*?profile": { + "count": 6, + "totalMs": 4, + "maxMs": 1 + }, + "/api/market/*?limit&sort": { + "count": 1, + "totalMs": 5, + "maxMs": 5 + }, + "/api/version": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/config819086852": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/interface282644100": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791696959405, + "end": 1791697019405, + "routes": { + "/": { + "count": 384, + "totalMs": 451, + "maxMs": 8 + }, + "/playerpositions": { + "count": 294, + "totalMs": 255, + "maxMs": 4 + }, + "/crc": { + "count": 78, + "totalMs": 2, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 13, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days": { + "count": 4, + "totalMs": 8, + "maxMs": 3 + }, + "/hiscores/player/*": { + "count": 531, + "totalMs": 966, + "maxMs": 378 + }, + "/status/:bot": { + "count": 253, + "totalMs": 3242, + "maxMs": 155 + }, + "/config819086852": { + "count": 100, + "totalMs": 19, + "maxMs": 1 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 10, + "maxMs": 10 + }, + "/worldfeed": { + "count": 4, + "totalMs": 2, + "maxMs": 1 + }, + "/api/version": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 5, + "totalMs": 2, + "maxMs": 2 + }, + "/playercount": { + "count": 46, + "totalMs": 5, + "maxMs": 1 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores?category": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T05:38:13.272Z", + "requestMs": 605, + "tick": 1217, + "tickRate": 300, + "players": 938, + "pendingLogins": 0, + "npcs": 8143, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 100.4, + "world": 3.6, + "clientIn": 6.1, + "npc": 12.9, + "player": 19, + "logout": 0.3, + "login": 0.7, + "zone": 0.4, + "clientOut": 37.8, + "cleanup": 3.1, + "bandwidthIn": 1373.7, + "bandwidthOut": 46430.8, + "interval": 301.6 + }, + "peak": { + "cycle": 218, + "world": 26, + "clientIn": 30, + "npc": 43, + "player": 63, + "logout": 28, + "login": 72, + "zone": 2, + "clientOut": 88, + "cleanup": 6, + "bandwidthIn": 2430, + "bandwidthOut": 65420, + "interval": 827 + }, + "last": { + "cycle": 121, + "world": 9, + "clientIn": 14, + "npc": 27, + "player": 11, + "logout": 0, + "login": 0, + "zone": 1, + "clientOut": 43, + "cleanup": 2, + "bandwidthIn": 1159, + "bandwidthOut": 57904 + }, + "heapMB": 490, + "rssMB": 1129, + "web": { + "current": { + "start": 1791697079405, + "end": 1791697093272, + "routes": { + "/": { + "count": 77, + "totalMs": 98, + "maxMs": 5 + }, + "/playerpositions": { + "count": 73, + "totalMs": 68, + "maxMs": 2 + }, + "/hiscores/player/*": { + "count": 112, + "totalMs": 679, + "maxMs": 597 + }, + "/status/:bot": { + "count": 55, + "totalMs": 491, + "maxMs": 21 + }, + "/favicon-active.ico": { + "count": 3, + "totalMs": 1, + "maxMs": 1 + }, + "/crc": { + "count": 21, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/playercount": { + "count": 5, + "totalMs": 1, + "maxMs": 1 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 10, + "maxMs": 10 + }, + "/gateway/state/*?password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/api/version": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days": { + "count": 2, + "totalMs": 3, + "maxMs": 3 + } + } + }, + "last": { + "start": 1791697019405, + "end": 1791697079405, + "routes": { + "/": { + "count": 379, + "totalMs": 452, + "maxMs": 12 + }, + "/hiscores/player/*": { + "count": 502, + "totalMs": 937, + "maxMs": 561 + }, + "/playerpositions": { + "count": 306, + "totalMs": 321, + "maxMs": 15 + }, + "/status/:bot": { + "count": 254, + "totalMs": 4482, + "maxMs": 98 + }, + "/crc": { + "count": 77, + "totalMs": 0, + "maxMs": 0 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 15, + "maxMs": 15 + }, + "/worldfeed": { + "count": 6, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/playercount": { + "count": 45, + "totalMs": 3, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 322, + "totalMs": 36, + "maxMs": 4 + }, + "/favicon-active.ico": { + "count": 7, + "totalMs": 2, + "maxMs": 1 + }, + "/hiscores/player/*?profile": { + "count": 6, + "totalMs": 4, + "maxMs": 1 + }, + "/api/market/*?limit&sort": { + "count": 1, + "totalMs": 5, + "maxMs": 5 + }, + "/api/version": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/config819086852": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/interface282644100": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T05:38:27.777Z", + "requestMs": 109, + "tick": 1267, + "tickRate": 300, + "players": 938, + "pendingLogins": 0, + "npcs": 8143, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 100.1, + "world": 3.6, + "clientIn": 6.2, + "npc": 12.9, + "player": 18.8, + "logout": 0.3, + "login": 0.6, + "zone": 0.4, + "clientOut": 37.9, + "cleanup": 3.1, + "bandwidthIn": 1396.4, + "bandwidthOut": 46330.2, + "interval": 300 + }, + "peak": { + "cycle": 234, + "world": 14, + "clientIn": 30, + "npc": 43, + "player": 63, + "logout": 28, + "login": 72, + "zone": 2, + "clientOut": 119, + "cleanup": 5, + "bandwidthIn": 2719, + "bandwidthOut": 65420, + "interval": 827 + }, + "last": { + "cycle": 81, + "world": 3, + "clientIn": 6, + "npc": 10, + "player": 12, + "logout": 0, + "login": 0, + "zone": 0, + "clientOut": 36, + "cleanup": 3, + "bandwidthIn": 1430, + "bandwidthOut": 57403 + }, + "heapMB": 461, + "rssMB": 1080, + "web": { + "current": { + "start": 1791697079405, + "end": 1791697107777, + "routes": { + "/": { + "count": 204, + "totalMs": 238, + "maxMs": 5 + }, + "/playerpositions": { + "count": 147, + "totalMs": 152, + "maxMs": 7 + }, + "/hiscores/player/*": { + "count": 232, + "totalMs": 795, + "maxMs": 597 + }, + "/status/:bot": { + "count": 169, + "totalMs": 7528, + "maxMs": 119 + }, + "/favicon-active.ico": { + "count": 8, + "totalMs": 1, + "maxMs": 1 + }, + "/crc": { + "count": 41, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 11, + "totalMs": 4, + "maxMs": 1 + }, + "/playercount": { + "count": 21, + "totalMs": 5, + "maxMs": 1 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 10, + "maxMs": 10 + }, + "/gateway/state/*?password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/api/version": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days": { + "count": 34, + "totalMs": 12, + "maxMs": 3 + }, + "/api/market/*?days&limit&q": { + "count": 1, + "totalMs": 4, + "maxMs": 4 + }, + "/api/market/*": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 27, + "maxMs": 27 + } + } + }, + "last": { + "start": 1791697019405, + "end": 1791697079405, + "routes": { + "/": { + "count": 379, + "totalMs": 452, + "maxMs": 12 + }, + "/hiscores/player/*": { + "count": 502, + "totalMs": 937, + "maxMs": 561 + }, + "/playerpositions": { + "count": 306, + "totalMs": 321, + "maxMs": 15 + }, + "/status/:bot": { + "count": 254, + "totalMs": 4482, + "maxMs": 98 + }, + "/crc": { + "count": 77, + "totalMs": 0, + "maxMs": 0 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 15, + "maxMs": 15 + }, + "/worldfeed": { + "count": 6, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/playercount": { + "count": 45, + "totalMs": 3, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 322, + "totalMs": 36, + "maxMs": 4 + }, + "/favicon-active.ico": { + "count": 7, + "totalMs": 2, + "maxMs": 1 + }, + "/hiscores/player/*?profile": { + "count": 6, + "totalMs": 4, + "maxMs": 1 + }, + "/api/market/*?limit&sort": { + "count": 1, + "totalMs": 5, + "maxMs": 5 + }, + "/api/version": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/config819086852": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/interface282644100": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + } + ], + "host": { + "at": "2026-10-11T05:37:36.044Z", + "sampleMs": 5001, + "processes": [ + { + "pid": "654", + "command": [ + "bun", + "run", + "src/app.ts", + "" + ], + "status": [ + "VmRSS:\t 1130784 kB", + "Threads:\t22" + ] + }, + { + "pid": "701", + "command": [ + "bun", + "run", + "gateway.ts", + "" + ], + "status": [ + "VmRSS:\t 74036 kB", + "Threads:\t8" + ] + } + ], + "threads": [ + { + "id": "654:654", + "ticks": 13516, + "comm": "bun", + "cpuPercent": 41.791641671665666 + }, + { + "id": "701:701", + "ticks": 6973, + "comm": "bun", + "cpuPercent": 36.99260147970406 + }, + { + "id": "654:703", + "ticks": 1072, + "comm": "mi-scavenger", + "cpuPercent": 3.1993601279744053 + }, + { + "id": "654:721", + "ticks": 261, + "comm": "Worker", + "cpuPercent": 1.799640071985603 + }, + { + "id": "654:702", + "ticks": 3603, + "comm": "Bun Pool 0", + "cpuPercent": 1.3997200559888023 + }, + { + "id": "654:704", + "ticks": 3606, + "comm": "Bun Pool 1", + "cpuPercent": 1.3997200559888023 + }, + { + "id": "701:706", + "ticks": 315, + "comm": "mi-scavenger", + "cpuPercent": 1.3997200559888023 + }, + { + "id": "701:712", + "ticks": 315, + "comm": "HeapHelper", + "cpuPercent": 1.3997200559888023 + }, + { + "id": "654:714", + "ticks": 314, + "comm": "HeapHelper", + "cpuPercent": 1.1997600479904018 + }, + { + "id": "654:708", + "ticks": 1082, + "comm": "JITWorker", + "cpuPercent": 0.9998000399920016 + }, + { + "id": "654:711", + "ticks": 344, + "comm": "JSCWarmUp", + "cpuPercent": 0.5998800239952009 + }, + { + "id": "654:719", + "ticks": 344, + "comm": "Worker", + "cpuPercent": 0.5998800239952009 + } + ], + "pressure": { + "cpu": "some avg10=10.05 avg60=8.80 avg300=7.64 total=46063220\nfull avg10=0.00 avg60=0.00 avg300=0.00 total=0\n", + "io": "some avg10=0.00 avg60=0.02 avg300=0.37 total=4409658\nfull avg10=0.00 avg60=0.01 avg300=0.27 total=3332948\n", + "memory": "some avg10=0.00 avg60=0.00 avg300=0.00 total=0\nfull avg10=0.00 avg60=0.00 avg300=0.00 total=0\n" + }, + "memory": [ + "MemAvailable: 2567584 kB", + "SwapTotal: 0 kB", + "SwapFree: 0 kB" + ], + "disk": "Filesystem Size Used Avail Use% Mounted on\n/dev/vdc 69G 57G 10G 85% /opt/server/data\n" + }, + "profile": "# profile 8000ms @ 1000us, 2269 samples (~28% of wall busy in JS), ticks 1317..1344, players 942\n\n# inclusive samples per frame (top 35)\n 848 37.4% cycle src/engine/World.ts:458\n 359 15.8% cycle src/engine/World.ts:425\n 340 15.0% send Unknown Executable\n 303 13.4% generatorResume FTL\n 291 12.8% next FTL\n 285 12.6% execute src/engine/script/ScriptRunner.ts:156\n 266 11.7% cycle src/engine/World.ts:414\n 262 11.5% runScript src/engine/entity/Player.ts:2235\n 261 11.5% updatePlayers src/engine/entity/NetworkPlayer.ts:288\n 261 11.5% processClientsOut src/engine/World.ts:1301\n 259 11.4% executeScript src/engine/entity/Player.ts:2262\n 252 11.1% sendNow src/server/ws/WSClientSocket.ts:98\n 250 11.0% processNpcs src/engine/World.ts:753\n 233 10.3% processClientsOut src/engine/World.ts:1305\n 231 10.2% processPlayers src/engine/World.ts:801\n 225 9.9% write src/engine/entity/Player.ts:2301\n 221 9.7% cycle src/engine/World.ts:461\n 179 7.9% tryInteract src/engine/entity/Player.ts:1226\n 174 7.7% updateZones src/engine/entity/NetworkPlayer.ts:314\n 153 6.7% endBatch src/server/ws/WSClientSocket.ts:86\n 153 6.7% processClientsOut src/engine/World.ts:1324\n 152 6.7% flush src/server/ws/WSClientSocket.ts:75\n 150 6.6% cycleWorldFeed src/web/worldfeed.ts:215\n 148 6.5% turn src/engine/entity/Npc.ts:181\n 144 6.3% writeInner src/engine/entity/NetworkPlayer.ts:226\n 143 6.3% processMovement src/engine/entity/PathingEntity.ts:146\n 133 5.9% forEachInRect src/web/worldfeed.ts:279\n 132 5.8% updateMovement src/engine/entity/Npc.ts:371\n 130 5.7% processMovementInteraction src/engine/entity/Npc.ts:601\n 128 5.6% wanderMode src/engine/entity/Npc.ts:725\n 123 5.4% cycle src/engine/World.ts:402\n 109 4.8% subarray Unknown Executable\n 108 4.8% updateNpcs src/engine/entity/NetworkPlayer.ts:292\n 108 4.8% processClientsOut src/engine/World.ts:1303\n 104 4.6% processInteraction src/engine/entity/Player.ts:1340\n\n# hottest leaf <- nearest source caller (top 35)\n 251 11.1% send Unknown Executable <- sendNow src/server/ws/WSClientSocket.ts:98\n 173 7.6% updateZones src/engine/entity/NetworkPlayer.ts:314 <- processClientsOut src/engine/World.ts:1305\n 49 2.2% send Unknown Executable <- send src/web/worldfeed.ts:589\n 43 1.9% execute src/engine/script/ScriptRunner.ts:156 <- runScript src/engine/entity/Player.ts:2235\n 40 1.8% getNearbyPlayersZones src/network/rsbuf/build.ts:156 <- writeNewPlayers src/network/rsbuf/info.ts:96\n 38 1.7% getNearbyNpcs src/network/rsbuf/build.ts:4294967295 <- writeNewNpcs src/network/rsbuf/info.ts:336\n 36 1.6% set Unknown Executable <- read src/server/ClientSocket.ts:54\n 33 1.5% subarray Unknown Executable <- pdata src/network/rsbuf/packet.ts:44\n 32 1.4% subarray Unknown Executable <- writeInner src/engine/entity/NetworkPlayer.ts:226\n 31 1.4% subarray Unknown Executable <- pdata src/io/Packet.ts:352\n 28 1.2% getRecordJson src/web/worldfeed.ts:369 <- visit src/web/worldfeed.ts:349\n 27 1.2% send Unknown Executable <- (anon) src/web/websocket.ts:131\n 25 1.1% arrayIteratorNextHelper FTL <- (anon) src/engine/entity/EntityList.ts:37\n 25 1.1% writeInner src/engine/entity/NetworkPlayer.ts:4294967295 <- write src/engine/entity/Player.ts:2301\n 24 1.1% getNearbyPlayersZones src/network/rsbuf/build.ts:4294967295 <- writeNewPlayers src/network/rsbuf/info.ts:96\n 23 1.0% takeStep src/engine/entity/PathingEntity.ts:4294967295 <- validateAndAdvanceStep src/engine/entity/PathingEntity.ts:221\n 23 1.0% generatorResume FTL <- processInfo src/engine/World.ts:1241\n 22 1.0% typedArrayViewLength Unknown Executable <- (anon) src/engine/entity/EntityList.ts:37\n 22 1.0% reorientEntity src/engine/entity/PathingEntity.ts:372 <- turn src/engine/entity/Npc.ts:186\n 21 0.9% stringify Unknown Executable <- handleRequest src/web/index.ts:136\n 21 0.9% processMovement src/engine/entity/PathingEntity.ts:146 <- updateMovement src/engine/entity/Npc.ts:371\n 20 0.9% generatorResume FTL <- processClientsIn src/engine/World.ts:690\n 20 0.9% all src/datastruct/LinkList.ts:98 <- processQueue src/engine/entity/Npc.ts:566\n 20 0.9% writePartialFollows src/engine/zone/Zone.ts:209 <- updateZones src/engine/entity/NetworkPlayer.ts:313\n 20 0.9% writePlayers src/network/rsbuf/info.ts:80 <- encode src/network/rsbuf/info.ts:37\n 20 0.9% getPlayerByUid src/engine/World.ts:1943 <- updateInvs src/engine/entity/NetworkPlayer.ts:360\n 19 0.8% writeNpcs src/network/rsbuf/info.ts:4294967295 <- encode src/network/rsbuf/info.ts:290\n 18 0.8% encode src/network/rsbuf/info.ts:4294967295 <- updatePlayers src/engine/entity/NetworkPlayer.ts:288\n 18 0.8% (anon) src/web/worldfeed.ts:309 <- forEachInRect src/web/worldfeed.ts:279\n 18 0.8% stringify Unknown Executable <- getRecordJson src/web/worldfeed.ts:370\n 16 0.7% processQueue src/engine/entity/Npc.ts:4294967295 <- turn src/engine/entity/Npc.ts:179\n 16 0.7% updateInvs src/engine/entity/NetworkPlayer.ts:375 <- processClientsOut src/engine/World.ts:1307\n 16 0.7% getRecordJson src/web/worldfeed.ts:365 <- visit src/web/worldfeed.ts:349\n 14 0.6% generatorResume FTL <- generator src/engine/script/ScriptIterators.ts:79\n 14 0.6% get buffer Unknown Executable <- Packet src/network/rsbuf/packet.ts:10\n\n\n\nSampling rate: 1000.000000 microseconds. Total samples: 2267\nTop functions as \n 340 'send#:4294967295'\n 176 'updateZones#CwAj3x:22'\n 142 'generatorResume#ARlJXG:4'\n 109 'subarray#:4294967295'\n 65 'getNearbyPlayersZones#AOaeSZ:20'\n 63 'execute#AmQfaA:16'\n 60 'set#:4294967295'\n 57 'getRecordJson#DjLa0f:24'\n 45 'all#DcFWZ2:12'\n 45 'stringify#:4294967295'\n 40 'getNearbyNpcs#EYP8sY:20'\n 31 'writeInner#DxC65p:22'\n\n\n\n\nSampling rate: 1000.000000 microseconds. Total samples: 2268\n\nTier breakdown:\n-----------------------------------\nLLInt: 0 (0.000000%)\nBaseline: 18 (0.793651%)\nDFG: 48 (2.116402%)\nFTL: 1538 (67.813051%)\njs builtin: 183 (8.068783%)\nIPInt: 0 (0.000000%)\nBBQ: 0 (0.000000%)\nOMG: 0 (0.000000%)\nWasm: 0 (0.000000%)\nHost: 5 (0.220459%)\nRegExp: 5 (0.220459%)\nC/C++: 0 (0.000000%)\nUnknown Executable: 654 (28.835979%)\n\n\nHottest bytecodes as \n 340 'send#:None:'\n 173 'updateZones#CwAj3x:FTL:bc#372'\n 138 'generatorResume#ARlJXG:FTL:bc#45'\n 109 'subarray#:None:'\n 60 'set#:None:'\n 48 'execute#AmQfaA:FTL:bc#553'\n 45 'stringify#:None:'\n 40 'getNearbyPlayersZones#AOaeSZ:FTL:bc#465'\n 38 'getNearbyNpcs#EYP8sY:FTL:'\n 28 'getRecordJson#DjLa0f:FTL:bc#107'\n 25 'writeInner#DxC65p:FTL:'\n 24 'getNearbyPlayersZones#AOaeSZ:FTL:'\n 23 'takeStep#CIhUez:FTL:'\n 22 'typedArrayViewLength#:None:'\n 22 'reorientEntity#DMIBkt:FTL:bc#34cp#2'\n 21 'processMovement#AwnDjQ:FTL:bc#218'\n 20 'writePartialFollows#A77gPn:FTL:bc#0'\n 20 'writePlayers#DTLB7g:FTL:bc#444'\n 19 'all#DcFWZ2:FTL:bc#23'\n 19 'writeNpcs#EWjLbv:FTL:'\n 18 '#D93fGT:FTL:bc#83'\n 18 'encode#AuVs8I:FTL:'\n 18 'getPlayerByUid#CNWOtP:FTL:bc#84'\n 16 'getRecordJson#DjLa0f:FTL:bc#86'\n 16 'arrayIteratorNextHelper#Cp8Z2u:FTL:bc#34'\n 16 'all#DcFWZ2:FTL:bc#0'\n 15 'processTimers#CI9cwI:FTL:'\n 15 'updateInvs#AcwN37:FTL:bc#477'\n 14 'get buffer#:None:'\n 13 'slice#:None:'\n 12 'getRecordJson#DjLa0f:FTL:bc#142'\n 12 '#ECW18T:FTL:bc#59'\n 12 'all#DcFWZ2:FTL:'\n 12 'processQueue#B1JWId:FTL:'\n 11 'montReduce#AHSAmH:FTL:bc#538'\n 11 'execute#AmQfaA:FTL:bc#459'\n 11 'resetPathingEntity#DbTGMv:FTL:'\n 11 'updateStats#Eocqa4:FTL:'\n 10 'clear#:None:'\n 10 'read#DJxWWe:FTL:bc#139'\n", + "assessment": "Healthy average cadence, all sampled game-work cycles below300ms; occasional827ms wall intervals remain. Synchronous leaderboard refreshes are a suspected jitter source, not causally proven by these aggregates. Client output is the largest steady phase (~38ms), with player/zone updates and socket sends leading fresh CPU profile.", + "nextSteps": [ + "Increase leaderboard cache lifetime from60s to5min if acceptable; move refresh queries to a read worker and serve previous complete snapshot during refresh.", + "Add randomized delay to fleet restart/relogin batches, retaining single-controller ownership.", + "Reduce spectator/dashboard update frequency where acceptable, then optimize repeated player/zone update work based on profile.", + "For higher scale, move durable checkpoint I/O off the tick thread while preserving atomic multi-player recovery boundaries; this needs stronger recovery validation." + ] + } + ], + "smallFollowup": { + "status": "Final image deployed and verified", + "atUtc": "2026-10-11T05:52:25.181266+00:00", + "lineBudget": { + "added": 266, + "removed": 76, + "totalChangedIncludingTests": 342 + }, + "image": "registry.fly.io/rs-sdk-demo:small-perf-20261011-v2", + "digest": "sha256:b23cd3ab99b5b5ee83fd06c422bbce1b09ab677f4c6bb515b5220c8b1bfe3918", + "changes": [ + "Five-minute leaderboard snapshots; dedicated read worker; stale snapshot during refresh/failure; bounded worker timeout/restart.", + "Remote lite session login jitter0-5s by default, adjustable via LITE_LOGIN_JITTER_MS or options; swarm retry jitter.", + "One-second shared player-position JSON; map poll750ms->1500ms, hidden-tab pause and nonoverlapping fetches; roster5->10ticks. Per-tick spectator events retained.", + "Zone membership cached by player zone/origin/plane; already-loaded zones skip processing without tracked changes." + ], + "validation": { + "repository": "386 pass,0fail; optional collision oracle skipped because endpoint unavailable to its harness", + "engineTypecheck": "passed", + "webclientTypecheck": "passed", + "productionRuntimeTests": "Final image:9engine tests pass; map bundles and lite test already passed in initial image", + "startupRegression": "Delayed worker ignores early requests; handshake version passes, deliberately unready version fails" + }, + "sourceHashes": { + "server/engine/src/web/pages/hiscores.ts": "0e427d9572a350878806aab16d8fc792f0d13eb381539c07347087e3ab2eb8de", + "server/engine/test/fixtures/ranked-hiscores.ts": "aa9849557b26a3bbdc66ec5c7170dde6929dfcc498ec06fd44521d80ef409558", + "server/engine/src/web/worldfeed.ts": "73edc4c9c4c9f7949bfecf857572e822bf578e9418e35fabb1560a63c2d2d806", + "server/engine/src/web/index.ts": "62c61ee73fe53f3815ec1dca62ca601dea3478c6b2eb085a24e70eb7003dfa3e", + "server/engine/src/engine/entity/BuildArea.ts": "c51c17b0e9757c41b804f612d5fa2ca915be3976eb00bd73f64b5f9a17605b7f", + "server/engine/src/engine/entity/NetworkPlayer.ts": "3da56b1fa44d09c8d8be0515b7101ba7eef09db2d9c81dccfa2a6e0bb5f9df5f", + "server/engine/test/fixtures/worldfeed.ts": "cdc5c26e8e482731239853c59243642539efe83e30c184248ce4ea41cdf56d2a", + "server/webclient/src/lite/session.ts": "d68c811f6498b97792a1b2eb85704dad417bb0ac61be6f353097e0b2fcedfc49", + "server/webclient/src/lite/swarm.ts": "c6f8577dd1f5d7f72c31ffeafc3586b9e13b96943bb42e164793de3b4b4c1faa", + "server/webclient/src/mapview/MapView.ts": "64fc4d500fb875c535bc70e731759d29195478560d09b0f2ecfdd27e18ba91e7", + "server/engine/src/web/pages/RankedHiscores.ts": "7fda815671e9b11d03ffabf49881c97753a06b1b6cce3cb3a3863cf823b6dc69", + "server/engine/src/web/pages/RankedHiscoresWorker.ts": "4c799fc972d0dd2d7e818351b274f6528fce5a25e94c2c0eabc76631a831b588", + "server/webclient/src/lite/LoginBackoff.ts": "f0a824636675aa0d24101603d02293b9849e201e2921e4fd87115e7e5ebb350e", + "server/webclient/src/lite/LoginBackoff.test.ts": "deb2765ad8212c931d8f3f82abd180194bbc9fd3b429ec306b344cf46b63a833", + "server/engine/test/hiscores-performance.test.ts": "5e5c9b42924a514ce0357a5d656d1d5e74d6b870d41e3c933f920b0fbd0d9e4b" + }, + "deploymentNotes": [ + "Production web hostname binding retained. Map bundle receives only this task polling edits; the pre-existing local viewport fix remains outside this deployment.", + "Goo shared session/swarm/helper sources installed with preserved mtimes and backups at /home/exedev/rs-sdk-staging/small-perf-20261011-0551. No client/controller restarts.", + "Jitter applies when updated lite clients next start; other fleets must use updated client source." + ], + "beforeTicks": { + "tick": 3714, + "tickRate": 300, + "players": 1140, + "pendingLogins": 0, + "npcs": 8143, + "zonesTracking": 0, + "window": 300, + "overBudget": 1, + "avg": { + "cycle": 129.9, + "world": 4.7, + "clientIn": 7.1, + "npc": 12.6, + "player": 22.3, + "logout": 7.5, + "login": 7.4, + "zone": 0.6, + "clientOut": 45.4, + "cleanup": 3.8, + "bandwidthIn": 1492.2, + "bandwidthOut": 38751.9, + "interval": 300.1 + }, + "peak": { + "cycle": 308, + "world": 24, + "clientIn": 50, + "npc": 34, + "player": 81, + "logout": 93, + "login": 74, + "zone": 34, + "clientOut": 131, + "cleanup": 25, + "bandwidthIn": 2783, + "bandwidthOut": 65506, + "interval": 705 + }, + "last": { + "cycle": 225, + "world": 5, + "clientIn": 7, + "npc": 15, + "player": 24, + "logout": 65, + "login": 43, + "zone": 1, + "clientOut": 43, + "cleanup": 5, + "bandwidthIn": 1339, + "bandwidthOut": 56863 + }, + "heapMB": 479, + "rssMB": 1180, + "web": { + "current": { + "start": 1791697800634, + "end": 1791697842032, + "routes": { + "/playerpositions": { + "count": 217, + "totalMs": 302, + "maxMs": 18 + }, + "/crc": { + "count": 77, + "totalMs": 1, + "maxMs": 1 + }, + "/": { + "count": 255, + "totalMs": 351, + "maxMs": 26 + }, + "/hiscores/player/*": { + "count": 336, + "totalMs": 809, + "maxMs": 391 + }, + "/favicon.ico": { + "count": 10, + "totalMs": 3, + "maxMs": 1 + }, + "/status/:bot": { + "count": 233, + "totalMs": 10002, + "maxMs": 237 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 28, + "maxMs": 28 + }, + "/worldfeed": { + "count": 8, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 9, + "totalMs": 1, + "maxMs": 1 + }, + "/playercount": { + "count": 28, + "totalMs": 2, + "maxMs": 1 + }, + "/api/version": { + "count": 18, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 1, + "totalMs": 4, + "maxMs": 4 + }, + "/config819086852": { + "count": 5, + "totalMs": 2, + "maxMs": 1 + }, + "/interface282644100": { + "count": 5, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791697740325, + "end": 1791697800634, + "routes": { + "/crc": { + "count": 113, + "totalMs": 3, + "maxMs": 1 + }, + "/api/version": { + "count": 32, + "totalMs": 3, + "maxMs": 1 + }, + "/playerpositions": { + "count": 314, + "totalMs": 354, + "maxMs": 12 + }, + "/": { + "count": 440, + "totalMs": 484, + "maxMs": 35 + }, + "/status/:bot": { + "count": 256, + "totalMs": 3768, + "maxMs": 24 + }, + "/hiscores/player/*": { + "count": 480, + "totalMs": 840, + "maxMs": 381 + }, + "/state/Jackpoo5?password": { + "count": 1, + "totalMs": 17, + "maxMs": 17 + }, + "/worldfeed": { + "count": 5, + "totalMs": 2, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 8, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 21, + "totalMs": 13, + "maxMs": 3 + }, + "/playercount": { + "count": 48, + "totalMs": 3, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 9, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/bank?profile": { + "count": 4, + "totalMs": 528, + "maxMs": 150 + }, + "/config819086852": { + "count": 7, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 7, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway": { + "count": 3, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + }, + "zoneMicrobenchmark": { + "players": 1000, + "iterations": 100, + "beforeMs": 65.96954099999999, + "afterMs": 5.889415999999983, + "description": "isolated stable-zone rebuild benchmark, not whole tick performance" + }, + "imageSourceHashes": { + "server/engine/src/web/pages/hiscores.ts": "0e427d9572a350878806aab16d8fc792f0d13eb381539c07347087e3ab2eb8de", + "server/engine/test/fixtures/ranked-hiscores.ts": "aa9849557b26a3bbdc66ec5c7170dde6929dfcc498ec06fd44521d80ef409558", + "server/engine/src/web/worldfeed.ts": "73edc4c9c4c9f7949bfecf857572e822bf578e9418e35fabb1560a63c2d2d806", + "server/engine/src/web/index.ts": "6dcd90abf4c7b142530a39f72ef61a700c46d3f16b91ec6a6d86d613af371733", + "server/engine/src/engine/entity/BuildArea.ts": "c51c17b0e9757c41b804f612d5fa2ca915be3976eb00bd73f64b5f9a17605b7f", + "server/engine/src/engine/entity/NetworkPlayer.ts": "3da56b1fa44d09c8d8be0515b7101ba7eef09db2d9c81dccfa2a6e0bb5f9df5f", + "server/engine/test/fixtures/worldfeed.ts": "cdc5c26e8e482731239853c59243642539efe83e30c184248ce4ea41cdf56d2a", + "server/webclient/src/lite/session.ts": "d68c811f6498b97792a1b2eb85704dad417bb0ac61be6f353097e0b2fcedfc49", + "server/webclient/src/lite/swarm.ts": "c6f8577dd1f5d7f72c31ffeafc3586b9e13b96943bb42e164793de3b4b4c1faa", + "server/webclient/src/mapview/MapView.ts": "0b0839f73050160a17a932fa61e11e658f7d316508c75041027ed8a4e5d3b613", + "server/engine/src/web/pages/RankedHiscores.ts": "7fda815671e9b11d03ffabf49881c97753a06b1b6cce3cb3a3863cf823b6dc69", + "server/engine/src/web/pages/RankedHiscoresWorker.ts": "4c799fc972d0dd2d7e818351b274f6528fce5a25e94c2c0eabc76631a831b588", + "server/webclient/src/lite/LoginBackoff.ts": "f0a824636675aa0d24101603d02293b9849e201e2921e4fd87115e7e5ebb350e", + "server/webclient/src/lite/LoginBackoff.test.ts": "deb2765ad8212c931d8f3f82abd180194bbc9fd3b429ec306b344cf46b63a833", + "server/engine/test/hiscores-performance.test.ts": "5e5c9b42924a514ce0357a5d656d1d5e74d6b870d41e3c933f920b0fbd0d9e4b" + }, + "fleetClientSourceDeployment": { + "backup": "/home/exedev/rs-sdk-staging/small-perf-20261011-0551", + "files": [ + "server/webclient/src/lite/session.ts", + "server/webclient/src/lite/swarm.ts", + "server/webclient/src/lite/LoginBackoff.ts" + ], + "test": "1 pass,0fail on fleet host", + "effect": "Used on next natural client start; no current process interrupted" + }, + "deployment": { + "startedAtUtc": "2026-10-11T05:56:45Z", + "machine": "82962dc77ee3e8", + "safeWindow": { + "at": "2026-10-11T05:56:45.614Z", + "unsafe": [], + "pending": [], + "released": false, + "lawStatus": "review", + "safe": true + }, + "authorization": "User requested all feasible small performance improvements; prior server deployment authorization retained", + "procedure": "Cordon, SIGTERM with 300s grace, update image using original full configuration, start, verify, uncordon. Controller and journals retained.", + "finalUpdate": { + "safeWindow": { + "at": "2026-10-11T06:12:49.578Z", + "unsafe": [], + "pending": [], + "released": false, + "lawStatus": "review", + "safe": true + }, + "coldStartLeaderboard": { + "status": 200, + "rank": "1082", + "ms": 2926 + }, + "liveSourceHashes": { + "engine/src/web/pages/hiscores.ts": "0e427d9572a350878806aab16d8fc792f0d13eb381539c07347087e3ab2eb8de", + "engine/src/web/worldfeed.ts": "73edc4c9c4c9f7949bfecf857572e822bf578e9418e35fabb1560a63c2d2d806", + "engine/src/web/index.ts": "6dcd90abf4c7b142530a39f72ef61a700c46d3f16b91ec6a6d86d613af371733", + "engine/src/engine/entity/BuildArea.ts": "c51c17b0e9757c41b804f612d5fa2ca915be3976eb00bd73f64b5f9a17605b7f", + "engine/src/engine/entity/NetworkPlayer.ts": "3da56b1fa44d09c8d8be0515b7101ba7eef09db2d9c81dccfa2a6e0bb5f9df5f", + "webclient/src/lite/session.ts": "d68c811f6498b97792a1b2eb85704dad417bb0ac61be6f353097e0b2fcedfc49", + "webclient/src/lite/swarm.ts": "c6f8577dd1f5d7f72c31ffeafc3586b9e13b96943bb42e164793de3b4b4c1faa", + "webclient/src/mapview/MapView.ts": "0b0839f73050160a17a932fa61e11e658f7d316508c75041027ed8a4e5d3b613", + "engine/src/web/pages/RankedHiscores.ts": "7fda815671e9b11d03ffabf49881c97753a06b1b6cce3cb3a3863cf823b6dc69", + "engine/src/web/pages/RankedHiscoresWorker.ts": "4c799fc972d0dd2d7e818351b274f6528fce5a25e94c2c0eabc76631a831b588", + "webclient/src/lite/LoginBackoff.ts": "f0a824636675aa0d24101603d02293b9849e201e2921e4fd87115e7e5ebb350e" + }, + "machineState": "started", + "cordoned": false, + "configurationChangedKeys": [ + "image" + ], + "publicLeaderboardStatus": 200, + "publicLeaderboardSeconds": 0.178 + } + }, + "startupFollowup": { + "image": "registry.fly.io/rs-sdk-demo:small-perf-20261011-v2", + "digest": "sha256:b23cd3ab99b5b5ee83fd06c422bbce1b09ab677f4c6bb515b5220c8b1bfe3918", + "observed": "First cold leaderboard request timed out after15s. Subsequent list/player requests200; player overall rank1082.", + "change": "Queue requests until worker explicitly reports handler ready; allow30s total work deadline and60s HTTP timeout for leaderboard cold loads.", + "causeQualification": "Early-message startup race is a suspected cause, not established by the live aggregate metrics; explicit handshake removes that race." + }, + "liveDatabaseProbe": { + "all23CategoriesMs": 1102, + "overallRows": 169997, + "note": "Read-only separate worker probe; not a game-thread latency measurement" + }, + "firstDeploymentSamples": [ + { + "capturedAt": "2026-10-11T05:58:19.795Z", + "requestMs": 143, + "tick": 75, + "tickRate": 300, + "players": 20, + "pendingLogins": 0, + "npcs": 8142, + "zonesTracking": 0, + "window": 75, + "overBudget": 0, + "avg": { + "cycle": 32.8, + "world": 1.4, + "clientIn": 0.3, + "npc": 16.5, + "player": 1.1, + "logout": 0, + "login": 2.3, + "zone": 0.2, + "clientOut": 1.8, + "cleanup": 3, + "bandwidthIn": 6, + "bandwidthOut": 229.3, + "interval": 328.1 + }, + "peak": { + "cycle": 206, + "world": 22, + "clientIn": 5, + "npc": 96, + "player": 8, + "logout": 1, + "login": 52, + "zone": 5, + "clientOut": 25, + "cleanup": 24, + "bandwidthIn": 76, + "bandwidthOut": 2222, + "interval": 1677 + }, + "last": { + "cycle": 55, + "world": 1, + "clientIn": 1, + "npc": 18, + "player": 6, + "logout": 0, + "login": 12, + "zone": 0, + "clientOut": 2, + "cleanup": 2, + "bandwidthIn": 13, + "bandwidthOut": 1038 + }, + "heapMB": 320, + "rssMB": 724, + "web": { + "current": { + "start": 1791698272859, + "end": 1791698299826, + "routes": { + "/": { + "count": 656, + "totalMs": 1577, + "maxMs": 31 + }, + "/crc": { + "count": 170, + "totalMs": 12, + "maxMs": 5 + }, + "/playercount": { + "count": 52, + "totalMs": 1, + "maxMs": 1 + }, + "/playerpositions": { + "count": 401, + "totalMs": 30, + "maxMs": 8 + }, + "/gateway": { + "count": 70, + "totalMs": 5, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 11, + "totalMs": 9, + "maxMs": 5 + }, + "/api/version": { + "count": 137, + "totalMs": 13, + "maxMs": 5 + }, + "/worldfeed": { + "count": 7, + "totalMs": 6, + "maxMs": 5 + }, + "/market": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 17, + "totalMs": 6, + "maxMs": 5 + }, + "/api/market/*?days": { + "count": 402, + "totalMs": 162, + "maxMs": 39 + }, + "/img/background2.jpg": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 102, + "maxMs": 102 + }, + "/api/market/*?limit&offset&q": { + "count": 2, + "totalMs": 34, + "maxMs": 19 + }, + "/status/:bot": { + "count": 90, + "totalMs": 3476, + "maxMs": 1176 + }, + "/state/jackthief?password": { + "count": 3, + "totalMs": 2880, + "maxMs": 2417 + }, + "/gateway/state/*?password": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": null + } + }, + { + "capturedAt": "2026-10-11T05:58:34.787Z", + "requestMs": 133, + "tick": 125, + "tickRate": 300, + "players": 21, + "pendingLogins": 0, + "npcs": 8142, + "zonesTracking": 0, + "window": 125, + "overBudget": 0, + "avg": { + "cycle": 45.4, + "world": 2, + "clientIn": 0.5, + "npc": 21, + "player": 2, + "logout": 0.1, + "login": 1.4, + "zone": 0.2, + "clientOut": 2.6, + "cleanup": 3.4, + "bandwidthIn": 16.9, + "bandwidthOut": 343.1, + "interval": 316.8 + }, + "peak": { + "cycle": 206, + "world": 35, + "clientIn": 7, + "npc": 96, + "player": 8, + "logout": 4, + "login": 52, + "zone": 5, + "clientOut": 25, + "cleanup": 24, + "bandwidthIn": 81, + "bandwidthOut": 2222, + "interval": 1677 + }, + "last": { + "cycle": 50, + "world": 2, + "clientIn": 0, + "npc": 22, + "player": 2, + "logout": 0, + "login": 0, + "zone": 0, + "clientOut": 6, + "cleanup": 1, + "bandwidthIn": 20, + "bandwidthOut": 820 + }, + "heapMB": 342, + "rssMB": 809, + "web": { + "current": { + "start": 1791698272859, + "end": 1791698314818, + "routes": { + "/": { + "count": 961, + "totalMs": 2326, + "maxMs": 44 + }, + "/crc": { + "count": 218, + "totalMs": 14, + "maxMs": 5 + }, + "/playercount": { + "count": 61, + "totalMs": 1, + "maxMs": 1 + }, + "/playerpositions": { + "count": 503, + "totalMs": 47, + "maxMs": 8 + }, + "/gateway": { + "count": 81, + "totalMs": 12, + "maxMs": 2 + }, + "/favicon.ico": { + "count": 11, + "totalMs": 9, + "maxMs": 5 + }, + "/api/version": { + "count": 299, + "totalMs": 28, + "maxMs": 5 + }, + "/worldfeed": { + "count": 16, + "totalMs": 6, + "maxMs": 5 + }, + "/market": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 19, + "totalMs": 6, + "maxMs": 5 + }, + "/api/market/*?days": { + "count": 467, + "totalMs": 177, + "maxMs": 39 + }, + "/img/background2.jpg": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 102, + "maxMs": 102 + }, + "/api/market/*?limit&offset&q": { + "count": 2, + "totalMs": 34, + "maxMs": 19 + }, + "/status/:bot": { + "count": 178, + "totalMs": 4311, + "maxMs": 1176 + }, + "/state/jackthief?password": { + "count": 6, + "totalMs": 2884, + "maxMs": 2417 + }, + "/gateway/state/*?password": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/player/*": { + "count": 38, + "totalMs": 183237, + "maxMs": 15023 + }, + "/hiscores?category&profile": { + "count": 2, + "totalMs": 15848, + "maxMs": 14732 + }, + "/hiscores/player/*?profile": { + "count": 3, + "totalMs": 20820, + "maxMs": 14481 + }, + "/config819086852": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot?bot&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/client.js?v": { + "count": 1, + "totalMs": 2, + "maxMs": 2 + }, + "/bot/tinymidipcm.wasm": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/ondemandworker.js": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + } + } + }, + "last": null + } + }, + { + "capturedAt": "2026-10-11T05:58:49.809Z", + "requestMs": 154, + "tick": 175, + "tickRate": 300, + "players": 391, + "pendingLogins": 32, + "npcs": 8142, + "zonesTracking": 0, + "window": 175, + "overBudget": 0, + "avg": { + "cycle": 54.7, + "world": 2.1, + "clientIn": 0.7, + "npc": 19.3, + "player": 3.5, + "logout": 0.1, + "login": 7.6, + "zone": 0.3, + "clientOut": 4.9, + "cleanup": 3.2, + "bandwidthIn": 67.8, + "bandwidthOut": 5012, + "interval": 312 + }, + "peak": { + "cycle": 206, + "world": 35, + "clientIn": 7, + "npc": 96, + "player": 19, + "logout": 4, + "login": 56, + "zone": 5, + "clientOut": 28, + "cleanup": 24, + "bandwidthIn": 672, + "bandwidthOut": 45882, + "interval": 1677 + }, + "last": { + "cycle": 70, + "world": 2, + "clientIn": 3, + "npc": 10, + "player": 8, + "logout": 0, + "login": 16, + "zone": 0, + "clientOut": 15, + "cleanup": 1, + "bandwidthIn": 535, + "bandwidthOut": 45882 + }, + "heapMB": 384, + "rssMB": 899, + "web": { + "current": { + "start": 1791698272859, + "end": 1791698329840, + "routes": { + "/": { + "count": 1424, + "totalMs": 3087, + "maxMs": 44 + }, + "/crc": { + "count": 263, + "totalMs": 15, + "maxMs": 5 + }, + "/playercount": { + "count": 76, + "totalMs": 1, + "maxMs": 1 + }, + "/playerpositions": { + "count": 581, + "totalMs": 55, + "maxMs": 8 + }, + "/gateway": { + "count": 82, + "totalMs": 12, + "maxMs": 2 + }, + "/favicon.ico": { + "count": 14, + "totalMs": 11, + "maxMs": 5 + }, + "/api/version": { + "count": 494, + "totalMs": 40, + "maxMs": 5 + }, + "/worldfeed": { + "count": 22, + "totalMs": 7, + "maxMs": 5 + }, + "/market": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 24, + "totalMs": 8, + "maxMs": 5 + }, + "/api/market/*?days": { + "count": 548, + "totalMs": 189, + "maxMs": 39 + }, + "/img/background2.jpg": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 4, + "totalMs": 2, + "maxMs": 1 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 102, + "maxMs": 102 + }, + "/api/market/*?limit&offset&q": { + "count": 2, + "totalMs": 34, + "maxMs": 19 + }, + "/status/:bot": { + "count": 233, + "totalMs": 4596, + "maxMs": 1176 + }, + "/state/jackthief?password": { + "count": 7, + "totalMs": 2903, + "maxMs": 2417 + }, + "/gateway/state/*?password": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/player/*": { + "count": 102, + "totalMs": 377151, + "maxMs": 15023 + }, + "/hiscores?category&profile": { + "count": 2, + "totalMs": 15848, + "maxMs": 14732 + }, + "/hiscores/player/*?profile": { + "count": 15, + "totalMs": 58534, + "maxMs": 14860 + }, + "/config819086852": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot?bot&password": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 2, + "totalMs": 2, + "maxMs": 2 + }, + "/bot/tinymidipcm.wasm": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/ondemandworker.js": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?limit&sort": { + "count": 1, + "totalMs": 13, + "maxMs": 13 + } + } + }, + "last": null + } + }, + { + "capturedAt": "2026-10-11T05:59:04.803Z", + "requestMs": 146, + "tick": 225, + "tickRate": 300, + "players": 591, + "pendingLogins": 0, + "npcs": 8142, + "zonesTracking": 0, + "window": 225, + "overBudget": 0, + "avg": { + "cycle": 60.1, + "world": 2.3, + "clientIn": 1.4, + "npc": 17.8, + "player": 5.8, + "logout": 0.1, + "login": 8, + "zone": 0.2, + "clientOut": 8.3, + "cleanup": 3, + "bandwidthIn": 237.1, + "bandwidthOut": 11815.7, + "interval": 309.4 + }, + "peak": { + "cycle": 206, + "world": 35, + "clientIn": 11, + "npc": 96, + "player": 32, + "logout": 4, + "login": 56, + "zone": 5, + "clientOut": 37, + "cleanup": 24, + "bandwidthIn": 1382, + "bandwidthOut": 55377, + "interval": 1677 + }, + "last": { + "cycle": 65, + "world": 3, + "clientIn": 4, + "npc": 12, + "player": 9, + "logout": 0, + "login": 3, + "zone": 1, + "clientOut": 20, + "cleanup": 1, + "bandwidthIn": 732, + "bandwidthOut": 37204 + }, + "heapMB": 395, + "rssMB": 898, + "web": { + "current": { + "start": 1791698332880, + "end": 1791698344833, + "routes": { + "/api/version": { + "count": 78, + "totalMs": 4, + "maxMs": 1 + }, + "/": { + "count": 192, + "totalMs": 277, + "maxMs": 19 + }, + "/hiscores/player/*?profile": { + "count": 9, + "totalMs": 9, + "maxMs": 4 + }, + "/crc": { + "count": 22, + "totalMs": 1, + "maxMs": 1 + }, + "/status/:bot": { + "count": 114, + "totalMs": 598, + "maxMs": 17 + }, + "/hiscores/player/*": { + "count": 96, + "totalMs": 94, + "maxMs": 5 + }, + "/playerpositions": { + "count": 66, + "totalMs": 10, + "maxMs": 1 + }, + "/playercount": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days": { + "count": 148, + "totalMs": 26, + "maxMs": 3 + }, + "/api/market/*?days&limit&q": { + "count": 8, + "totalMs": 44, + "maxMs": 13 + }, + "/favicon.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/state/jackthief?password": { + "count": 1, + "totalMs": 17, + "maxMs": 17 + } + } + }, + "last": { + "start": 1791698272859, + "end": 1791698332880, + "routes": { + "/": { + "count": 1474, + "totalMs": 3148, + "maxMs": 44 + }, + "/crc": { + "count": 267, + "totalMs": 15, + "maxMs": 5 + }, + "/playercount": { + "count": 76, + "totalMs": 1, + "maxMs": 1 + }, + "/playerpositions": { + "count": 597, + "totalMs": 57, + "maxMs": 8 + }, + "/gateway": { + "count": 83, + "totalMs": 12, + "maxMs": 2 + }, + "/favicon.ico": { + "count": 15, + "totalMs": 11, + "maxMs": 5 + }, + "/api/version": { + "count": 520, + "totalMs": 41, + "maxMs": 5 + }, + "/worldfeed": { + "count": 22, + "totalMs": 7, + "maxMs": 5 + }, + "/market": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 24, + "totalMs": 8, + "maxMs": 5 + }, + "/api/market/*?days": { + "count": 551, + "totalMs": 209, + "maxMs": 39 + }, + "/img/background2.jpg": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 4, + "totalMs": 2, + "maxMs": 1 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 102, + "maxMs": 102 + }, + "/api/market/*?limit&offset&q": { + "count": 2, + "totalMs": 34, + "maxMs": 19 + }, + "/status/:bot": { + "count": 234, + "totalMs": 4598, + "maxMs": 1176 + }, + "/state/jackthief?password": { + "count": 8, + "totalMs": 2904, + "maxMs": 2417 + }, + "/gateway/state/*?password": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/player/*": { + "count": 126, + "totalMs": 377174, + "maxMs": 15023 + }, + "/hiscores?category&profile": { + "count": 2, + "totalMs": 15848, + "maxMs": 14732 + }, + "/hiscores/player/*?profile": { + "count": 17, + "totalMs": 58539, + "maxMs": 14860 + }, + "/config819086852": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot?bot&password": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 2, + "totalMs": 2, + "maxMs": 2 + }, + "/bot/tinymidipcm.wasm": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/ondemandworker.js": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?limit&sort": { + "count": 1, + "totalMs": 13, + "maxMs": 13 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T05:59:19.812Z", + "requestMs": 153, + "tick": 275, + "tickRate": 300, + "players": 639, + "pendingLogins": 0, + "npcs": 8142, + "zonesTracking": 0, + "window": 275, + "overBudget": 0, + "avg": { + "cycle": 64.1, + "world": 2.4, + "clientIn": 1.9, + "npc": 16.8, + "player": 7.6, + "logout": 0.1, + "login": 8, + "zone": 0.3, + "clientOut": 10.7, + "cleanup": 2.9, + "bandwidthIn": 343.6, + "bandwidthOut": 15550.6, + "interval": 307.7 + }, + "peak": { + "cycle": 206, + "world": 35, + "clientIn": 11, + "npc": 96, + "player": 32, + "logout": 4, + "login": 79, + "zone": 5, + "clientOut": 38, + "cleanup": 24, + "bandwidthIn": 1382, + "bandwidthOut": 55377, + "interval": 1677 + }, + "last": { + "cycle": 77, + "world": 3, + "clientIn": 4, + "npc": 12, + "player": 20, + "logout": 1, + "login": 0, + "zone": 0, + "clientOut": 20, + "cleanup": 3, + "bandwidthIn": 914, + "bandwidthOut": 27824 + }, + "heapMB": 415, + "rssMB": 939, + "web": { + "current": { + "start": 1791698332880, + "end": 1791698359842, + "routes": { + "/api/version": { + "count": 86, + "totalMs": 5, + "maxMs": 1 + }, + "/": { + "count": 380, + "totalMs": 505, + "maxMs": 19 + }, + "/hiscores/player/*?profile": { + "count": 24, + "totalMs": 33, + "maxMs": 4 + }, + "/crc": { + "count": 68, + "totalMs": 3, + "maxMs": 1 + }, + "/status/:bot": { + "count": 229, + "totalMs": 1713, + "maxMs": 17 + }, + "/hiscores/player/*": { + "count": 216, + "totalMs": 196, + "maxMs": 10 + }, + "/playerpositions": { + "count": 145, + "totalMs": 24, + "maxMs": 2 + }, + "/playercount": { + "count": 17, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 3, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days": { + "count": 339, + "totalMs": 62, + "maxMs": 3 + }, + "/api/market/*?days&limit&q": { + "count": 8, + "totalMs": 44, + "maxMs": 13 + }, + "/favicon.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway": { + "count": 4, + "totalMs": 4, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/state/jackthief?password": { + "count": 3, + "totalMs": 25, + "maxMs": 17 + }, + "/hiscores?category&profile": { + "count": 3, + "totalMs": 3, + "maxMs": 1 + }, + "/config819086852": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 2, + "totalMs": 2, + "maxMs": 1 + } + } + }, + "last": { + "start": 1791698272859, + "end": 1791698332880, + "routes": { + "/": { + "count": 1474, + "totalMs": 3148, + "maxMs": 44 + }, + "/crc": { + "count": 267, + "totalMs": 15, + "maxMs": 5 + }, + "/playercount": { + "count": 76, + "totalMs": 1, + "maxMs": 1 + }, + "/playerpositions": { + "count": 597, + "totalMs": 57, + "maxMs": 8 + }, + "/gateway": { + "count": 83, + "totalMs": 12, + "maxMs": 2 + }, + "/favicon.ico": { + "count": 15, + "totalMs": 11, + "maxMs": 5 + }, + "/api/version": { + "count": 520, + "totalMs": 41, + "maxMs": 5 + }, + "/worldfeed": { + "count": 22, + "totalMs": 7, + "maxMs": 5 + }, + "/market": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 24, + "totalMs": 8, + "maxMs": 5 + }, + "/api/market/*?days": { + "count": 551, + "totalMs": 209, + "maxMs": 39 + }, + "/img/background2.jpg": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 4, + "totalMs": 2, + "maxMs": 1 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 102, + "maxMs": 102 + }, + "/api/market/*?limit&offset&q": { + "count": 2, + "totalMs": 34, + "maxMs": 19 + }, + "/status/:bot": { + "count": 234, + "totalMs": 4598, + "maxMs": 1176 + }, + "/state/jackthief?password": { + "count": 8, + "totalMs": 2904, + "maxMs": 2417 + }, + "/gateway/state/*?password": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/player/*": { + "count": 126, + "totalMs": 377174, + "maxMs": 15023 + }, + "/hiscores?category&profile": { + "count": 2, + "totalMs": 15848, + "maxMs": 14732 + }, + "/hiscores/player/*?profile": { + "count": 17, + "totalMs": 58539, + "maxMs": 14860 + }, + "/config819086852": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot?bot&password": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 2, + "totalMs": 2, + "maxMs": 2 + }, + "/bot/tinymidipcm.wasm": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/ondemandworker.js": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?limit&sort": { + "count": 1, + "totalMs": 13, + "maxMs": 13 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T05:59:34.807Z", + "requestMs": 146, + "tick": 325, + "tickRate": 300, + "players": 651, + "pendingLogins": 0, + "npcs": 8142, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 69.6, + "world": 2.6, + "clientIn": 2.4, + "npc": 15.9, + "player": 9.3, + "logout": 0.1, + "login": 8.3, + "zone": 0.3, + "clientOut": 13.5, + "cleanup": 2.8, + "bandwidthIn": 453.9, + "bandwidthOut": 19242.7, + "interval": 307 + }, + "peak": { + "cycle": 180, + "world": 35, + "clientIn": 11, + "npc": 52, + "player": 32, + "logout": 4, + "login": 79, + "zone": 5, + "clientOut": 38, + "cleanup": 14, + "bandwidthIn": 1382, + "bandwidthOut": 55377, + "interval": 1677 + }, + "last": { + "cycle": 71, + "world": 2, + "clientIn": 3, + "npc": 12, + "player": 16, + "logout": 1, + "login": 0, + "zone": 0, + "clientOut": 22, + "cleanup": 3, + "bandwidthIn": 938, + "bandwidthOut": 30888 + }, + "heapMB": 450, + "rssMB": 1030, + "web": { + "current": { + "start": 1791698332880, + "end": 1791698374837, + "routes": { + "/api/version": { + "count": 92, + "totalMs": 5, + "maxMs": 1 + }, + "/": { + "count": 472, + "totalMs": 632, + "maxMs": 19 + }, + "/hiscores/player/*?profile": { + "count": 31, + "totalMs": 43, + "maxMs": 4 + }, + "/crc": { + "count": 85, + "totalMs": 3, + "maxMs": 1 + }, + "/status/:bot": { + "count": 296, + "totalMs": 2172, + "maxMs": 17 + }, + "/hiscores/player/*": { + "count": 336, + "totalMs": 278, + "maxMs": 10 + }, + "/playerpositions": { + "count": 223, + "totalMs": 34, + "maxMs": 2 + }, + "/playercount": { + "count": 27, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 3, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days": { + "count": 339, + "totalMs": 62, + "maxMs": 3 + }, + "/api/market/*?days&limit&q": { + "count": 8, + "totalMs": 44, + "maxMs": 13 + }, + "/favicon.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway": { + "count": 4, + "totalMs": 4, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/state/jackthief?password": { + "count": 4, + "totalMs": 26, + "maxMs": 17 + }, + "/hiscores?category&profile": { + "count": 14, + "totalMs": 6, + "maxMs": 2 + }, + "/config819086852": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 4, + "totalMs": 2, + "maxMs": 1 + }, + "/worldfeed": { + "count": 3, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791698272859, + "end": 1791698332880, + "routes": { + "/": { + "count": 1474, + "totalMs": 3148, + "maxMs": 44 + }, + "/crc": { + "count": 267, + "totalMs": 15, + "maxMs": 5 + }, + "/playercount": { + "count": 76, + "totalMs": 1, + "maxMs": 1 + }, + "/playerpositions": { + "count": 597, + "totalMs": 57, + "maxMs": 8 + }, + "/gateway": { + "count": 83, + "totalMs": 12, + "maxMs": 2 + }, + "/favicon.ico": { + "count": 15, + "totalMs": 11, + "maxMs": 5 + }, + "/api/version": { + "count": 520, + "totalMs": 41, + "maxMs": 5 + }, + "/worldfeed": { + "count": 22, + "totalMs": 7, + "maxMs": 5 + }, + "/market": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 24, + "totalMs": 8, + "maxMs": 5 + }, + "/api/market/*?days": { + "count": 551, + "totalMs": 209, + "maxMs": 39 + }, + "/img/background2.jpg": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 4, + "totalMs": 2, + "maxMs": 1 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 102, + "maxMs": 102 + }, + "/api/market/*?limit&offset&q": { + "count": 2, + "totalMs": 34, + "maxMs": 19 + }, + "/status/:bot": { + "count": 234, + "totalMs": 4598, + "maxMs": 1176 + }, + "/state/jackthief?password": { + "count": 8, + "totalMs": 2904, + "maxMs": 2417 + }, + "/gateway/state/*?password": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/player/*": { + "count": 126, + "totalMs": 377174, + "maxMs": 15023 + }, + "/hiscores?category&profile": { + "count": 2, + "totalMs": 15848, + "maxMs": 14732 + }, + "/hiscores/player/*?profile": { + "count": 17, + "totalMs": 58539, + "maxMs": 14860 + }, + "/config819086852": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot?bot&password": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 2, + "totalMs": 2, + "maxMs": 2 + }, + "/bot/tinymidipcm.wasm": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/ondemandworker.js": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?limit&sort": { + "count": 1, + "totalMs": 13, + "maxMs": 13 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T05:59:49.767Z", + "requestMs": 105, + "tick": 372, + "tickRate": 300, + "players": 676, + "pendingLogins": 1, + "npcs": 8144, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 76.3, + "world": 2.8, + "clientIn": 3, + "npc": 15.5, + "player": 11.7, + "logout": 0.2, + "login": 8.1, + "zone": 0.3, + "clientOut": 16.6, + "cleanup": 2.7, + "bandwidthIn": 579.7, + "bandwidthOut": 23504.1, + "interval": 302.7 + }, + "peak": { + "cycle": 180, + "world": 35, + "clientIn": 13, + "npc": 52, + "player": 34, + "logout": 4, + "login": 79, + "zone": 4, + "clientOut": 38, + "cleanup": 14, + "bandwidthIn": 2315, + "bandwidthOut": 55377, + "interval": 1718 + }, + "last": { + "cycle": 73, + "world": 2, + "clientIn": 4, + "npc": 12, + "player": 19, + "logout": 0, + "login": 0, + "zone": 0, + "clientOut": 20, + "cleanup": 3, + "bandwidthIn": 742, + "bandwidthOut": 39339 + }, + "heapMB": 426, + "rssMB": 972, + "web": { + "current": { + "start": 1791698332880, + "end": 1791698389797, + "routes": { + "/api/version": { + "count": 116, + "totalMs": 8, + "maxMs": 1 + }, + "/": { + "count": 585, + "totalMs": 776, + "maxMs": 19 + }, + "/hiscores/player/*?profile": { + "count": 31, + "totalMs": 43, + "maxMs": 4 + }, + "/crc": { + "count": 125, + "totalMs": 5, + "maxMs": 1 + }, + "/status/:bot": { + "count": 350, + "totalMs": 2289, + "maxMs": 93 + }, + "/hiscores/player/*": { + "count": 456, + "totalMs": 358, + "maxMs": 10 + }, + "/playerpositions": { + "count": 302, + "totalMs": 44, + "maxMs": 2 + }, + "/playercount": { + "count": 40, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days": { + "count": 345, + "totalMs": 66, + "maxMs": 3 + }, + "/api/market/*?days&limit&q": { + "count": 8, + "totalMs": 44, + "maxMs": 13 + }, + "/favicon.ico": { + "count": 15, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway": { + "count": 12, + "totalMs": 6, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/state/jackthief?password": { + "count": 6, + "totalMs": 130, + "maxMs": 103 + }, + "/hiscores?category&profile": { + "count": 23, + "totalMs": 9, + "maxMs": 2 + }, + "/config819086852": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 4, + "totalMs": 2, + "maxMs": 1 + }, + "/worldfeed": { + "count": 3, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 15, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*": { + "count": 2, + "totalMs": 2, + "maxMs": 2 + }, + "/bot?bot&password": { + "count": 7, + "totalMs": 10, + "maxMs": 2 + }, + "/bot/client.js?v": { + "count": 7, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 7, + "totalMs": 1, + "maxMs": 1 + }, + "/client/SCC1_Florestan.sf2": { + "count": 7, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/bank?profile": { + "count": 1, + "totalMs": 1513, + "maxMs": 1513 + }, + "/bot/ondemandworker.js": { + "count": 7, + "totalMs": 2, + "maxMs": 1 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791698272859, + "end": 1791698332880, + "routes": { + "/": { + "count": 1474, + "totalMs": 3148, + "maxMs": 44 + }, + "/crc": { + "count": 267, + "totalMs": 15, + "maxMs": 5 + }, + "/playercount": { + "count": 76, + "totalMs": 1, + "maxMs": 1 + }, + "/playerpositions": { + "count": 597, + "totalMs": 57, + "maxMs": 8 + }, + "/gateway": { + "count": 83, + "totalMs": 12, + "maxMs": 2 + }, + "/favicon.ico": { + "count": 15, + "totalMs": 11, + "maxMs": 5 + }, + "/api/version": { + "count": 520, + "totalMs": 41, + "maxMs": 5 + }, + "/worldfeed": { + "count": 22, + "totalMs": 7, + "maxMs": 5 + }, + "/market": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 24, + "totalMs": 8, + "maxMs": 5 + }, + "/api/market/*?days": { + "count": 551, + "totalMs": 209, + "maxMs": 39 + }, + "/img/background2.jpg": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 4, + "totalMs": 2, + "maxMs": 1 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 102, + "maxMs": 102 + }, + "/api/market/*?limit&offset&q": { + "count": 2, + "totalMs": 34, + "maxMs": 19 + }, + "/status/:bot": { + "count": 234, + "totalMs": 4598, + "maxMs": 1176 + }, + "/state/jackthief?password": { + "count": 8, + "totalMs": 2904, + "maxMs": 2417 + }, + "/gateway/state/*?password": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/player/*": { + "count": 126, + "totalMs": 377174, + "maxMs": 15023 + }, + "/hiscores?category&profile": { + "count": 2, + "totalMs": 15848, + "maxMs": 14732 + }, + "/hiscores/player/*?profile": { + "count": 17, + "totalMs": 58539, + "maxMs": 14860 + }, + "/config819086852": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot?bot&password": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 2, + "totalMs": 2, + "maxMs": 2 + }, + "/bot/tinymidipcm.wasm": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/ondemandworker.js": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?limit&sort": { + "count": 1, + "totalMs": 13, + "maxMs": 13 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T06:00:04.760Z", + "requestMs": 97, + "tick": 422, + "tickRate": 300, + "players": 719, + "pendingLogins": 1, + "npcs": 8144, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 77.5, + "world": 2.8, + "clientIn": 3.6, + "npc": 12.6, + "player": 13.3, + "logout": 0.2, + "login": 8.3, + "zone": 0.3, + "clientOut": 19.8, + "cleanup": 2.5, + "bandwidthIn": 698.2, + "bandwidthOut": 28822.4, + "interval": 302.7 + }, + "peak": { + "cycle": 180, + "world": 13, + "clientIn": 13, + "npc": 30, + "player": 34, + "logout": 1, + "login": 79, + "zone": 4, + "clientOut": 38, + "cleanup": 8, + "bandwidthIn": 2315, + "bandwidthOut": 55377, + "interval": 1718 + }, + "last": { + "cycle": 65, + "world": 2, + "clientIn": 3, + "npc": 11, + "player": 9, + "logout": 0, + "login": 0, + "zone": 0, + "clientOut": 23, + "cleanup": 2, + "bandwidthIn": 509, + "bandwidthOut": 25011 + }, + "heapMB": 473, + "rssMB": 1082, + "web": { + "current": { + "start": 1791698392942, + "end": 1791698404791, + "routes": { + "/playerpositions": { + "count": 64, + "totalMs": 8, + "maxMs": 1 + }, + "/": { + "count": 108, + "totalMs": 161, + "maxMs": 20 + }, + "/hiscores/player/*": { + "count": 96, + "totalMs": 58, + "maxMs": 5 + }, + "/status/:bot": { + "count": 113, + "totalMs": 101, + "maxMs": 8 + }, + "/gateway/state/*?password": { + "count": 3, + "totalMs": 1, + "maxMs": 1 + }, + "/crc": { + "count": 18, + "totalMs": 0, + "maxMs": 0 + }, + "/state/jackthief?password": { + "count": 2, + "totalMs": 3, + "maxMs": 2 + }, + "/playercount": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*": { + "count": 2, + "totalMs": 2, + "maxMs": 2 + }, + "/api/version": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + } + } + }, + "last": { + "start": 1791698332880, + "end": 1791698392942, + "routes": { + "/api/version": { + "count": 120, + "totalMs": 8, + "maxMs": 1 + }, + "/": { + "count": 612, + "totalMs": 805, + "maxMs": 19 + }, + "/hiscores/player/*?profile": { + "count": 31, + "totalMs": 43, + "maxMs": 4 + }, + "/crc": { + "count": 133, + "totalMs": 5, + "maxMs": 1 + }, + "/status/:bot": { + "count": 351, + "totalMs": 2289, + "maxMs": 93 + }, + "/hiscores/player/*": { + "count": 480, + "totalMs": 373, + "maxMs": 10 + }, + "/playerpositions": { + "count": 320, + "totalMs": 46, + "maxMs": 2 + }, + "/playercount": { + "count": 42, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days": { + "count": 345, + "totalMs": 66, + "maxMs": 3 + }, + "/api/market/*?days&limit&q": { + "count": 8, + "totalMs": 44, + "maxMs": 13 + }, + "/favicon.ico": { + "count": 15, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway": { + "count": 12, + "totalMs": 6, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 8, + "totalMs": 0, + "maxMs": 0 + }, + "/state/jackthief?password": { + "count": 6, + "totalMs": 130, + "maxMs": 103 + }, + "/hiscores?category&profile": { + "count": 23, + "totalMs": 9, + "maxMs": 2 + }, + "/config819086852": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 4, + "totalMs": 2, + "maxMs": 1 + }, + "/worldfeed": { + "count": 3, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 15, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*": { + "count": 2, + "totalMs": 2, + "maxMs": 2 + }, + "/bot?bot&password": { + "count": 7, + "totalMs": 10, + "maxMs": 2 + }, + "/bot/client.js?v": { + "count": 7, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 7, + "totalMs": 1, + "maxMs": 1 + }, + "/client/SCC1_Florestan.sf2": { + "count": 7, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/bank?profile": { + "count": 1, + "totalMs": 1513, + "maxMs": 1513 + }, + "/bot/ondemandworker.js": { + "count": 7, + "totalMs": 2, + "maxMs": 1 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T06:00:19.784Z", + "requestMs": 120, + "tick": 472, + "tickRate": 300, + "players": 752, + "pendingLogins": 0, + "npcs": 8144, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 78.6, + "world": 2.9, + "clientIn": 4.1, + "npc": 12, + "player": 14.7, + "logout": 0.2, + "login": 5.3, + "zone": 0.3, + "clientOut": 22.2, + "cleanup": 2.5, + "bandwidthIn": 786.5, + "bandwidthOut": 31077.2, + "interval": 302.7 + }, + "peak": { + "cycle": 157, + "world": 13, + "clientIn": 13, + "npc": 30, + "player": 34, + "logout": 1, + "login": 79, + "zone": 2, + "clientOut": 44, + "cleanup": 8, + "bandwidthIn": 2315, + "bandwidthOut": 55377, + "interval": 1718 + }, + "last": { + "cycle": 121, + "world": 5, + "clientIn": 6, + "npc": 19, + "player": 21, + "logout": 0, + "login": 0, + "zone": 0, + "clientOut": 41, + "cleanup": 4, + "bandwidthIn": 697, + "bandwidthOut": 29819 + }, + "heapMB": 538, + "rssMB": 1224, + "web": { + "current": { + "start": 1791698392942, + "end": 1791698419815, + "routes": { + "/playerpositions": { + "count": 145, + "totalMs": 20, + "maxMs": 2 + }, + "/": { + "count": 251, + "totalMs": 363, + "maxMs": 20 + }, + "/hiscores/player/*": { + "count": 341, + "totalMs": 254, + "maxMs": 5 + }, + "/status/:bot": { + "count": 179, + "totalMs": 437, + "maxMs": 10 + }, + "/gateway/state/*?password": { + "count": 7, + "totalMs": 2, + "maxMs": 1 + }, + "/crc": { + "count": 64, + "totalMs": 2, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 3, + "totalMs": 22, + "maxMs": 19 + }, + "/playercount": { + "count": 15, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*": { + "count": 2, + "totalMs": 2, + "maxMs": 2 + }, + "/api/version": { + "count": 16, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 48, + "totalMs": 10, + "maxMs": 2 + }, + "/favicon-active.ico": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days&limit&q": { + "count": 1, + "totalMs": 3, + "maxMs": 3 + }, + "/worldfeed": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/player/*?profile": { + "count": 2, + "totalMs": 3, + "maxMs": 2 + } + } + }, + "last": { + "start": 1791698332880, + "end": 1791698392942, + "routes": { + "/api/version": { + "count": 120, + "totalMs": 8, + "maxMs": 1 + }, + "/": { + "count": 612, + "totalMs": 805, + "maxMs": 19 + }, + "/hiscores/player/*?profile": { + "count": 31, + "totalMs": 43, + "maxMs": 4 + }, + "/crc": { + "count": 133, + "totalMs": 5, + "maxMs": 1 + }, + "/status/:bot": { + "count": 351, + "totalMs": 2289, + "maxMs": 93 + }, + "/hiscores/player/*": { + "count": 480, + "totalMs": 373, + "maxMs": 10 + }, + "/playerpositions": { + "count": 320, + "totalMs": 46, + "maxMs": 2 + }, + "/playercount": { + "count": 42, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days": { + "count": 345, + "totalMs": 66, + "maxMs": 3 + }, + "/api/market/*?days&limit&q": { + "count": 8, + "totalMs": 44, + "maxMs": 13 + }, + "/favicon.ico": { + "count": 15, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway": { + "count": 12, + "totalMs": 6, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 8, + "totalMs": 0, + "maxMs": 0 + }, + "/state/jackthief?password": { + "count": 6, + "totalMs": 130, + "maxMs": 103 + }, + "/hiscores?category&profile": { + "count": 23, + "totalMs": 9, + "maxMs": 2 + }, + "/config819086852": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 4, + "totalMs": 2, + "maxMs": 1 + }, + "/worldfeed": { + "count": 3, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 15, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*": { + "count": 2, + "totalMs": 2, + "maxMs": 2 + }, + "/bot?bot&password": { + "count": 7, + "totalMs": 10, + "maxMs": 2 + }, + "/bot/client.js?v": { + "count": 7, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 7, + "totalMs": 1, + "maxMs": 1 + }, + "/client/SCC1_Florestan.sf2": { + "count": 7, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/bank?profile": { + "count": 1, + "totalMs": 1513, + "maxMs": 1513 + }, + "/bot/ondemandworker.js": { + "count": 7, + "totalMs": 2, + "maxMs": 1 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T06:00:34.751Z", + "requestMs": 86, + "tick": 522, + "tickRate": 300, + "players": 757, + "pendingLogins": 0, + "npcs": 8144, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 77.3, + "world": 3, + "clientIn": 4.2, + "npc": 12, + "player": 14.4, + "logout": 0.2, + "login": 3.6, + "zone": 0.4, + "clientOut": 22.6, + "cleanup": 2.6, + "bandwidthIn": 773.6, + "bandwidthOut": 30293.7, + "interval": 302.7 + }, + "peak": { + "cycle": 157, + "world": 11, + "clientIn": 13, + "npc": 30, + "player": 34, + "logout": 2, + "login": 79, + "zone": 2, + "clientOut": 44, + "cleanup": 8, + "bandwidthIn": 2315, + "bandwidthOut": 48720, + "interval": 1718 + }, + "last": { + "cycle": 59, + "world": 2, + "clientIn": 3, + "npc": 10, + "player": 11, + "logout": 0, + "login": 0, + "zone": 1, + "clientOut": 19, + "cleanup": 3, + "bandwidthIn": 619, + "bandwidthOut": 37091 + }, + "heapMB": 454, + "rssMB": 1019, + "web": { + "current": { + "start": 1791698392942, + "end": 1791698434781, + "routes": { + "/playerpositions": { + "count": 226, + "totalMs": 34, + "maxMs": 2 + }, + "/": { + "count": 343, + "totalMs": 484, + "maxMs": 20 + }, + "/hiscores/player/*": { + "count": 564, + "totalMs": 399, + "maxMs": 5 + }, + "/status/:bot": { + "count": 293, + "totalMs": 966, + "maxMs": 10 + }, + "/gateway/state/*?password": { + "count": 10, + "totalMs": 4, + "maxMs": 1 + }, + "/crc": { + "count": 78, + "totalMs": 3, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 9, + "totalMs": 31, + "maxMs": 19 + }, + "/playercount": { + "count": 24, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*": { + "count": 2, + "totalMs": 2, + "maxMs": 2 + }, + "/api/version": { + "count": 20, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 48, + "totalMs": 10, + "maxMs": 2 + }, + "/favicon-active.ico": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days&limit&q": { + "count": 1, + "totalMs": 3, + "maxMs": 3 + }, + "/worldfeed": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/player/*?profile": { + "count": 2, + "totalMs": 3, + "maxMs": 2 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + } + } + }, + "last": { + "start": 1791698332880, + "end": 1791698392942, + "routes": { + "/api/version": { + "count": 120, + "totalMs": 8, + "maxMs": 1 + }, + "/": { + "count": 612, + "totalMs": 805, + "maxMs": 19 + }, + "/hiscores/player/*?profile": { + "count": 31, + "totalMs": 43, + "maxMs": 4 + }, + "/crc": { + "count": 133, + "totalMs": 5, + "maxMs": 1 + }, + "/status/:bot": { + "count": 351, + "totalMs": 2289, + "maxMs": 93 + }, + "/hiscores/player/*": { + "count": 480, + "totalMs": 373, + "maxMs": 10 + }, + "/playerpositions": { + "count": 320, + "totalMs": 46, + "maxMs": 2 + }, + "/playercount": { + "count": 42, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days": { + "count": 345, + "totalMs": 66, + "maxMs": 3 + }, + "/api/market/*?days&limit&q": { + "count": 8, + "totalMs": 44, + "maxMs": 13 + }, + "/favicon.ico": { + "count": 15, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway": { + "count": 12, + "totalMs": 6, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 8, + "totalMs": 0, + "maxMs": 0 + }, + "/state/jackthief?password": { + "count": 6, + "totalMs": 130, + "maxMs": 103 + }, + "/hiscores?category&profile": { + "count": 23, + "totalMs": 9, + "maxMs": 2 + }, + "/config819086852": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 4, + "totalMs": 2, + "maxMs": 1 + }, + "/worldfeed": { + "count": 3, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 15, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*": { + "count": 2, + "totalMs": 2, + "maxMs": 2 + }, + "/bot?bot&password": { + "count": 7, + "totalMs": 10, + "maxMs": 2 + }, + "/bot/client.js?v": { + "count": 7, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 7, + "totalMs": 1, + "maxMs": 1 + }, + "/client/SCC1_Florestan.sf2": { + "count": 7, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/bank?profile": { + "count": 1, + "totalMs": 1513, + "maxMs": 1513 + }, + "/bot/ondemandworker.js": { + "count": 7, + "totalMs": 2, + "maxMs": 1 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T06:00:49.770Z", + "requestMs": 104, + "tick": 572, + "tickRate": 300, + "players": 758, + "pendingLogins": 0, + "npcs": 8144, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 78.3, + "world": 3.1, + "clientIn": 4.2, + "npc": 12.2, + "player": 14.6, + "logout": 0.2, + "login": 3.4, + "zone": 0.4, + "clientOut": 23.1, + "cleanup": 2.7, + "bandwidthIn": 760.8, + "bandwidthOut": 30014.3, + "interval": 302.7 + }, + "peak": { + "cycle": 198, + "world": 11, + "clientIn": 13, + "npc": 30, + "player": 41, + "logout": 2, + "login": 68, + "zone": 2, + "clientOut": 56, + "cleanup": 6, + "bandwidthIn": 2315, + "bandwidthOut": 48720, + "interval": 1718 + }, + "last": { + "cycle": 74, + "world": 2, + "clientIn": 5, + "npc": 12, + "player": 16, + "logout": 0, + "login": 0, + "zone": 1, + "clientOut": 23, + "cleanup": 3, + "bandwidthIn": 813, + "bandwidthOut": 30761 + }, + "heapMB": 443, + "rssMB": 1005, + "web": { + "current": { + "start": 1791698392942, + "end": 1791698449801, + "routes": { + "/playerpositions": { + "count": 307, + "totalMs": 51, + "maxMs": 3 + }, + "/": { + "count": 429, + "totalMs": 596, + "maxMs": 20 + }, + "/hiscores/player/*": { + "count": 684, + "totalMs": 478, + "maxMs": 5 + }, + "/status/:bot": { + "count": 404, + "totalMs": 1321, + "maxMs": 22 + }, + "/gateway/state/*?password": { + "count": 13, + "totalMs": 5, + "maxMs": 1 + }, + "/crc": { + "count": 95, + "totalMs": 4, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 11, + "totalMs": 39, + "maxMs": 19 + }, + "/playercount": { + "count": 39, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*": { + "count": 2, + "totalMs": 2, + "maxMs": 2 + }, + "/api/version": { + "count": 24, + "totalMs": 2, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway": { + "count": 3, + "totalMs": 2, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 193, + "totalMs": 27, + "maxMs": 2 + }, + "/favicon-active.ico": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days&limit&q": { + "count": 23, + "totalMs": 104, + "maxMs": 15 + }, + "/worldfeed": { + "count": 3, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores/player/*?profile": { + "count": 2, + "totalMs": 3, + "maxMs": 2 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/config819086852": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/bot?bot&password&stateEvery": { + "count": 1, + "totalMs": 2, + "maxMs": 2 + }, + "/bot/client.js?v": { + "count": 1, + "totalMs": 3, + "maxMs": 3 + }, + "/bot/tinymidipcm.wasm": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/title-564448443": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + } + } + }, + "last": { + "start": 1791698332880, + "end": 1791698392942, + "routes": { + "/api/version": { + "count": 120, + "totalMs": 8, + "maxMs": 1 + }, + "/": { + "count": 612, + "totalMs": 805, + "maxMs": 19 + }, + "/hiscores/player/*?profile": { + "count": 31, + "totalMs": 43, + "maxMs": 4 + }, + "/crc": { + "count": 133, + "totalMs": 5, + "maxMs": 1 + }, + "/status/:bot": { + "count": 351, + "totalMs": 2289, + "maxMs": 93 + }, + "/hiscores/player/*": { + "count": 480, + "totalMs": 373, + "maxMs": 10 + }, + "/playerpositions": { + "count": 320, + "totalMs": 46, + "maxMs": 2 + }, + "/playercount": { + "count": 42, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days": { + "count": 345, + "totalMs": 66, + "maxMs": 3 + }, + "/api/market/*?days&limit&q": { + "count": 8, + "totalMs": 44, + "maxMs": 13 + }, + "/favicon.ico": { + "count": 15, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway": { + "count": 12, + "totalMs": 6, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 8, + "totalMs": 0, + "maxMs": 0 + }, + "/state/jackthief?password": { + "count": 6, + "totalMs": 130, + "maxMs": 103 + }, + "/hiscores?category&profile": { + "count": 23, + "totalMs": 9, + "maxMs": 2 + }, + "/config819086852": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 4, + "totalMs": 2, + "maxMs": 1 + }, + "/worldfeed": { + "count": 3, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 15, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*": { + "count": 2, + "totalMs": 2, + "maxMs": 2 + }, + "/bot?bot&password": { + "count": 7, + "totalMs": 10, + "maxMs": 2 + }, + "/bot/client.js?v": { + "count": 7, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 7, + "totalMs": 1, + "maxMs": 1 + }, + "/client/SCC1_Florestan.sf2": { + "count": 7, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/bank?profile": { + "count": 1, + "totalMs": 1513, + "maxMs": 1513 + }, + "/bot/ondemandworker.js": { + "count": 7, + "totalMs": 2, + "maxMs": 1 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T06:01:04.779Z", + "requestMs": 111, + "tick": 622, + "tickRate": 300, + "players": 767, + "pendingLogins": 0, + "npcs": 8144, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 78.7, + "world": 3.1, + "clientIn": 4.3, + "npc": 12.4, + "player": 14.7, + "logout": 0.2, + "login": 3, + "zone": 0.4, + "clientOut": 23.4, + "cleanup": 2.7, + "bandwidthIn": 759.4, + "bandwidthOut": 30164.1, + "interval": 302.7 + }, + "peak": { + "cycle": 198, + "world": 11, + "clientIn": 13, + "npc": 30, + "player": 41, + "logout": 2, + "login": 68, + "zone": 2, + "clientOut": 56, + "cleanup": 7, + "bandwidthIn": 2315, + "bandwidthOut": 48720, + "interval": 1718 + }, + "last": { + "cycle": 82, + "world": 3, + "clientIn": 4, + "npc": 10, + "player": 14, + "logout": 0, + "login": 9, + "zone": 0, + "clientOut": 24, + "cleanup": 3, + "bandwidthIn": 794, + "bandwidthOut": 29415 + }, + "heapMB": 474, + "rssMB": 1070, + "web": { + "current": { + "start": 1791698452968, + "end": 1791698464809, + "routes": { + "/": { + "count": 83, + "totalMs": 125, + "maxMs": 5 + }, + "/status/:bot": { + "count": 132, + "totalMs": 420, + "maxMs": 77 + }, + "/hiscores/player/*": { + "count": 96, + "totalMs": 62, + "maxMs": 4 + }, + "/playerpositions": { + "count": 51, + "totalMs": 9, + "maxMs": 1 + }, + "/crc": { + "count": 31, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days": { + "count": 127, + "totalMs": 23, + "maxMs": 2 + }, + "/api/market/*?days&limit&q": { + "count": 24, + "totalMs": 96, + "maxMs": 10 + }, + "/api/version": { + "count": 17, + "totalMs": 1, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 2, + "totalMs": 4, + "maxMs": 2 + }, + "/gateway/state/*?password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/playercount": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/config819086852": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 3, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores/bank?profile": { + "count": 1, + "totalMs": 136, + "maxMs": 136 + }, + "/img/edge_c.jpg": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/img/skill/*": { + "count": 19, + "totalMs": 1, + "maxMs": 1 + }, + "/img/edge_a.jpg": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/img/edge_d.jpg": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/img/background2.jpg": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/img/stoneback.gif": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/viewer/viewer.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/img/edge_g2.jpg": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/img/edge_h2.jpg": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/versionlist1333187759": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/ondemand.zip": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/textures915347346": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791698392942, + "end": 1791698452968, + "routes": { + "/playerpositions": { + "count": 324, + "totalMs": 53, + "maxMs": 3 + }, + "/": { + "count": 453, + "totalMs": 620, + "maxMs": 20 + }, + "/hiscores/player/*": { + "count": 708, + "totalMs": 493, + "maxMs": 5 + }, + "/status/:bot": { + "count": 410, + "totalMs": 1412, + "maxMs": 77 + }, + "/gateway/state/*?password": { + "count": 14, + "totalMs": 5, + "maxMs": 1 + }, + "/crc": { + "count": 101, + "totalMs": 4, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 11, + "totalMs": 39, + "maxMs": 19 + }, + "/playercount": { + "count": 40, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*": { + "count": 2, + "totalMs": 2, + "maxMs": 2 + }, + "/api/version": { + "count": 24, + "totalMs": 2, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway": { + "count": 3, + "totalMs": 2, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 193, + "totalMs": 27, + "maxMs": 2 + }, + "/favicon-active.ico": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days&limit&q": { + "count": 23, + "totalMs": 104, + "maxMs": 15 + }, + "/worldfeed": { + "count": 3, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores/player/*?profile": { + "count": 2, + "totalMs": 3, + "maxMs": 2 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/config819086852": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/bot?bot&password&stateEvery": { + "count": 1, + "totalMs": 2, + "maxMs": 2 + }, + "/bot/client.js?v": { + "count": 1, + "totalMs": 3, + "maxMs": 3 + }, + "/bot/tinymidipcm.wasm": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/title-564448443": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/media-1710005394": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/textures915347346": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/wordenc455063218": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/sounds-1491954823": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/versionlist1333187759": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/ondemandworker.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + } + ], + "fleetAfterFirstRestart": { + "at": "2026-10-11T06:06:23.604Z", + "mode": "kalphite-renewable-v219", + "pid": 2595191, + "freshness": { + "fresh": 30, + "total": 30, + "expected": 30 + }, + "combat": { + "paused": false, + "pauseReason": null, + "kills": 16378, + "lastKillAt": "2026-10-11T05:54:58.497Z", + "minutesSinceKill": 11, + "ready": 16, + "required": 16, + "released": true, + "missing": [], + "underground": [ + "goo012", + "goo013", + "goo014", + "goo015", + "goo018", + "goo022", + "goo005", + "goo011", + "goo019", + "goo004", + "goo017", + "goo021", + "goo008", + "goo009", + "goo016", + "goo010" + ] + } + }, + "firstDeploymentSteadySamples": [ + { + "capturedAt": "2026-10-11T06:06:57.399Z", + "requestMs": 82, + "tick": 1797, + "tickRate": 300, + "players": 890, + "pendingLogins": 0, + "npcs": 8160, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 90.7, + "world": 3.8, + "clientIn": 5.4, + "npc": 12.1, + "player": 18.9, + "logout": 0.2, + "login": 1, + "zone": 0.4, + "clientOut": 30.4, + "cleanup": 3.1, + "bandwidthIn": 1115.9, + "bandwidthOut": 41081.3, + "interval": 300 + }, + "peak": { + "cycle": 217, + "world": 23, + "clientIn": 16, + "npc": 37, + "player": 57, + "logout": 26, + "login": 59, + "zone": 3, + "clientOut": 106, + "cleanup": 8, + "bandwidthIn": 2510, + "bandwidthOut": 63274, + "interval": 319 + }, + "last": { + "cycle": 100, + "world": 4, + "clientIn": 11, + "npc": 11, + "player": 27, + "logout": 0, + "login": 0, + "zone": 0, + "clientOut": 28, + "cleanup": 3, + "bandwidthIn": 1108, + "bandwidthOut": 50187 + }, + "heapMB": 468, + "rssMB": 1107, + "web": { + "current": { + "start": 1791698813256, + "end": 1791698817432, + "routes": { + "/playerpositions": { + "count": 16, + "totalMs": 3, + "maxMs": 1 + }, + "/status/:bot": { + "count": 61, + "totalMs": 276, + "maxMs": 7 + }, + "/hiscores/player/*": { + "count": 40, + "totalMs": 27, + "maxMs": 2 + }, + "/": { + "count": 29, + "totalMs": 37, + "maxMs": 4 + }, + "/api/market/*?days": { + "count": 6, + "totalMs": 3, + "maxMs": 3 + }, + "/crc": { + "count": 3, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/state/jackthief?password": { + "count": 1, + "totalMs": 2, + "maxMs": 2 + }, + "/favicon.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/playercount": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791698753135, + "end": 1791698813256, + "routes": { + "/hiscores/player/*": { + "count": 542, + "totalMs": 355, + "maxMs": 9 + }, + "/": { + "count": 398, + "totalMs": 571, + "maxMs": 17 + }, + "/status/:bot": { + "count": 350, + "totalMs": 2953, + "maxMs": 34 + }, + "/crc": { + "count": 110, + "totalMs": 2, + "maxMs": 1 + }, + "/playerpositions": { + "count": 225, + "totalMs": 54, + "maxMs": 6 + }, + "/bot/client.js": { + "count": 9, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 8, + "totalMs": 1, + "maxMs": 1 + }, + "/playercount": { + "count": 46, + "totalMs": 3, + "maxMs": 1 + }, + "/worldfeed": { + "count": 6, + "totalMs": 3, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 7, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway": { + "count": 38, + "totalMs": 3, + "maxMs": 1 + }, + "/bot?bot&minimal&password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 7, + "totalMs": 119, + "maxMs": 85 + }, + "/bot/client.js?v": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/tinymidipcm.wasm": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/ondemandworker.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 5, + "totalMs": 1, + "maxMs": 1 + }, + "/api/version": { + "count": 22, + "totalMs": 2, + "maxMs": 1 + }, + "/config819086852": { + "count": 37, + "totalMs": 11, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 31, + "totalMs": 8, + "maxMs": 3 + }, + "/interface282644100": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days&limit&q": { + "count": 8, + "totalMs": 34, + "maxMs": 6 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores?category": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T06:07:12.417Z", + "requestMs": 99, + "tick": 1847, + "tickRate": 300, + "players": 905, + "pendingLogins": 0, + "npcs": 8163, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 90.6, + "world": 3.6, + "clientIn": 5.5, + "npc": 11.9, + "player": 18.7, + "logout": 0.3, + "login": 1, + "zone": 0.4, + "clientOut": 30.8, + "cleanup": 3.1, + "bandwidthIn": 1165.3, + "bandwidthOut": 41797, + "interval": 300 + }, + "peak": { + "cycle": 217, + "world": 13, + "clientIn": 17, + "npc": 37, + "player": 53, + "logout": 27, + "login": 59, + "zone": 3, + "clientOut": 106, + "cleanup": 7, + "bandwidthIn": 2510, + "bandwidthOut": 63274, + "interval": 319 + }, + "last": { + "cycle": 100, + "world": 3, + "clientIn": 5, + "npc": 11, + "player": 24, + "logout": 0, + "login": 0, + "zone": 1, + "clientOut": 37, + "cleanup": 3, + "bandwidthIn": 1010, + "bandwidthOut": 41047 + }, + "heapMB": 472, + "rssMB": 1109, + "web": { + "current": { + "start": 1791698813256, + "end": 1791698832450, + "routes": { + "/playerpositions": { + "count": 76, + "totalMs": 21, + "maxMs": 4 + }, + "/status/:bot": { + "count": 116, + "totalMs": 306, + "maxMs": 7 + }, + "/hiscores/player/*": { + "count": 160, + "totalMs": 124, + "maxMs": 11 + }, + "/": { + "count": 124, + "totalMs": 153, + "maxMs": 5 + }, + "/api/market/*?days": { + "count": 6, + "totalMs": 3, + "maxMs": 3 + }, + "/crc": { + "count": 38, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 3, + "totalMs": 14, + "maxMs": 6 + }, + "/favicon.ico": { + "count": 3, + "totalMs": 0, + "maxMs": 0 + }, + "/playercount": { + "count": 7, + "totalMs": 0, + "maxMs": 0 + }, + "/api/version": { + "count": 19, + "totalMs": 1, + "maxMs": 1 + }, + "/worldfeed": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791698753135, + "end": 1791698813256, + "routes": { + "/hiscores/player/*": { + "count": 542, + "totalMs": 355, + "maxMs": 9 + }, + "/": { + "count": 398, + "totalMs": 571, + "maxMs": 17 + }, + "/status/:bot": { + "count": 350, + "totalMs": 2953, + "maxMs": 34 + }, + "/crc": { + "count": 110, + "totalMs": 2, + "maxMs": 1 + }, + "/playerpositions": { + "count": 225, + "totalMs": 54, + "maxMs": 6 + }, + "/bot/client.js": { + "count": 9, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 8, + "totalMs": 1, + "maxMs": 1 + }, + "/playercount": { + "count": 46, + "totalMs": 3, + "maxMs": 1 + }, + "/worldfeed": { + "count": 6, + "totalMs": 3, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 7, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway": { + "count": 38, + "totalMs": 3, + "maxMs": 1 + }, + "/bot?bot&minimal&password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 7, + "totalMs": 119, + "maxMs": 85 + }, + "/bot/client.js?v": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/tinymidipcm.wasm": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/ondemandworker.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 5, + "totalMs": 1, + "maxMs": 1 + }, + "/api/version": { + "count": 22, + "totalMs": 2, + "maxMs": 1 + }, + "/config819086852": { + "count": 37, + "totalMs": 11, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 31, + "totalMs": 8, + "maxMs": 3 + }, + "/interface282644100": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days&limit&q": { + "count": 8, + "totalMs": 34, + "maxMs": 6 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores?category": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T06:07:27.422Z", + "requestMs": 103, + "tick": 1897, + "tickRate": 300, + "players": 909, + "pendingLogins": 0, + "npcs": 8161, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 91.2, + "world": 3.6, + "clientIn": 5.5, + "npc": 11.9, + "player": 18.9, + "logout": 0.3, + "login": 1, + "zone": 0.4, + "clientOut": 31.1, + "cleanup": 3.1, + "bandwidthIn": 1199.1, + "bandwidthOut": 42704.3, + "interval": 300 + }, + "peak": { + "cycle": 217, + "world": 13, + "clientIn": 17, + "npc": 37, + "player": 54, + "logout": 27, + "login": 59, + "zone": 3, + "clientOut": 106, + "cleanup": 7, + "bandwidthIn": 2510, + "bandwidthOut": 65335, + "interval": 319 + }, + "last": { + "cycle": 83, + "world": 3, + "clientIn": 4, + "npc": 13, + "player": 15, + "logout": 0, + "login": 0, + "zone": 0, + "clientOut": 33, + "cleanup": 2, + "bandwidthIn": 1080, + "bandwidthOut": 44032 + }, + "heapMB": 466, + "rssMB": 1135, + "web": { + "current": { + "start": 1791698813256, + "end": 1791698847455, + "routes": { + "/playerpositions": { + "count": 134, + "totalMs": 37, + "maxMs": 4 + }, + "/status/:bot": { + "count": 242, + "totalMs": 1101, + "maxMs": 18 + }, + "/hiscores/player/*": { + "count": 280, + "totalMs": 201, + "maxMs": 11 + }, + "/": { + "count": 202, + "totalMs": 237, + "maxMs": 5 + }, + "/api/market/*?days": { + "count": 6, + "totalMs": 3, + "maxMs": 3 + }, + "/crc": { + "count": 60, + "totalMs": 2, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 7, + "totalMs": 1, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 4, + "totalMs": 16, + "maxMs": 6 + }, + "/favicon.ico": { + "count": 9, + "totalMs": 2, + "maxMs": 1 + }, + "/playercount": { + "count": 21, + "totalMs": 0, + "maxMs": 0 + }, + "/api/version": { + "count": 24, + "totalMs": 2, + "maxMs": 1 + }, + "/worldfeed": { + "count": 3, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway": { + "count": 17, + "totalMs": 3, + "maxMs": 1 + }, + "/bot?bot&password&stateEvery": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/title-564448443": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 2, + "totalMs": 2, + "maxMs": 1 + }, + "/config819086852": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/media-1710005394": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/textures915347346": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/wordenc455063218": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/sounds-1491954823": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/versionlist1333187759": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791698753135, + "end": 1791698813256, + "routes": { + "/hiscores/player/*": { + "count": 542, + "totalMs": 355, + "maxMs": 9 + }, + "/": { + "count": 398, + "totalMs": 571, + "maxMs": 17 + }, + "/status/:bot": { + "count": 350, + "totalMs": 2953, + "maxMs": 34 + }, + "/crc": { + "count": 110, + "totalMs": 2, + "maxMs": 1 + }, + "/playerpositions": { + "count": 225, + "totalMs": 54, + "maxMs": 6 + }, + "/bot/client.js": { + "count": 9, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 8, + "totalMs": 1, + "maxMs": 1 + }, + "/playercount": { + "count": 46, + "totalMs": 3, + "maxMs": 1 + }, + "/worldfeed": { + "count": 6, + "totalMs": 3, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 7, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway": { + "count": 38, + "totalMs": 3, + "maxMs": 1 + }, + "/bot?bot&minimal&password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 7, + "totalMs": 119, + "maxMs": 85 + }, + "/bot/client.js?v": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/tinymidipcm.wasm": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/ondemandworker.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 5, + "totalMs": 1, + "maxMs": 1 + }, + "/api/version": { + "count": 22, + "totalMs": 2, + "maxMs": 1 + }, + "/config819086852": { + "count": 37, + "totalMs": 11, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 31, + "totalMs": 8, + "maxMs": 3 + }, + "/interface282644100": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days&limit&q": { + "count": 8, + "totalMs": 34, + "maxMs": 6 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores?category": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T06:07:42.421Z", + "requestMs": 101, + "tick": 1947, + "tickRate": 300, + "players": 909, + "pendingLogins": 0, + "npcs": 8163, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 90.5, + "world": 3.5, + "clientIn": 5.6, + "npc": 11.7, + "player": 19.2, + "logout": 0.3, + "login": 0.5, + "zone": 0.4, + "clientOut": 30.9, + "cleanup": 3.1, + "bandwidthIn": 1236.9, + "bandwidthOut": 43518.3, + "interval": 300 + }, + "peak": { + "cycle": 170, + "world": 13, + "clientIn": 17, + "npc": 37, + "player": 54, + "logout": 27, + "login": 36, + "zone": 1, + "clientOut": 45, + "cleanup": 7, + "bandwidthIn": 2510, + "bandwidthOut": 65335, + "interval": 319 + }, + "last": { + "cycle": 79, + "world": 3, + "clientIn": 5, + "npc": 9, + "player": 15, + "logout": 0, + "login": 0, + "zone": 1, + "clientOut": 30, + "cleanup": 3, + "bandwidthIn": 1039, + "bandwidthOut": 47138 + }, + "heapMB": 506, + "rssMB": 1201, + "web": { + "current": { + "start": 1791698813256, + "end": 1791698862452, + "routes": { + "/playerpositions": { + "count": 191, + "totalMs": 49, + "maxMs": 4 + }, + "/status/:bot": { + "count": 333, + "totalMs": 1900, + "maxMs": 24 + }, + "/hiscores/player/*": { + "count": 400, + "totalMs": 276, + "maxMs": 11 + }, + "/": { + "count": 342, + "totalMs": 412, + "maxMs": 13 + }, + "/api/market/*?days": { + "count": 6, + "totalMs": 3, + "maxMs": 3 + }, + "/crc": { + "count": 95, + "totalMs": 5, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 9, + "totalMs": 2, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 6, + "totalMs": 34, + "maxMs": 14 + }, + "/favicon.ico": { + "count": 11, + "totalMs": 2, + "maxMs": 1 + }, + "/playercount": { + "count": 30, + "totalMs": 0, + "maxMs": 0 + }, + "/api/version": { + "count": 28, + "totalMs": 2, + "maxMs": 1 + }, + "/worldfeed": { + "count": 3, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway": { + "count": 18, + "totalMs": 3, + "maxMs": 1 + }, + "/bot?bot&password&stateEvery": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/title-564448443": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 2, + "totalMs": 2, + "maxMs": 1 + }, + "/config819086852": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/media-1710005394": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/textures915347346": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/wordenc455063218": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/sounds-1491954823": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/versionlist1333187759": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/ondemandworker.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791698753135, + "end": 1791698813256, + "routes": { + "/hiscores/player/*": { + "count": 542, + "totalMs": 355, + "maxMs": 9 + }, + "/": { + "count": 398, + "totalMs": 571, + "maxMs": 17 + }, + "/status/:bot": { + "count": 350, + "totalMs": 2953, + "maxMs": 34 + }, + "/crc": { + "count": 110, + "totalMs": 2, + "maxMs": 1 + }, + "/playerpositions": { + "count": 225, + "totalMs": 54, + "maxMs": 6 + }, + "/bot/client.js": { + "count": 9, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 8, + "totalMs": 1, + "maxMs": 1 + }, + "/playercount": { + "count": 46, + "totalMs": 3, + "maxMs": 1 + }, + "/worldfeed": { + "count": 6, + "totalMs": 3, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 7, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway": { + "count": 38, + "totalMs": 3, + "maxMs": 1 + }, + "/bot?bot&minimal&password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 7, + "totalMs": 119, + "maxMs": 85 + }, + "/bot/client.js?v": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/tinymidipcm.wasm": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/ondemandworker.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 5, + "totalMs": 1, + "maxMs": 1 + }, + "/api/version": { + "count": 22, + "totalMs": 2, + "maxMs": 1 + }, + "/config819086852": { + "count": 37, + "totalMs": 11, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 31, + "totalMs": 8, + "maxMs": 3 + }, + "/interface282644100": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*?days&limit&q": { + "count": 8, + "totalMs": 34, + "maxMs": 6 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores?category": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T06:07:57.423Z", + "requestMs": 102, + "tick": 1997, + "tickRate": 300, + "players": 917, + "pendingLogins": 0, + "npcs": 8164, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 91.9, + "world": 3.7, + "clientIn": 5.8, + "npc": 11.8, + "player": 19.4, + "logout": 0.4, + "login": 0.8, + "zone": 0.4, + "clientOut": 31.1, + "cleanup": 3.2, + "bandwidthIn": 1230.5, + "bandwidthOut": 43695.3, + "interval": 300 + }, + "peak": { + "cycle": 172, + "world": 13, + "clientIn": 24, + "npc": 37, + "player": 78, + "logout": 35, + "login": 36, + "zone": 1, + "clientOut": 45, + "cleanup": 7, + "bandwidthIn": 2510, + "bandwidthOut": 65335, + "interval": 319 + }, + "last": { + "cycle": 81, + "world": 3, + "clientIn": 5, + "npc": 11, + "player": 14, + "logout": 0, + "login": 0, + "zone": 1, + "clientOut": 32, + "cleanup": 2, + "bandwidthIn": 1262, + "bandwidthOut": 56522 + }, + "heapMB": 476, + "rssMB": 1178, + "web": { + "current": { + "start": 1791698873266, + "end": 1791698877456, + "routes": { + "/status/:bot": { + "count": 61, + "totalMs": 159, + "maxMs": 6 + }, + "/playerpositions": { + "count": 13, + "totalMs": 4, + "maxMs": 1 + }, + "/": { + "count": 22, + "totalMs": 24, + "maxMs": 2 + }, + "/hiscores/player/*": { + "count": 40, + "totalMs": 27, + "maxMs": 3 + }, + "/playercount": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791698813256, + "end": 1791698873266, + "routes": { + "/playerpositions": { + "count": 223, + "totalMs": 55, + "maxMs": 4 + }, + "/status/:bot": { + "count": 353, + "totalMs": 2033, + "maxMs": 24 + }, + "/hiscores/player/*": { + "count": 480, + "totalMs": 318, + "maxMs": 11 + }, + "/": { + "count": 409, + "totalMs": 488, + "maxMs": 13 + }, + "/api/market/*?days": { + "count": 6, + "totalMs": 3, + "maxMs": 3 + }, + "/crc": { + "count": 103, + "totalMs": 5, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 10, + "totalMs": 2, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 8, + "totalMs": 40, + "maxMs": 14 + }, + "/favicon.ico": { + "count": 14, + "totalMs": 2, + "maxMs": 1 + }, + "/playercount": { + "count": 44, + "totalMs": 0, + "maxMs": 0 + }, + "/api/version": { + "count": 30, + "totalMs": 2, + "maxMs": 1 + }, + "/worldfeed": { + "count": 5, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway": { + "count": 33, + "totalMs": 6, + "maxMs": 1 + }, + "/bot?bot&password&stateEvery": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/title-564448443": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 2, + "totalMs": 2, + "maxMs": 1 + }, + "/config819086852": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/media-1710005394": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/textures915347346": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/wordenc455063218": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/sounds-1491954823": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/versionlist1333187759": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/ondemandworker.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?limit&sort": { + "count": 1, + "totalMs": 6, + "maxMs": 6 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T06:08:12.429Z", + "requestMs": 107, + "tick": 2047, + "tickRate": 300, + "players": 938, + "pendingLogins": 0, + "npcs": 8160, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 95.4, + "world": 3.7, + "clientIn": 6, + "npc": 12, + "player": 20, + "logout": 0.6, + "login": 1.7, + "zone": 0.4, + "clientOut": 32.1, + "cleanup": 3.2, + "bandwidthIn": 1231.1, + "bandwidthOut": 45047.3, + "interval": 300 + }, + "peak": { + "cycle": 204, + "world": 13, + "clientIn": 24, + "npc": 25, + "player": 78, + "logout": 40, + "login": 77, + "zone": 2, + "clientOut": 85, + "cleanup": 9, + "bandwidthIn": 2510, + "bandwidthOut": 65335, + "interval": 320 + }, + "last": { + "cycle": 108, + "world": 3, + "clientIn": 5, + "npc": 13, + "player": 29, + "logout": 0, + "login": 0, + "zone": 1, + "clientOut": 38, + "cleanup": 3, + "bandwidthIn": 833, + "bandwidthOut": 36854 + }, + "heapMB": 472, + "rssMB": 1191, + "web": { + "current": { + "start": 1791698873266, + "end": 1791698892463, + "routes": { + "/status/:bot": { + "count": 116, + "totalMs": 461, + "maxMs": 22 + }, + "/playerpositions": { + "count": 57, + "totalMs": 19, + "maxMs": 3 + }, + "/": { + "count": 138, + "totalMs": 180, + "maxMs": 11 + }, + "/hiscores/player/*": { + "count": 160, + "totalMs": 120, + "maxMs": 4 + }, + "/playercount": { + "count": 7, + "totalMs": 0, + "maxMs": 0 + }, + "/crc": { + "count": 45, + "totalMs": 4, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 2, + "totalMs": 17, + "maxMs": 14 + }, + "/api/version": { + "count": 21, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway": { + "count": 5, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/config819086852": { + "count": 3, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 3, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 21, + "maxMs": 21 + }, + "/hiscores/player/*?profile": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + } + } + }, + "last": { + "start": 1791698813256, + "end": 1791698873266, + "routes": { + "/playerpositions": { + "count": 223, + "totalMs": 55, + "maxMs": 4 + }, + "/status/:bot": { + "count": 353, + "totalMs": 2033, + "maxMs": 24 + }, + "/hiscores/player/*": { + "count": 480, + "totalMs": 318, + "maxMs": 11 + }, + "/": { + "count": 409, + "totalMs": 488, + "maxMs": 13 + }, + "/api/market/*?days": { + "count": 6, + "totalMs": 3, + "maxMs": 3 + }, + "/crc": { + "count": 103, + "totalMs": 5, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 10, + "totalMs": 2, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 8, + "totalMs": 40, + "maxMs": 14 + }, + "/favicon.ico": { + "count": 14, + "totalMs": 2, + "maxMs": 1 + }, + "/playercount": { + "count": 44, + "totalMs": 0, + "maxMs": 0 + }, + "/api/version": { + "count": 30, + "totalMs": 2, + "maxMs": 1 + }, + "/worldfeed": { + "count": 5, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway": { + "count": 33, + "totalMs": 6, + "maxMs": 1 + }, + "/bot?bot&password&stateEvery": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/title-564448443": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 2, + "totalMs": 2, + "maxMs": 1 + }, + "/config819086852": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/media-1710005394": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/textures915347346": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/wordenc455063218": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/sounds-1491954823": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/versionlist1333187759": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/ondemandworker.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?limit&sort": { + "count": 1, + "totalMs": 6, + "maxMs": 6 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T06:08:27.427Z", + "requestMs": 104, + "tick": 2097, + "tickRate": 300, + "players": 941, + "pendingLogins": 0, + "npcs": 8168, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 99, + "world": 3.8, + "clientIn": 6.1, + "npc": 12.4, + "player": 20.4, + "logout": 0.6, + "login": 3.1, + "zone": 0.4, + "clientOut": 32.8, + "cleanup": 3.3, + "bandwidthIn": 1225, + "bandwidthOut": 45941.5, + "interval": 300 + }, + "peak": { + "cycle": 207, + "world": 20, + "clientIn": 24, + "npc": 49, + "player": 78, + "logout": 40, + "login": 77, + "zone": 3, + "clientOut": 85, + "cleanup": 9, + "bandwidthIn": 2353, + "bandwidthOut": 65335, + "interval": 320 + }, + "last": { + "cycle": 109, + "world": 5, + "clientIn": 5, + "npc": 17, + "player": 25, + "logout": 0, + "login": 0, + "zone": 0, + "clientOut": 36, + "cleanup": 4, + "bandwidthIn": 687, + "bandwidthOut": 46847 + }, + "heapMB": 471, + "rssMB": 1162, + "web": { + "current": { + "start": 1791698873266, + "end": 1791698907460, + "routes": { + "/status/:bot": { + "count": 184, + "totalMs": 1122, + "maxMs": 37 + }, + "/playerpositions": { + "count": 100, + "totalMs": 30, + "maxMs": 3 + }, + "/": { + "count": 217, + "totalMs": 301, + "maxMs": 14 + }, + "/hiscores/player/*": { + "count": 280, + "totalMs": 199, + "maxMs": 4 + }, + "/playercount": { + "count": 21, + "totalMs": 0, + "maxMs": 0 + }, + "/crc": { + "count": 59, + "totalMs": 5, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 4, + "totalMs": 36, + "maxMs": 14 + }, + "/api/version": { + "count": 25, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 3, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 3, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway": { + "count": 13, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/config819086852": { + "count": 3, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 3, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 21, + "maxMs": 21 + }, + "/hiscores/player/*?profile": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 14, + "totalMs": 15, + "maxMs": 7 + } + } + }, + "last": { + "start": 1791698813256, + "end": 1791698873266, + "routes": { + "/playerpositions": { + "count": 223, + "totalMs": 55, + "maxMs": 4 + }, + "/status/:bot": { + "count": 353, + "totalMs": 2033, + "maxMs": 24 + }, + "/hiscores/player/*": { + "count": 480, + "totalMs": 318, + "maxMs": 11 + }, + "/": { + "count": 409, + "totalMs": 488, + "maxMs": 13 + }, + "/api/market/*?days": { + "count": 6, + "totalMs": 3, + "maxMs": 3 + }, + "/crc": { + "count": 103, + "totalMs": 5, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 10, + "totalMs": 2, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 8, + "totalMs": 40, + "maxMs": 14 + }, + "/favicon.ico": { + "count": 14, + "totalMs": 2, + "maxMs": 1 + }, + "/playercount": { + "count": 44, + "totalMs": 0, + "maxMs": 0 + }, + "/api/version": { + "count": 30, + "totalMs": 2, + "maxMs": 1 + }, + "/worldfeed": { + "count": 5, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway": { + "count": 33, + "totalMs": 6, + "maxMs": 1 + }, + "/bot?bot&password&stateEvery": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/title-564448443": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 2, + "totalMs": 2, + "maxMs": 1 + }, + "/config819086852": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/media-1710005394": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/textures915347346": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/wordenc455063218": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/sounds-1491954823": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/versionlist1333187759": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/ondemandworker.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?limit&sort": { + "count": 1, + "totalMs": 6, + "maxMs": 6 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T06:08:42.427Z", + "requestMs": 104, + "tick": 2147, + "tickRate": 300, + "players": 941, + "pendingLogins": 0, + "npcs": 8172, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 101.6, + "world": 3.9, + "clientIn": 6.1, + "npc": 12.6, + "player": 20.9, + "logout": 0.6, + "login": 4.6, + "zone": 0.4, + "clientOut": 33.1, + "cleanup": 3.3, + "bandwidthIn": 1226, + "bandwidthOut": 46898.8, + "interval": 300 + }, + "peak": { + "cycle": 207, + "world": 20, + "clientIn": 24, + "npc": 49, + "player": 78, + "logout": 40, + "login": 77, + "zone": 3, + "clientOut": 85, + "cleanup": 9, + "bandwidthIn": 2321, + "bandwidthOut": 65335, + "interval": 320 + }, + "last": { + "cycle": 82, + "world": 3, + "clientIn": 5, + "npc": 11, + "player": 12, + "logout": 0, + "login": 0, + "zone": 1, + "clientOut": 35, + "cleanup": 3, + "bandwidthIn": 1216, + "bandwidthOut": 46149 + }, + "heapMB": 467, + "rssMB": 1192, + "web": { + "current": { + "start": 1791698873266, + "end": 1791698922458, + "routes": { + "/status/:bot": { + "count": 252, + "totalMs": 1679, + "maxMs": 37 + }, + "/playerpositions": { + "count": 158, + "totalMs": 43, + "maxMs": 3 + }, + "/": { + "count": 370, + "totalMs": 477, + "maxMs": 14 + }, + "/hiscores/player/*": { + "count": 400, + "totalMs": 290, + "maxMs": 6 + }, + "/playercount": { + "count": 30, + "totalMs": 0, + "maxMs": 0 + }, + "/crc": { + "count": 98, + "totalMs": 7, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 4, + "totalMs": 36, + "maxMs": 14 + }, + "/api/version": { + "count": 29, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 4, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway": { + "count": 21, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/config819086852": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 21, + "maxMs": 21 + }, + "/hiscores/player/*?profile": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 18, + "totalMs": 17, + "maxMs": 7 + } + } + }, + "last": { + "start": 1791698813256, + "end": 1791698873266, + "routes": { + "/playerpositions": { + "count": 223, + "totalMs": 55, + "maxMs": 4 + }, + "/status/:bot": { + "count": 353, + "totalMs": 2033, + "maxMs": 24 + }, + "/hiscores/player/*": { + "count": 480, + "totalMs": 318, + "maxMs": 11 + }, + "/": { + "count": 409, + "totalMs": 488, + "maxMs": 13 + }, + "/api/market/*?days": { + "count": 6, + "totalMs": 3, + "maxMs": 3 + }, + "/crc": { + "count": 103, + "totalMs": 5, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 10, + "totalMs": 2, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 8, + "totalMs": 40, + "maxMs": 14 + }, + "/favicon.ico": { + "count": 14, + "totalMs": 2, + "maxMs": 1 + }, + "/playercount": { + "count": 44, + "totalMs": 0, + "maxMs": 0 + }, + "/api/version": { + "count": 30, + "totalMs": 2, + "maxMs": 1 + }, + "/worldfeed": { + "count": 5, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway": { + "count": 33, + "totalMs": 6, + "maxMs": 1 + }, + "/bot?bot&password&stateEvery": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/title-564448443": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 2, + "totalMs": 2, + "maxMs": 1 + }, + "/config819086852": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/media-1710005394": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/textures915347346": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/wordenc455063218": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/sounds-1491954823": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/versionlist1333187759": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/ondemandworker.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?limit&sort": { + "count": 1, + "totalMs": 6, + "maxMs": 6 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T06:08:57.423Z", + "requestMs": 98, + "tick": 2197, + "tickRate": 300, + "players": 941, + "pendingLogins": 0, + "npcs": 8172, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 106.2, + "world": 4, + "clientIn": 6.4, + "npc": 12.9, + "player": 21.8, + "logout": 0.6, + "login": 5.7, + "zone": 0.4, + "clientOut": 34.1, + "cleanup": 3.5, + "bandwidthIn": 1251.5, + "bandwidthOut": 46753.5, + "interval": 300 + }, + "peak": { + "cycle": 207, + "world": 20, + "clientIn": 24, + "npc": 49, + "player": 81, + "logout": 40, + "login": 85, + "zone": 3, + "clientOut": 85, + "cleanup": 10, + "bandwidthIn": 2321, + "bandwidthOut": 64962, + "interval": 320 + }, + "last": { + "cycle": 179, + "world": 4, + "clientIn": 7, + "npc": 11, + "player": 31, + "logout": 1, + "login": 68, + "zone": 0, + "clientOut": 35, + "cleanup": 5, + "bandwidthIn": 1355, + "bandwidthOut": 64962 + }, + "heapMB": 450, + "rssMB": 1181, + "web": { + "current": { + "start": 1791698933269, + "end": 1791698937457, + "routes": { + "/status/:bot": { + "count": 62, + "totalMs": 1646, + "maxMs": 132 + }, + "/playerpositions": { + "count": 17, + "totalMs": 4, + "maxMs": 2 + }, + "/favicon-active.ico": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/player/*": { + "count": 40, + "totalMs": 24, + "maxMs": 3 + }, + "/": { + "count": 24, + "totalMs": 34, + "maxMs": 5 + }, + "/crc": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/playercount": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/state/jackthief?password": { + "count": 1, + "totalMs": 3, + "maxMs": 3 + } + } + }, + "last": { + "start": 1791698873266, + "end": 1791698933269, + "routes": { + "/status/:bot": { + "count": 310, + "totalMs": 3850, + "maxMs": 204 + }, + "/playerpositions": { + "count": 200, + "totalMs": 53, + "maxMs": 3 + }, + "/": { + "count": 429, + "totalMs": 581, + "maxMs": 14 + }, + "/hiscores/player/*": { + "count": 480, + "totalMs": 460, + "maxMs": 55 + }, + "/playercount": { + "count": 43, + "totalMs": 0, + "maxMs": 0 + }, + "/crc": { + "count": 104, + "totalMs": 7, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 6, + "totalMs": 160, + "maxMs": 100 + }, + "/api/version": { + "count": 30, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 7, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 5, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway": { + "count": 26, + "totalMs": 2, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/config819086852": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 21, + "maxMs": 21 + }, + "/hiscores/player/*?profile": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 20, + "totalMs": 20, + "maxMs": 7 + }, + "/gateway/state/*?password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T06:09:12.431Z", + "requestMs": 104, + "tick": 2247, + "tickRate": 300, + "players": 950, + "pendingLogins": 0, + "npcs": 8180, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 108.9, + "world": 4.1, + "clientIn": 6.6, + "npc": 13.2, + "player": 22, + "logout": 0.7, + "login": 6.5, + "zone": 0.4, + "clientOut": 34.9, + "cleanup": 3.6, + "bandwidthIn": 1289.6, + "bandwidthOut": 47458, + "interval": 300 + }, + "peak": { + "cycle": 207, + "world": 20, + "clientIn": 24, + "npc": 49, + "player": 81, + "logout": 40, + "login": 85, + "zone": 3, + "clientOut": 85, + "cleanup": 10, + "bandwidthIn": 2214, + "bandwidthOut": 64962, + "interval": 320 + }, + "last": { + "cycle": 129, + "world": 8, + "clientIn": 7, + "npc": 17, + "player": 38, + "logout": 0, + "login": 0, + "zone": 1, + "clientOut": 38, + "cleanup": 5, + "bandwidthIn": 1080, + "bandwidthOut": 56770 + }, + "heapMB": 493, + "rssMB": 1246, + "web": { + "current": { + "start": 1791698933269, + "end": 1791698952465, + "routes": { + "/status/:bot": { + "count": 123, + "totalMs": 1823, + "maxMs": 132 + }, + "/playerpositions": { + "count": 74, + "totalMs": 15, + "maxMs": 2 + }, + "/favicon-active.ico": { + "count": 5, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 182, + "totalMs": 119, + "maxMs": 5 + }, + "/": { + "count": 124, + "totalMs": 158, + "maxMs": 5 + }, + "/crc": { + "count": 30, + "totalMs": 2, + "maxMs": 1 + }, + "/playercount": { + "count": 8, + "totalMs": 0, + "maxMs": 0 + }, + "/state/jackthief?password": { + "count": 3, + "totalMs": 22, + "maxMs": 15 + }, + "/api/version": { + "count": 10, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway": { + "count": 14, + "totalMs": 5, + "maxMs": 3 + }, + "/api/market/*?days": { + "count": 14, + "totalMs": 8, + "maxMs": 4 + }, + "/config819086852": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores?category&profile": { + "count": 2, + "totalMs": 2, + "maxMs": 2 + } + } + }, + "last": { + "start": 1791698873266, + "end": 1791698933269, + "routes": { + "/status/:bot": { + "count": 310, + "totalMs": 3850, + "maxMs": 204 + }, + "/playerpositions": { + "count": 200, + "totalMs": 53, + "maxMs": 3 + }, + "/": { + "count": 429, + "totalMs": 581, + "maxMs": 14 + }, + "/hiscores/player/*": { + "count": 480, + "totalMs": 460, + "maxMs": 55 + }, + "/playercount": { + "count": 43, + "totalMs": 0, + "maxMs": 0 + }, + "/crc": { + "count": 104, + "totalMs": 7, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 6, + "totalMs": 160, + "maxMs": 100 + }, + "/api/version": { + "count": 30, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 7, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 5, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway": { + "count": 26, + "totalMs": 2, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/config819086852": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 21, + "maxMs": 21 + }, + "/hiscores/player/*?profile": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 20, + "totalMs": 20, + "maxMs": 7 + }, + "/gateway/state/*?password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T06:09:27.431Z", + "requestMs": 103, + "tick": 2297, + "tickRate": 300, + "players": 951, + "pendingLogins": 0, + "npcs": 8187, + "zonesTracking": 0, + "window": 300, + "overBudget": 1, + "avg": { + "cycle": 113.4, + "world": 4.2, + "clientIn": 6.8, + "npc": 13.7, + "player": 22.8, + "logout": 0.7, + "login": 6.8, + "zone": 0.5, + "clientOut": 36.5, + "cleanup": 3.7, + "bandwidthIn": 1302.5, + "bandwidthOut": 47116.6, + "interval": 300 + }, + "peak": { + "cycle": 341, + "world": 23, + "clientIn": 34, + "npc": 51, + "player": 81, + "logout": 40, + "login": 85, + "zone": 3, + "clientOut": 125, + "cleanup": 10, + "bandwidthIn": 2691, + "bandwidthOut": 65444, + "interval": 354 + }, + "last": { + "cycle": 114, + "world": 3, + "clientIn": 8, + "npc": 14, + "player": 34, + "logout": 0, + "login": 0, + "zone": 0, + "clientOut": 34, + "cleanup": 4, + "bandwidthIn": 1080, + "bandwidthOut": 50721 + }, + "heapMB": 468, + "rssMB": 1168, + "web": { + "current": { + "start": 1791698933269, + "end": 1791698967463, + "routes": { + "/status/:bot": { + "count": 246, + "totalMs": 2850, + "maxMs": 132 + }, + "/playerpositions": { + "count": 134, + "totalMs": 31, + "maxMs": 4 + }, + "/favicon-active.ico": { + "count": 8, + "totalMs": 2, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 302, + "totalMs": 203, + "maxMs": 5 + }, + "/": { + "count": 207, + "totalMs": 310, + "maxMs": 25 + }, + "/crc": { + "count": 48, + "totalMs": 3, + "maxMs": 1 + }, + "/playercount": { + "count": 22, + "totalMs": 3, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 4, + "totalMs": 23, + "maxMs": 15 + }, + "/api/version": { + "count": 12, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway": { + "count": 18, + "totalMs": 5, + "maxMs": 3 + }, + "/api/market/*?days": { + "count": 17, + "totalMs": 11, + "maxMs": 4 + }, + "/config819086852": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores?category&profile": { + "count": 2, + "totalMs": 2, + "maxMs": 2 + } + } + }, + "last": { + "start": 1791698873266, + "end": 1791698933269, + "routes": { + "/status/:bot": { + "count": 310, + "totalMs": 3850, + "maxMs": 204 + }, + "/playerpositions": { + "count": 200, + "totalMs": 53, + "maxMs": 3 + }, + "/": { + "count": 429, + "totalMs": 581, + "maxMs": 14 + }, + "/hiscores/player/*": { + "count": 480, + "totalMs": 460, + "maxMs": 55 + }, + "/playercount": { + "count": 43, + "totalMs": 0, + "maxMs": 0 + }, + "/crc": { + "count": 104, + "totalMs": 7, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 6, + "totalMs": 160, + "maxMs": 100 + }, + "/api/version": { + "count": 30, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 7, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 5, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway": { + "count": 26, + "totalMs": 2, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/config819086852": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 21, + "maxMs": 21 + }, + "/hiscores/player/*?profile": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 20, + "totalMs": 20, + "maxMs": 7 + }, + "/gateway/state/*?password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T06:09:42.431Z", + "requestMs": 101, + "tick": 2347, + "tickRate": 300, + "players": 953, + "pendingLogins": 0, + "npcs": 8184, + "zonesTracking": 0, + "window": 300, + "overBudget": 1, + "avg": { + "cycle": 114.7, + "world": 4.3, + "clientIn": 7, + "npc": 14.1, + "player": 23.2, + "logout": 0.7, + "login": 6.4, + "zone": 0.5, + "clientOut": 37.1, + "cleanup": 3.7, + "bandwidthIn": 1327.9, + "bandwidthOut": 46657, + "interval": 300 + }, + "peak": { + "cycle": 341, + "world": 23, + "clientIn": 34, + "npc": 51, + "player": 81, + "logout": 42, + "login": 85, + "zone": 3, + "clientOut": 125, + "cleanup": 10, + "bandwidthIn": 2691, + "bandwidthOut": 65444, + "interval": 354 + }, + "last": { + "cycle": 99, + "world": 4, + "clientIn": 5, + "npc": 13, + "player": 17, + "logout": 0, + "login": 2, + "zone": 1, + "clientOut": 40, + "cleanup": 4, + "bandwidthIn": 1145, + "bandwidthOut": 57364 + }, + "heapMB": 454, + "rssMB": 1129, + "web": { + "current": { + "start": 1791698933269, + "end": 1791698982464, + "routes": { + "/status/:bot": { + "count": 366, + "totalMs": 4891, + "maxMs": 132 + }, + "/playerpositions": { + "count": 191, + "totalMs": 51, + "maxMs": 4 + }, + "/favicon-active.ico": { + "count": 11, + "totalMs": 3, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 422, + "totalMs": 274, + "maxMs": 5 + }, + "/": { + "count": 346, + "totalMs": 541, + "maxMs": 25 + }, + "/crc": { + "count": 84, + "totalMs": 5, + "maxMs": 1 + }, + "/playercount": { + "count": 31, + "totalMs": 3, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 6, + "totalMs": 32, + "maxMs": 15 + }, + "/api/version": { + "count": 13, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 4, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway": { + "count": 31, + "totalMs": 10, + "maxMs": 3 + }, + "/api/market/*?days": { + "count": 23, + "totalMs": 15, + "maxMs": 4 + }, + "/config819086852": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores?category&profile": { + "count": 2, + "totalMs": 2, + "maxMs": 2 + }, + "/worldfeed": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + } + } + }, + "last": { + "start": 1791698873266, + "end": 1791698933269, + "routes": { + "/status/:bot": { + "count": 310, + "totalMs": 3850, + "maxMs": 204 + }, + "/playerpositions": { + "count": 200, + "totalMs": 53, + "maxMs": 3 + }, + "/": { + "count": 429, + "totalMs": 581, + "maxMs": 14 + }, + "/hiscores/player/*": { + "count": 480, + "totalMs": 460, + "maxMs": 55 + }, + "/playercount": { + "count": 43, + "totalMs": 0, + "maxMs": 0 + }, + "/crc": { + "count": 104, + "totalMs": 7, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 6, + "totalMs": 160, + "maxMs": 100 + }, + "/api/version": { + "count": 30, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 7, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 5, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway": { + "count": 26, + "totalMs": 2, + "maxMs": 1 + }, + "/favicon-active.ico": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/config819086852": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 21, + "maxMs": 21 + }, + "/hiscores/player/*?profile": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 20, + "totalMs": 20, + "maxMs": 7 + }, + "/gateway/state/*?password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + } + ], + "limitations": [ + "Leaderboard snapshots can be five minutes old; stale snapshots remain available during refresh failures.", + "Map snapshots update at most once a second and newly loaded maps poll every1.5s. Spectator transient events still run every tick.", + "Updated lite clients gain login jitter on next start; other externally managed fleets need updated source.", + "A single durable synchronous checkpoint remains indivisible. Game-server work and other event-loop tasks can still produce occasional tick jitter.", + "Before/after loads differ and are not a controlled capacity comparison." + ], + "verifiedAtUtc": "2026-10-11T06:18:59.956976+00:00", + "finalSamples": [ + { + "capturedAt": "2026-10-11T06:14:52.506Z", + "requestMs": 106, + "tick": 218, + "tickRate": 300, + "players": 623, + "pendingLogins": 0, + "npcs": 8142, + "zonesTracking": 0, + "window": 218, + "overBudget": 0, + "avg": { + "cycle": 62.2, + "world": 2.6, + "clientIn": 1.7, + "npc": 17.8, + "player": 6.1, + "logout": 0, + "login": 9.5, + "zone": 0.2, + "clientOut": 8.4, + "cleanup": 2.7, + "bandwidthIn": 246.8, + "bandwidthOut": 11839.2, + "interval": 305.7 + }, + "peak": { + "cycle": 176, + "world": 68, + "clientIn": 58, + "npc": 86, + "player": 23, + "logout": 1, + "login": 76, + "zone": 5, + "clientOut": 48, + "cleanup": 24, + "bandwidthIn": 1528, + "bandwidthOut": 57110, + "interval": 1504 + }, + "last": { + "cycle": 57, + "world": 2, + "clientIn": 4, + "npc": 13, + "player": 9, + "logout": 0, + "login": 0, + "zone": 0, + "clientOut": 17, + "cleanup": 2, + "bandwidthIn": 1528, + "bandwidthOut": 29891 + }, + "heapMB": 446, + "rssMB": 1003, + "web": { + "current": { + "start": 1791699283523, + "end": 1791699292541, + "routes": { + "/api/market/*?days": { + "count": 313, + "totalMs": 46, + "maxMs": 2 + }, + "/": { + "count": 146, + "totalMs": 229, + "maxMs": 14 + }, + "/api/version": { + "count": 15, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 80, + "totalMs": 61, + "maxMs": 5 + }, + "/crc": { + "count": 18, + "totalMs": 1, + "maxMs": 1 + }, + "/status/:bot": { + "count": 4, + "totalMs": 9, + "maxMs": 6 + }, + "/api/market/*?days&limit&q": { + "count": 16, + "totalMs": 67, + "maxMs": 9 + }, + "/playerpositions": { + "count": 36, + "totalMs": 5, + "maxMs": 1 + }, + "/gateway": { + "count": 14, + "totalMs": 4, + "maxMs": 1 + }, + "/playercount": { + "count": 8, + "totalMs": 3, + "maxMs": 1 + }, + "/worldfeed": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 3, + "totalMs": 1, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/api/market/*?limit&sort": { + "count": 1, + "totalMs": 7, + "maxMs": 7 + }, + "/config819086852": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791699223441, + "end": 1791699283523, + "routes": { + "/hiscores/player/*?profile": { + "count": 1, + "totalMs": 2923, + "maxMs": 2923 + }, + "/": { + "count": 1519, + "totalMs": 3017, + "maxMs": 34 + }, + "/crc": { + "count": 289, + "totalMs": 16, + "maxMs": 1 + }, + "/favicon-disconnected.ico": { + "count": 19, + "totalMs": 7, + "maxMs": 2 + }, + "/gateway": { + "count": 58, + "totalMs": 20, + "maxMs": 5 + }, + "/playercount": { + "count": 75, + "totalMs": 8, + "maxMs": 5 + }, + "/worldfeed": { + "count": 21, + "totalMs": 12, + "maxMs": 3 + }, + "/playerpositions": { + "count": 416, + "totalMs": 16, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 358, + "totalMs": 8299, + "maxMs": 1710 + }, + "/favicon.ico": { + "count": 6, + "totalMs": 9, + "maxMs": 8 + }, + "/favicon-active.ico": { + "count": 5, + "totalMs": 0, + "maxMs": 0 + }, + "/api/version": { + "count": 603, + "totalMs": 32, + "maxMs": 3 + }, + "/api/market/*?days&limit&q": { + "count": 4, + "totalMs": 98, + "maxMs": 79 + }, + "/api/market/*?days": { + "count": 94, + "totalMs": 39, + "maxMs": 5 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 77, + "maxMs": 77 + }, + "/status/:bot": { + "count": 396, + "totalMs": 62875, + "maxMs": 1038 + }, + "/state/jackthief?password": { + "count": 10, + "totalMs": 2597, + "maxMs": 1593 + }, + "/bot?bot&password&stateEvery": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 8, + "totalMs": 2, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/title-564448443": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/config819086852": { + "count": 7, + "totalMs": 1, + "maxMs": 1 + }, + "/interface282644100": { + "count": 7, + "totalMs": 1, + "maxMs": 1 + }, + "/media-1710005394": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/textures915347346": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/wordenc455063218": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/sounds-1491954823": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/versionlist1333187759": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/ondemandworker.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/mapview": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/mapview.js": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T06:15:07.498Z", + "requestMs": 96, + "tick": 268, + "tickRate": 300, + "players": 688, + "pendingLogins": 0, + "npcs": 8144, + "zonesTracking": 0, + "window": 268, + "overBudget": 0, + "avg": { + "cycle": 65.2, + "world": 2.7, + "clientIn": 2.2, + "npc": 16.7, + "player": 7.9, + "logout": 0.1, + "login": 8.4, + "zone": 0.2, + "clientOut": 11.1, + "cleanup": 2.7, + "bandwidthIn": 388.2, + "bandwidthOut": 16309.5, + "interval": 304.7 + }, + "peak": { + "cycle": 176, + "world": 68, + "clientIn": 58, + "npc": 86, + "player": 31, + "logout": 1, + "login": 76, + "zone": 5, + "clientOut": 48, + "cleanup": 24, + "bandwidthIn": 1528, + "bandwidthOut": 58006, + "interval": 1504 + }, + "last": { + "cycle": 59, + "world": 2, + "clientIn": 3, + "npc": 9, + "player": 9, + "logout": 0, + "login": 0, + "zone": 0, + "clientOut": 22, + "cleanup": 2, + "bandwidthIn": 911, + "bandwidthOut": 25087 + }, + "heapMB": 413, + "rssMB": 956, + "web": { + "current": { + "start": 1791699283523, + "end": 1791699307532, + "routes": { + "/api/market/*?days": { + "count": 539, + "totalMs": 92, + "maxMs": 8 + }, + "/": { + "count": 355, + "totalMs": 546, + "maxMs": 16 + }, + "/api/version": { + "count": 32, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 200, + "totalMs": 138, + "maxMs": 5 + }, + "/crc": { + "count": 77, + "totalMs": 3, + "maxMs": 1 + }, + "/status/:bot": { + "count": 119, + "totalMs": 224, + "maxMs": 18 + }, + "/api/market/*?days&limit&q": { + "count": 19, + "totalMs": 75, + "maxMs": 9 + }, + "/playerpositions": { + "count": 97, + "totalMs": 16, + "maxMs": 2 + }, + "/gateway": { + "count": 16, + "totalMs": 4, + "maxMs": 1 + }, + "/playercount": { + "count": 12, + "totalMs": 3, + "maxMs": 1 + }, + "/worldfeed": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 7, + "totalMs": 2, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 3, + "totalMs": 9, + "maxMs": 5 + }, + "/api/market/*?limit&sort": { + "count": 1, + "totalMs": 7, + "maxMs": 7 + }, + "/config819086852": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/player/*?profile": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + } + } + }, + "last": { + "start": 1791699223441, + "end": 1791699283523, + "routes": { + "/hiscores/player/*?profile": { + "count": 1, + "totalMs": 2923, + "maxMs": 2923 + }, + "/": { + "count": 1519, + "totalMs": 3017, + "maxMs": 34 + }, + "/crc": { + "count": 289, + "totalMs": 16, + "maxMs": 1 + }, + "/favicon-disconnected.ico": { + "count": 19, + "totalMs": 7, + "maxMs": 2 + }, + "/gateway": { + "count": 58, + "totalMs": 20, + "maxMs": 5 + }, + "/playercount": { + "count": 75, + "totalMs": 8, + "maxMs": 5 + }, + "/worldfeed": { + "count": 21, + "totalMs": 12, + "maxMs": 3 + }, + "/playerpositions": { + "count": 416, + "totalMs": 16, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 358, + "totalMs": 8299, + "maxMs": 1710 + }, + "/favicon.ico": { + "count": 6, + "totalMs": 9, + "maxMs": 8 + }, + "/favicon-active.ico": { + "count": 5, + "totalMs": 0, + "maxMs": 0 + }, + "/api/version": { + "count": 603, + "totalMs": 32, + "maxMs": 3 + }, + "/api/market/*?days&limit&q": { + "count": 4, + "totalMs": 98, + "maxMs": 79 + }, + "/api/market/*?days": { + "count": 94, + "totalMs": 39, + "maxMs": 5 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 77, + "maxMs": 77 + }, + "/status/:bot": { + "count": 396, + "totalMs": 62875, + "maxMs": 1038 + }, + "/state/jackthief?password": { + "count": 10, + "totalMs": 2597, + "maxMs": 1593 + }, + "/bot?bot&password&stateEvery": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 8, + "totalMs": 2, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/title-564448443": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/config819086852": { + "count": 7, + "totalMs": 1, + "maxMs": 1 + }, + "/interface282644100": { + "count": 7, + "totalMs": 1, + "maxMs": 1 + }, + "/media-1710005394": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/textures915347346": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/wordenc455063218": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/sounds-1491954823": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/versionlist1333187759": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/ondemandworker.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/mapview": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/mapview.js": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T06:15:22.519Z", + "requestMs": 115, + "tick": 318, + "tickRate": 300, + "players": 724, + "pendingLogins": 0, + "npcs": 8144, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 70.2, + "world": 2.9, + "clientIn": 2.7, + "npc": 16, + "player": 9.6, + "logout": 0.1, + "login": 8, + "zone": 0.2, + "clientOut": 14.1, + "cleanup": 2.7, + "bandwidthIn": 497.9, + "bandwidthOut": 20698.2, + "interval": 304.2 + }, + "peak": { + "cycle": 170, + "world": 68, + "clientIn": 58, + "npc": 81, + "player": 31, + "logout": 1, + "login": 76, + "zone": 4, + "clientOut": 48, + "cleanup": 9, + "bandwidthIn": 1528, + "bandwidthOut": 64701, + "interval": 1504 + }, + "last": { + "cycle": 77, + "world": 3, + "clientIn": 5, + "npc": 10, + "player": 16, + "logout": 0, + "login": 0, + "zone": 0, + "clientOut": 27, + "cleanup": 3, + "bandwidthIn": 1239, + "bandwidthOut": 36693 + }, + "heapMB": 445, + "rssMB": 1025, + "web": { + "current": { + "start": 1791699283523, + "end": 1791699322552, + "routes": { + "/api/market/*?days": { + "count": 540, + "totalMs": 94, + "maxMs": 8 + }, + "/": { + "count": 469, + "totalMs": 700, + "maxMs": 16 + }, + "/api/version": { + "count": 39, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 320, + "totalMs": 209, + "maxMs": 5 + }, + "/crc": { + "count": 96, + "totalMs": 3, + "maxMs": 1 + }, + "/status/:bot": { + "count": 233, + "totalMs": 609, + "maxMs": 90 + }, + "/api/market/*?days&limit&q": { + "count": 19, + "totalMs": 75, + "maxMs": 9 + }, + "/playerpositions": { + "count": 157, + "totalMs": 29, + "maxMs": 2 + }, + "/gateway": { + "count": 23, + "totalMs": 4, + "maxMs": 1 + }, + "/playercount": { + "count": 26, + "totalMs": 3, + "maxMs": 1 + }, + "/worldfeed": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 9, + "totalMs": 2, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 5, + "totalMs": 14, + "maxMs": 5 + }, + "/api/market/*?limit&sort": { + "count": 1, + "totalMs": 7, + "maxMs": 7 + }, + "/config819086852": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/player/*?profile": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot?bot&password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/tinymidipcm.wasm": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/client/SCC1_Florestan.sf2": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 3, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/ondemandworker.js": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791699223441, + "end": 1791699283523, + "routes": { + "/hiscores/player/*?profile": { + "count": 1, + "totalMs": 2923, + "maxMs": 2923 + }, + "/": { + "count": 1519, + "totalMs": 3017, + "maxMs": 34 + }, + "/crc": { + "count": 289, + "totalMs": 16, + "maxMs": 1 + }, + "/favicon-disconnected.ico": { + "count": 19, + "totalMs": 7, + "maxMs": 2 + }, + "/gateway": { + "count": 58, + "totalMs": 20, + "maxMs": 5 + }, + "/playercount": { + "count": 75, + "totalMs": 8, + "maxMs": 5 + }, + "/worldfeed": { + "count": 21, + "totalMs": 12, + "maxMs": 3 + }, + "/playerpositions": { + "count": 416, + "totalMs": 16, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 358, + "totalMs": 8299, + "maxMs": 1710 + }, + "/favicon.ico": { + "count": 6, + "totalMs": 9, + "maxMs": 8 + }, + "/favicon-active.ico": { + "count": 5, + "totalMs": 0, + "maxMs": 0 + }, + "/api/version": { + "count": 603, + "totalMs": 32, + "maxMs": 3 + }, + "/api/market/*?days&limit&q": { + "count": 4, + "totalMs": 98, + "maxMs": 79 + }, + "/api/market/*?days": { + "count": 94, + "totalMs": 39, + "maxMs": 5 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 77, + "maxMs": 77 + }, + "/status/:bot": { + "count": 396, + "totalMs": 62875, + "maxMs": 1038 + }, + "/state/jackthief?password": { + "count": 10, + "totalMs": 2597, + "maxMs": 1593 + }, + "/bot?bot&password&stateEvery": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 8, + "totalMs": 2, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/title-564448443": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/config819086852": { + "count": 7, + "totalMs": 1, + "maxMs": 1 + }, + "/interface282644100": { + "count": 7, + "totalMs": 1, + "maxMs": 1 + }, + "/media-1710005394": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/textures915347346": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/wordenc455063218": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/sounds-1491954823": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/versionlist1333187759": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/ondemandworker.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/mapview": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/mapview.js": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T06:15:37.507Z", + "requestMs": 102, + "tick": 368, + "tickRate": 300, + "players": 734, + "pendingLogins": 0, + "npcs": 8144, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 77.5, + "world": 3.2, + "clientIn": 3.4, + "npc": 15.4, + "player": 12, + "logout": 0.1, + "login": 7.8, + "zone": 0.2, + "clientOut": 17.9, + "cleanup": 2.8, + "bandwidthIn": 646.6, + "bandwidthOut": 26442.9, + "interval": 300 + }, + "peak": { + "cycle": 170, + "world": 68, + "clientIn": 58, + "npc": 81, + "player": 31, + "logout": 1, + "login": 76, + "zone": 4, + "clientOut": 48, + "cleanup": 9, + "bandwidthIn": 1528, + "bandwidthOut": 64701, + "interval": 330 + }, + "last": { + "cycle": 59, + "world": 2, + "clientIn": 5, + "npc": 10, + "player": 9, + "logout": 0, + "login": 0, + "zone": 0, + "clientOut": 20, + "cleanup": 3, + "bandwidthIn": 1135, + "bandwidthOut": 31387 + }, + "heapMB": 507, + "rssMB": 1152, + "web": { + "current": { + "start": 1791699283523, + "end": 1791699337542, + "routes": { + "/api/market/*?days": { + "count": 540, + "totalMs": 94, + "maxMs": 8 + }, + "/": { + "count": 551, + "totalMs": 803, + "maxMs": 16 + }, + "/api/version": { + "count": 41, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 440, + "totalMs": 292, + "maxMs": 5 + }, + "/crc": { + "count": 103, + "totalMs": 3, + "maxMs": 1 + }, + "/status/:bot": { + "count": 299, + "totalMs": 1123, + "maxMs": 90 + }, + "/api/market/*?days&limit&q": { + "count": 19, + "totalMs": 75, + "maxMs": 9 + }, + "/playerpositions": { + "count": 216, + "totalMs": 41, + "maxMs": 2 + }, + "/gateway": { + "count": 32, + "totalMs": 7, + "maxMs": 1 + }, + "/playercount": { + "count": 38, + "totalMs": 3, + "maxMs": 1 + }, + "/worldfeed": { + "count": 6, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 11, + "totalMs": 2, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 7, + "totalMs": 19, + "maxMs": 5 + }, + "/api/market/*?limit&sort": { + "count": 1, + "totalMs": 7, + "maxMs": 7 + }, + "/config819086852": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/player/*?profile": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot?bot&password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/tinymidipcm.wasm": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/client/SCC1_Florestan.sf2": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 6, + "totalMs": 2, + "maxMs": 1 + }, + "/bot/ondemandworker.js": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/engine-status": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791699223441, + "end": 1791699283523, + "routes": { + "/hiscores/player/*?profile": { + "count": 1, + "totalMs": 2923, + "maxMs": 2923 + }, + "/": { + "count": 1519, + "totalMs": 3017, + "maxMs": 34 + }, + "/crc": { + "count": 289, + "totalMs": 16, + "maxMs": 1 + }, + "/favicon-disconnected.ico": { + "count": 19, + "totalMs": 7, + "maxMs": 2 + }, + "/gateway": { + "count": 58, + "totalMs": 20, + "maxMs": 5 + }, + "/playercount": { + "count": 75, + "totalMs": 8, + "maxMs": 5 + }, + "/worldfeed": { + "count": 21, + "totalMs": 12, + "maxMs": 3 + }, + "/playerpositions": { + "count": 416, + "totalMs": 16, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 358, + "totalMs": 8299, + "maxMs": 1710 + }, + "/favicon.ico": { + "count": 6, + "totalMs": 9, + "maxMs": 8 + }, + "/favicon-active.ico": { + "count": 5, + "totalMs": 0, + "maxMs": 0 + }, + "/api/version": { + "count": 603, + "totalMs": 32, + "maxMs": 3 + }, + "/api/market/*?days&limit&q": { + "count": 4, + "totalMs": 98, + "maxMs": 79 + }, + "/api/market/*?days": { + "count": 94, + "totalMs": 39, + "maxMs": 5 + }, + "/hiscores/runite?profile": { + "count": 1, + "totalMs": 77, + "maxMs": 77 + }, + "/status/:bot": { + "count": 396, + "totalMs": 62875, + "maxMs": 1038 + }, + "/state/jackthief?password": { + "count": 10, + "totalMs": 2597, + "maxMs": 1593 + }, + "/bot?bot&password&stateEvery": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 8, + "totalMs": 2, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/title-564448443": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/config819086852": { + "count": 7, + "totalMs": 1, + "maxMs": 1 + }, + "/interface282644100": { + "count": 7, + "totalMs": 1, + "maxMs": 1 + }, + "/media-1710005394": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/textures915347346": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/wordenc455063218": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/sounds-1491954823": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/versionlist1333187759": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/ondemandworker.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/mapview": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/mapview.js": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T06:15:52.537Z", + "requestMs": 131, + "tick": 418, + "tickRate": 300, + "players": 748, + "pendingLogins": 0, + "npcs": 8144, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 82.5, + "world": 3.1, + "clientIn": 3.9, + "npc": 13.5, + "player": 14.4, + "logout": 0.1, + "login": 7.6, + "zone": 0.3, + "clientOut": 22.1, + "cleanup": 2.6, + "bandwidthIn": 794.8, + "bandwidthOut": 32073.7, + "interval": 300 + }, + "peak": { + "cycle": 178, + "world": 18, + "clientIn": 14, + "npc": 34, + "player": 34, + "logout": 1, + "login": 76, + "zone": 9, + "clientOut": 61, + "cleanup": 7, + "bandwidthIn": 1593, + "bandwidthOut": 64701, + "interval": 330 + }, + "last": { + "cycle": 113, + "world": 3, + "clientIn": 6, + "npc": 15, + "player": 28, + "logout": 0, + "login": 0, + "zone": 1, + "clientOut": 35, + "cleanup": 4, + "bandwidthIn": 753, + "bandwidthOut": 34877 + }, + "heapMB": 437, + "rssMB": 1002, + "web": { + "current": { + "start": 1791699343574, + "end": 1791699352571, + "routes": { + "/hiscores/player/*": { + "count": 80, + "totalMs": 48, + "maxMs": 2 + }, + "/": { + "count": 64, + "totalMs": 103, + "maxMs": 8 + }, + "/playerpositions": { + "count": 37, + "totalMs": 7, + "maxMs": 1 + }, + "/api/market/*?days": { + "count": 3, + "totalMs": 3, + "maxMs": 2 + }, + "/state/jackthief?password": { + "count": 2, + "totalMs": 15, + "maxMs": 13 + }, + "/bot?bot&password": { + "count": 7, + "totalMs": 20, + "maxMs": 5 + }, + "/playercount": { + "count": 10, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/client.js?v": { + "count": 7, + "totalMs": 3, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 7, + "totalMs": 2, + "maxMs": 1 + }, + "/favicon-disconnected.ico": { + "count": 14, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 7, + "totalMs": 2, + "maxMs": 2 + }, + "/crc": { + "count": 16, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/ondemandworker.js": { + "count": 7, + "totalMs": 1, + "maxMs": 1 + }, + "/status/:bot": { + "count": 3, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway": { + "count": 10, + "totalMs": 2, + "maxMs": 1 + }, + "/worldfeed": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 14, + "totalMs": 4, + "maxMs": 1 + } + } + }, + "last": { + "start": 1791699283523, + "end": 1791699343574, + "routes": { + "/api/market/*?days": { + "count": 540, + "totalMs": 94, + "maxMs": 8 + }, + "/": { + "count": 583, + "totalMs": 865, + "maxMs": 16 + }, + "/api/version": { + "count": 44, + "totalMs": 2, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 480, + "totalMs": 317, + "maxMs": 5 + }, + "/crc": { + "count": 111, + "totalMs": 4, + "maxMs": 1 + }, + "/status/:bot": { + "count": 351, + "totalMs": 1169, + "maxMs": 90 + }, + "/api/market/*?days&limit&q": { + "count": 19, + "totalMs": 75, + "maxMs": 9 + }, + "/playerpositions": { + "count": 242, + "totalMs": 47, + "maxMs": 2 + }, + "/gateway": { + "count": 33, + "totalMs": 7, + "maxMs": 1 + }, + "/playercount": { + "count": 43, + "totalMs": 3, + "maxMs": 1 + }, + "/worldfeed": { + "count": 6, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 11, + "totalMs": 2, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 7, + "totalMs": 19, + "maxMs": 5 + }, + "/api/market/*?limit&sort": { + "count": 1, + "totalMs": 7, + "maxMs": 7 + }, + "/config819086852": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/player/*?profile": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot?bot&password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/tinymidipcm.wasm": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/client/SCC1_Florestan.sf2": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 6, + "totalMs": 2, + "maxMs": 1 + }, + "/bot/ondemandworker.js": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/engine-status": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T06:16:07.513Z", + "requestMs": 105, + "tick": 468, + "tickRate": 300, + "players": 749, + "pendingLogins": 0, + "npcs": 8144, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 84.3, + "world": 3.3, + "clientIn": 4.4, + "npc": 13, + "player": 15.9, + "logout": 0.2, + "login": 4.7, + "zone": 0.3, + "clientOut": 25, + "cleanup": 2.8, + "bandwidthIn": 904.6, + "bandwidthOut": 34883.3, + "interval": 300 + }, + "peak": { + "cycle": 258, + "world": 18, + "clientIn": 16, + "npc": 49, + "player": 35, + "logout": 1, + "login": 76, + "zone": 9, + "clientOut": 74, + "cleanup": 8, + "bandwidthIn": 1593, + "bandwidthOut": 64701, + "interval": 310 + }, + "last": { + "cycle": 91, + "world": 4, + "clientIn": 5, + "npc": 16, + "player": 15, + "logout": 0, + "login": 0, + "zone": 0, + "clientOut": 34, + "cleanup": 3, + "bandwidthIn": 1069, + "bandwidthOut": 32833 + }, + "heapMB": 438, + "rssMB": 1232, + "web": { + "current": { + "start": 1791699343574, + "end": 1791699367547, + "routes": { + "/hiscores/player/*": { + "count": 200, + "totalMs": 166, + "maxMs": 10 + }, + "/": { + "count": 186, + "totalMs": 287, + "maxMs": 8 + }, + "/playerpositions": { + "count": 98, + "totalMs": 23, + "maxMs": 2 + }, + "/api/market/*?days": { + "count": 3, + "totalMs": 3, + "maxMs": 2 + }, + "/state/jackthief?password": { + "count": 3, + "totalMs": 16, + "maxMs": 13 + }, + "/bot?bot&password": { + "count": 7, + "totalMs": 20, + "maxMs": 5 + }, + "/playercount": { + "count": 13, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/client.js?v": { + "count": 7, + "totalMs": 3, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 7, + "totalMs": 2, + "maxMs": 1 + }, + "/favicon-disconnected.ico": { + "count": 14, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 7, + "totalMs": 2, + "maxMs": 2 + }, + "/crc": { + "count": 57, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/ondemandworker.js": { + "count": 7, + "totalMs": 1, + "maxMs": 1 + }, + "/status/:bot": { + "count": 119, + "totalMs": 421, + "maxMs": 144 + }, + "/gateway/state/*?password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway": { + "count": 18, + "totalMs": 3, + "maxMs": 1 + }, + "/worldfeed": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 14, + "totalMs": 4, + "maxMs": 1 + }, + "/config819086852": { + "count": 5, + "totalMs": 1, + "maxMs": 1 + }, + "/interface282644100": { + "count": 5, + "totalMs": 0, + "maxMs": 0 + }, + "/playertraces?hours": { + "count": 1, + "totalMs": 5231, + "maxMs": 5231 + }, + "/api/version": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791699283523, + "end": 1791699343574, + "routes": { + "/api/market/*?days": { + "count": 540, + "totalMs": 94, + "maxMs": 8 + }, + "/": { + "count": 583, + "totalMs": 865, + "maxMs": 16 + }, + "/api/version": { + "count": 44, + "totalMs": 2, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 480, + "totalMs": 317, + "maxMs": 5 + }, + "/crc": { + "count": 111, + "totalMs": 4, + "maxMs": 1 + }, + "/status/:bot": { + "count": 351, + "totalMs": 1169, + "maxMs": 90 + }, + "/api/market/*?days&limit&q": { + "count": 19, + "totalMs": 75, + "maxMs": 9 + }, + "/playerpositions": { + "count": 242, + "totalMs": 47, + "maxMs": 2 + }, + "/gateway": { + "count": 33, + "totalMs": 7, + "maxMs": 1 + }, + "/playercount": { + "count": 43, + "totalMs": 3, + "maxMs": 1 + }, + "/worldfeed": { + "count": 6, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 11, + "totalMs": 2, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 7, + "totalMs": 19, + "maxMs": 5 + }, + "/api/market/*?limit&sort": { + "count": 1, + "totalMs": 7, + "maxMs": 7 + }, + "/config819086852": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/player/*?profile": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot?bot&password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/tinymidipcm.wasm": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/client/SCC1_Florestan.sf2": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 6, + "totalMs": 2, + "maxMs": 1 + }, + "/bot/ondemandworker.js": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/engine-status": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T06:16:22.515Z", + "requestMs": 105, + "tick": 518, + "tickRate": 300, + "players": 756, + "pendingLogins": 0, + "npcs": 8144, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 85.6, + "world": 3.5, + "clientIn": 4.6, + "npc": 13.3, + "player": 16.2, + "logout": 0.2, + "login": 3.9, + "zone": 0.3, + "clientOut": 26.1, + "cleanup": 2.9, + "bandwidthIn": 913, + "bandwidthOut": 34601.1, + "interval": 300 + }, + "peak": { + "cycle": 258, + "world": 18, + "clientIn": 16, + "npc": 49, + "player": 40, + "logout": 1, + "login": 61, + "zone": 9, + "clientOut": 74, + "cleanup": 8, + "bandwidthIn": 1593, + "bandwidthOut": 64701, + "interval": 310 + }, + "last": { + "cycle": 60, + "world": 2, + "clientIn": 3, + "npc": 10, + "player": 10, + "logout": 0, + "login": 0, + "zone": 0, + "clientOut": 23, + "cleanup": 2, + "bandwidthIn": 875, + "bandwidthOut": 30336 + }, + "heapMB": 434, + "rssMB": 976, + "web": { + "current": { + "start": 1791699343574, + "end": 1791699382550, + "routes": { + "/hiscores/player/*": { + "count": 320, + "totalMs": 249, + "maxMs": 10 + }, + "/": { + "count": 313, + "totalMs": 472, + "maxMs": 9 + }, + "/playerpositions": { + "count": 158, + "totalMs": 31, + "maxMs": 2 + }, + "/api/market/*?days": { + "count": 4, + "totalMs": 7, + "maxMs": 4 + }, + "/state/jackthief?password": { + "count": 5, + "totalMs": 43, + "maxMs": 23 + }, + "/bot?bot&password": { + "count": 10, + "totalMs": 24, + "maxMs": 5 + }, + "/playercount": { + "count": 35, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 10, + "totalMs": 3, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 10, + "totalMs": 3, + "maxMs": 1 + }, + "/favicon-disconnected.ico": { + "count": 19, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 10, + "totalMs": 2, + "maxMs": 2 + }, + "/crc": { + "count": 81, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/ondemandworker.js": { + "count": 10, + "totalMs": 2, + "maxMs": 1 + }, + "/status/:bot": { + "count": 233, + "totalMs": 1005, + "maxMs": 144 + }, + "/gateway/state/*?password": { + "count": 2, + "totalMs": 1, + "maxMs": 1 + }, + "/gateway": { + "count": 26, + "totalMs": 6, + "maxMs": 1 + }, + "/worldfeed": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 14, + "totalMs": 4, + "maxMs": 1 + }, + "/config819086852": { + "count": 6, + "totalMs": 1, + "maxMs": 1 + }, + "/interface282644100": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + }, + "/playertraces?hours": { + "count": 1, + "totalMs": 5231, + "maxMs": 5231 + }, + "/api/version": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*": { + "count": 2, + "totalMs": 2, + "maxMs": 2 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791699283523, + "end": 1791699343574, + "routes": { + "/api/market/*?days": { + "count": 540, + "totalMs": 94, + "maxMs": 8 + }, + "/": { + "count": 583, + "totalMs": 865, + "maxMs": 16 + }, + "/api/version": { + "count": 44, + "totalMs": 2, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 480, + "totalMs": 317, + "maxMs": 5 + }, + "/crc": { + "count": 111, + "totalMs": 4, + "maxMs": 1 + }, + "/status/:bot": { + "count": 351, + "totalMs": 1169, + "maxMs": 90 + }, + "/api/market/*?days&limit&q": { + "count": 19, + "totalMs": 75, + "maxMs": 9 + }, + "/playerpositions": { + "count": 242, + "totalMs": 47, + "maxMs": 2 + }, + "/gateway": { + "count": 33, + "totalMs": 7, + "maxMs": 1 + }, + "/playercount": { + "count": 43, + "totalMs": 3, + "maxMs": 1 + }, + "/worldfeed": { + "count": 6, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 11, + "totalMs": 2, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 7, + "totalMs": 19, + "maxMs": 5 + }, + "/api/market/*?limit&sort": { + "count": 1, + "totalMs": 7, + "maxMs": 7 + }, + "/config819086852": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/player/*?profile": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot?bot&password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/tinymidipcm.wasm": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/client/SCC1_Florestan.sf2": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 6, + "totalMs": 2, + "maxMs": 1 + }, + "/bot/ondemandworker.js": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/engine-status": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T06:16:37.509Z", + "requestMs": 98, + "tick": 568, + "tickRate": 300, + "players": 762, + "pendingLogins": 0, + "npcs": 8144, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 85.5, + "world": 3.5, + "clientIn": 4.6, + "npc": 13.3, + "player": 16.2, + "logout": 0.2, + "login": 3.3, + "zone": 0.4, + "clientOut": 26.6, + "cleanup": 2.9, + "bandwidthIn": 892.2, + "bandwidthOut": 34315.8, + "interval": 300 + }, + "peak": { + "cycle": 258, + "world": 13, + "clientIn": 16, + "npc": 49, + "player": 40, + "logout": 1, + "login": 61, + "zone": 9, + "clientOut": 74, + "cleanup": 8, + "bandwidthIn": 1593, + "bandwidthOut": 64701, + "interval": 310 + }, + "last": { + "cycle": 63, + "world": 3, + "clientIn": 3, + "npc": 11, + "player": 11, + "logout": 0, + "login": 0, + "zone": 0, + "clientOut": 22, + "cleanup": 2, + "bandwidthIn": 785, + "bandwidthOut": 35059 + }, + "heapMB": 464, + "rssMB": 1056, + "web": { + "current": { + "start": 1791699343574, + "end": 1791699397545, + "routes": { + "/hiscores/player/*": { + "count": 440, + "totalMs": 318, + "maxMs": 10 + }, + "/": { + "count": 389, + "totalMs": 578, + "maxMs": 9 + }, + "/playerpositions": { + "count": 218, + "totalMs": 43, + "maxMs": 2 + }, + "/api/market/*?days": { + "count": 10, + "totalMs": 10, + "maxMs": 4 + }, + "/state/jackthief?password": { + "count": 7, + "totalMs": 50, + "maxMs": 23 + }, + "/bot?bot&password": { + "count": 12, + "totalMs": 26, + "maxMs": 5 + }, + "/playercount": { + "count": 44, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 12, + "totalMs": 5, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 12, + "totalMs": 3, + "maxMs": 1 + }, + "/favicon-disconnected.ico": { + "count": 22, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 12, + "totalMs": 2, + "maxMs": 2 + }, + "/crc": { + "count": 91, + "totalMs": 2, + "maxMs": 1 + }, + "/bot/ondemandworker.js": { + "count": 12, + "totalMs": 2, + "maxMs": 1 + }, + "/status/:bot": { + "count": 299, + "totalMs": 1440, + "maxMs": 144 + }, + "/gateway/state/*?password": { + "count": 5, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway": { + "count": 38, + "totalMs": 7, + "maxMs": 1 + }, + "/worldfeed": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 21, + "totalMs": 4, + "maxMs": 1 + }, + "/config819086852": { + "count": 6, + "totalMs": 1, + "maxMs": 1 + }, + "/interface282644100": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + }, + "/playertraces?hours": { + "count": 1, + "totalMs": 5231, + "maxMs": 5231 + }, + "/api/version": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 6, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*": { + "count": 2, + "totalMs": 2, + "maxMs": 2 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791699283523, + "end": 1791699343574, + "routes": { + "/api/market/*?days": { + "count": 540, + "totalMs": 94, + "maxMs": 8 + }, + "/": { + "count": 583, + "totalMs": 865, + "maxMs": 16 + }, + "/api/version": { + "count": 44, + "totalMs": 2, + "maxMs": 1 + }, + "/hiscores/player/*": { + "count": 480, + "totalMs": 317, + "maxMs": 5 + }, + "/crc": { + "count": 111, + "totalMs": 4, + "maxMs": 1 + }, + "/status/:bot": { + "count": 351, + "totalMs": 1169, + "maxMs": 90 + }, + "/api/market/*?days&limit&q": { + "count": 19, + "totalMs": 75, + "maxMs": 9 + }, + "/playerpositions": { + "count": 242, + "totalMs": 47, + "maxMs": 2 + }, + "/gateway": { + "count": 33, + "totalMs": 7, + "maxMs": 1 + }, + "/playercount": { + "count": 43, + "totalMs": 3, + "maxMs": 1 + }, + "/worldfeed": { + "count": 6, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway/state/*?password": { + "count": 11, + "totalMs": 2, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 7, + "totalMs": 19, + "maxMs": 5 + }, + "/api/market/*?limit&sort": { + "count": 1, + "totalMs": 7, + "maxMs": 7 + }, + "/config819086852": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/hiscores/player/*?profile": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot?bot&password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/bot/tinymidipcm.wasm": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/client/SCC1_Florestan.sf2": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-disconnected.ico": { + "count": 6, + "totalMs": 2, + "maxMs": 1 + }, + "/bot/ondemandworker.js": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/favicon.ico": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/engine-status": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T06:16:52.523Z", + "requestMs": 111, + "tick": 618, + "tickRate": 300, + "players": 763, + "pendingLogins": 0, + "npcs": 8144, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 85.4, + "world": 3.5, + "clientIn": 4.6, + "npc": 13.1, + "player": 16.3, + "logout": 0.2, + "login": 2.8, + "zone": 0.4, + "clientOut": 26.8, + "cleanup": 2.9, + "bandwidthIn": 886.4, + "bandwidthOut": 33984.2, + "interval": 300 + }, + "peak": { + "cycle": 258, + "world": 13, + "clientIn": 16, + "npc": 49, + "player": 40, + "logout": 1, + "login": 61, + "zone": 9, + "clientOut": 74, + "cleanup": 8, + "bandwidthIn": 1593, + "bandwidthOut": 55107, + "interval": 342 + }, + "last": { + "cycle": 95, + "world": 4, + "clientIn": 5, + "npc": 13, + "player": 23, + "logout": 0, + "login": 0, + "zone": 1, + "clientOut": 29, + "cleanup": 4, + "bandwidthIn": 875, + "bandwidthOut": 34226 + }, + "heapMB": 437, + "rssMB": 993, + "web": { + "current": { + "start": 1791699403652, + "end": 1791699412558, + "routes": { + "/crc": { + "count": 5, + "totalMs": 0, + "maxMs": 0 + }, + "/playerpositions": { + "count": 35, + "totalMs": 5, + "maxMs": 2 + }, + "/favicon-active.ico": { + "count": 5, + "totalMs": 0, + "maxMs": 0 + }, + "/playercount": { + "count": 12, + "totalMs": 1, + "maxMs": 1 + }, + "/": { + "count": 47, + "totalMs": 59, + "maxMs": 2 + }, + "/hiscores/player/*": { + "count": 131, + "totalMs": 144, + "maxMs": 23 + }, + "/api/market/*?days": { + "count": 46, + "totalMs": 10, + "maxMs": 3 + }, + "/status/:bot": { + "count": 3, + "totalMs": 5, + "maxMs": 3 + }, + "/gateway": { + "count": 6, + "totalMs": 2, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores?category": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/mapview": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/mapview.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/worldmap.jag": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791699343574, + "end": 1791699403652, + "routes": { + "/hiscores/player/*": { + "count": 488, + "totalMs": 350, + "maxMs": 10 + }, + "/": { + "count": 420, + "totalMs": 618, + "maxMs": 9 + }, + "/playerpositions": { + "count": 239, + "totalMs": 47, + "maxMs": 2 + }, + "/api/market/*?days": { + "count": 16, + "totalMs": 13, + "maxMs": 4 + }, + "/state/jackthief?password": { + "count": 8, + "totalMs": 55, + "maxMs": 23 + }, + "/bot?bot&password": { + "count": 12, + "totalMs": 26, + "maxMs": 5 + }, + "/playercount": { + "count": 49, + "totalMs": 2, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 12, + "totalMs": 5, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 12, + "totalMs": 3, + "maxMs": 1 + }, + "/favicon-disconnected.ico": { + "count": 22, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 12, + "totalMs": 2, + "maxMs": 2 + }, + "/crc": { + "count": 96, + "totalMs": 2, + "maxMs": 1 + }, + "/bot/ondemandworker.js": { + "count": 12, + "totalMs": 2, + "maxMs": 1 + }, + "/status/:bot": { + "count": 350, + "totalMs": 1929, + "maxMs": 144 + }, + "/gateway/state/*?password": { + "count": 7, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway": { + "count": 39, + "totalMs": 7, + "maxMs": 1 + }, + "/worldfeed": { + "count": 5, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 22, + "totalMs": 4, + "maxMs": 1 + }, + "/config819086852": { + "count": 7, + "totalMs": 1, + "maxMs": 1 + }, + "/interface282644100": { + "count": 7, + "totalMs": 0, + "maxMs": 0 + }, + "/playertraces?hours": { + "count": 1, + "totalMs": 5231, + "maxMs": 5231 + }, + "/api/version": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 7, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*": { + "count": 2, + "totalMs": 2, + "maxMs": 2 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T06:17:07.531Z", + "requestMs": 117, + "tick": 668, + "tickRate": 300, + "players": 763, + "pendingLogins": 0, + "npcs": 8144, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 87.6, + "world": 3.7, + "clientIn": 4.6, + "npc": 13.2, + "player": 17, + "logout": 0.2, + "login": 2.8, + "zone": 0.4, + "clientOut": 27.6, + "cleanup": 3, + "bandwidthIn": 875.4, + "bandwidthOut": 33723.4, + "interval": 300 + }, + "peak": { + "cycle": 258, + "world": 14, + "clientIn": 16, + "npc": 49, + "player": 59, + "logout": 1, + "login": 61, + "zone": 9, + "clientOut": 74, + "cleanup": 8, + "bandwidthIn": 1593, + "bandwidthOut": 54066, + "interval": 342 + }, + "last": { + "cycle": 89, + "world": 3, + "clientIn": 4, + "npc": 13, + "player": 21, + "logout": 0, + "login": 0, + "zone": 0, + "clientOut": 28, + "cleanup": 4, + "bandwidthIn": 800, + "bandwidthOut": 37016 + }, + "heapMB": 431, + "rssMB": 979, + "web": { + "current": { + "start": 1791699403652, + "end": 1791699427566, + "routes": { + "/crc": { + "count": 22, + "totalMs": 1, + "maxMs": 1 + }, + "/playerpositions": { + "count": 107, + "totalMs": 14, + "maxMs": 2 + }, + "/favicon-active.ico": { + "count": 12, + "totalMs": 2, + "maxMs": 1 + }, + "/playercount": { + "count": 17, + "totalMs": 2, + "maxMs": 1 + }, + "/": { + "count": 136, + "totalMs": 173, + "maxMs": 3 + }, + "/hiscores/player/*": { + "count": 273, + "totalMs": 229, + "maxMs": 23 + }, + "/api/market/*?days": { + "count": 57, + "totalMs": 12, + "maxMs": 3 + }, + "/status/:bot": { + "count": 117, + "totalMs": 628, + "maxMs": 18 + }, + "/gateway": { + "count": 8, + "totalMs": 3, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 3, + "totalMs": 11, + "maxMs": 9 + }, + "/hiscores?category": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/mapview": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/mapview.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 4, + "totalMs": 1, + "maxMs": 1 + }, + "/worldmap.jag": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 2, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*": { + "count": 2, + "totalMs": 3, + "maxMs": 3 + }, + "/config819086852": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/interface282644100": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791699343574, + "end": 1791699403652, + "routes": { + "/hiscores/player/*": { + "count": 488, + "totalMs": 350, + "maxMs": 10 + }, + "/": { + "count": 420, + "totalMs": 618, + "maxMs": 9 + }, + "/playerpositions": { + "count": 239, + "totalMs": 47, + "maxMs": 2 + }, + "/api/market/*?days": { + "count": 16, + "totalMs": 13, + "maxMs": 4 + }, + "/state/jackthief?password": { + "count": 8, + "totalMs": 55, + "maxMs": 23 + }, + "/bot?bot&password": { + "count": 12, + "totalMs": 26, + "maxMs": 5 + }, + "/playercount": { + "count": 49, + "totalMs": 2, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 12, + "totalMs": 5, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 12, + "totalMs": 3, + "maxMs": 1 + }, + "/favicon-disconnected.ico": { + "count": 22, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 12, + "totalMs": 2, + "maxMs": 2 + }, + "/crc": { + "count": 96, + "totalMs": 2, + "maxMs": 1 + }, + "/bot/ondemandworker.js": { + "count": 12, + "totalMs": 2, + "maxMs": 1 + }, + "/status/:bot": { + "count": 350, + "totalMs": 1929, + "maxMs": 144 + }, + "/gateway/state/*?password": { + "count": 7, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway": { + "count": 39, + "totalMs": 7, + "maxMs": 1 + }, + "/worldfeed": { + "count": 5, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 22, + "totalMs": 4, + "maxMs": 1 + }, + "/config819086852": { + "count": 7, + "totalMs": 1, + "maxMs": 1 + }, + "/interface282644100": { + "count": 7, + "totalMs": 0, + "maxMs": 0 + }, + "/playertraces?hours": { + "count": 1, + "totalMs": 5231, + "maxMs": 5231 + }, + "/api/version": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 7, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*": { + "count": 2, + "totalMs": 2, + "maxMs": 2 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T06:17:22.519Z", + "requestMs": 103, + "tick": 718, + "tickRate": 300, + "players": 763, + "pendingLogins": 0, + "npcs": 8144, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 88, + "world": 3.6, + "clientIn": 4.5, + "npc": 13, + "player": 17.1, + "logout": 0.2, + "login": 3.8, + "zone": 0.3, + "clientOut": 27.5, + "cleanup": 3.1, + "bandwidthIn": 875.9, + "bandwidthOut": 34109, + "interval": 300 + }, + "peak": { + "cycle": 258, + "world": 14, + "clientIn": 16, + "npc": 49, + "player": 59, + "logout": 1, + "login": 66, + "zone": 4, + "clientOut": 74, + "cleanup": 8, + "bandwidthIn": 1261, + "bandwidthOut": 54066, + "interval": 342 + }, + "last": { + "cycle": 61, + "world": 3, + "clientIn": 4, + "npc": 11, + "player": 8, + "logout": 0, + "login": 0, + "zone": 1, + "clientOut": 22, + "cleanup": 2, + "bandwidthIn": 706, + "bandwidthOut": 31040 + }, + "heapMB": 432, + "rssMB": 1003, + "web": { + "current": { + "start": 1791699403652, + "end": 1791699442554, + "routes": { + "/crc": { + "count": 59, + "totalMs": 2, + "maxMs": 1 + }, + "/playerpositions": { + "count": 177, + "totalMs": 26, + "maxMs": 2 + }, + "/favicon-active.ico": { + "count": 16, + "totalMs": 2, + "maxMs": 1 + }, + "/playercount": { + "count": 34, + "totalMs": 3, + "maxMs": 1 + }, + "/": { + "count": 286, + "totalMs": 366, + "maxMs": 10 + }, + "/hiscores/player/*": { + "count": 393, + "totalMs": 303, + "maxMs": 23 + }, + "/api/market/*?days": { + "count": 64, + "totalMs": 18, + "maxMs": 4 + }, + "/status/:bot": { + "count": 232, + "totalMs": 1950, + "maxMs": 26 + }, + "/gateway": { + "count": 15, + "totalMs": 4, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 5, + "totalMs": 30, + "maxMs": 17 + }, + "/hiscores?category": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/mapview": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/mapview.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 5, + "totalMs": 1, + "maxMs": 1 + }, + "/worldmap.jag": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*": { + "count": 3, + "totalMs": 3, + "maxMs": 3 + }, + "/config819086852": { + "count": 3, + "totalMs": 4, + "maxMs": 3 + }, + "/interface282644100": { + "count": 3, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores/player/*?profile": { + "count": 1, + "totalMs": 3, + "maxMs": 3 + }, + "/api/market/*?limit&q&sort": { + "count": 1, + "totalMs": 7, + "maxMs": 7 + } + } + }, + "last": { + "start": 1791699343574, + "end": 1791699403652, + "routes": { + "/hiscores/player/*": { + "count": 488, + "totalMs": 350, + "maxMs": 10 + }, + "/": { + "count": 420, + "totalMs": 618, + "maxMs": 9 + }, + "/playerpositions": { + "count": 239, + "totalMs": 47, + "maxMs": 2 + }, + "/api/market/*?days": { + "count": 16, + "totalMs": 13, + "maxMs": 4 + }, + "/state/jackthief?password": { + "count": 8, + "totalMs": 55, + "maxMs": 23 + }, + "/bot?bot&password": { + "count": 12, + "totalMs": 26, + "maxMs": 5 + }, + "/playercount": { + "count": 49, + "totalMs": 2, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 12, + "totalMs": 5, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 12, + "totalMs": 3, + "maxMs": 1 + }, + "/favicon-disconnected.ico": { + "count": 22, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 12, + "totalMs": 2, + "maxMs": 2 + }, + "/crc": { + "count": 96, + "totalMs": 2, + "maxMs": 1 + }, + "/bot/ondemandworker.js": { + "count": 12, + "totalMs": 2, + "maxMs": 1 + }, + "/status/:bot": { + "count": 350, + "totalMs": 1929, + "maxMs": 144 + }, + "/gateway/state/*?password": { + "count": 7, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway": { + "count": 39, + "totalMs": 7, + "maxMs": 1 + }, + "/worldfeed": { + "count": 5, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 22, + "totalMs": 4, + "maxMs": 1 + }, + "/config819086852": { + "count": 7, + "totalMs": 1, + "maxMs": 1 + }, + "/interface282644100": { + "count": 7, + "totalMs": 0, + "maxMs": 0 + }, + "/playertraces?hours": { + "count": 1, + "totalMs": 5231, + "maxMs": 5231 + }, + "/api/version": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 7, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*": { + "count": 2, + "totalMs": 2, + "maxMs": 2 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + }, + { + "capturedAt": "2026-10-11T06:17:37.526Z", + "requestMs": 109, + "tick": 768, + "tickRate": 300, + "players": 766, + "pendingLogins": 0, + "npcs": 8142, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 86.3, + "world": 3.5, + "clientIn": 4.4, + "npc": 12.4, + "player": 17.3, + "logout": 0.2, + "login": 3.1, + "zone": 0.3, + "clientOut": 27.4, + "cleanup": 3, + "bandwidthIn": 885.1, + "bandwidthOut": 34713.9, + "interval": 300 + }, + "peak": { + "cycle": 210, + "world": 23, + "clientIn": 12, + "npc": 47, + "player": 59, + "logout": 1, + "login": 66, + "zone": 4, + "clientOut": 73, + "cleanup": 8, + "bandwidthIn": 1194, + "bandwidthOut": 54066, + "interval": 342 + }, + "last": { + "cycle": 92, + "world": 4, + "clientIn": 4, + "npc": 12, + "player": 19, + "logout": 0, + "login": 0, + "zone": 0, + "clientOut": 31, + "cleanup": 2, + "bandwidthIn": 1046, + "bandwidthOut": 35366 + }, + "heapMB": 435, + "rssMB": 1066, + "web": { + "current": { + "start": 1791699403652, + "end": 1791699457560, + "routes": { + "/crc": { + "count": 70, + "totalMs": 3, + "maxMs": 1 + }, + "/playerpositions": { + "count": 247, + "totalMs": 39, + "maxMs": 2 + }, + "/favicon-active.ico": { + "count": 17, + "totalMs": 2, + "maxMs": 1 + }, + "/playercount": { + "count": 43, + "totalMs": 3, + "maxMs": 1 + }, + "/": { + "count": 366, + "totalMs": 475, + "maxMs": 10 + }, + "/hiscores/player/*": { + "count": 513, + "totalMs": 408, + "maxMs": 23 + }, + "/api/market/*?days": { + "count": 64, + "totalMs": 18, + "maxMs": 4 + }, + "/status/:bot": { + "count": 298, + "totalMs": 2485, + "maxMs": 26 + }, + "/gateway": { + "count": 21, + "totalMs": 4, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 7, + "totalMs": 34, + "maxMs": 17 + }, + "/hiscores?category": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/mapview": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/mapview.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 6, + "totalMs": 1, + "maxMs": 1 + }, + "/worldmap.jag": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*": { + "count": 3, + "totalMs": 3, + "maxMs": 3 + }, + "/config819086852": { + "count": 3, + "totalMs": 4, + "maxMs": 3 + }, + "/interface282644100": { + "count": 3, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores/player/*?profile": { + "count": 1, + "totalMs": 3, + "maxMs": 3 + }, + "/api/market/*?limit&q&sort": { + "count": 1, + "totalMs": 7, + "maxMs": 7 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791699343574, + "end": 1791699403652, + "routes": { + "/hiscores/player/*": { + "count": 488, + "totalMs": 350, + "maxMs": 10 + }, + "/": { + "count": 420, + "totalMs": 618, + "maxMs": 9 + }, + "/playerpositions": { + "count": 239, + "totalMs": 47, + "maxMs": 2 + }, + "/api/market/*?days": { + "count": 16, + "totalMs": 13, + "maxMs": 4 + }, + "/state/jackthief?password": { + "count": 8, + "totalMs": 55, + "maxMs": 23 + }, + "/bot?bot&password": { + "count": 12, + "totalMs": 26, + "maxMs": 5 + }, + "/playercount": { + "count": 49, + "totalMs": 2, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 12, + "totalMs": 5, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 12, + "totalMs": 3, + "maxMs": 1 + }, + "/favicon-disconnected.ico": { + "count": 22, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 12, + "totalMs": 2, + "maxMs": 2 + }, + "/crc": { + "count": 96, + "totalMs": 2, + "maxMs": 1 + }, + "/bot/ondemandworker.js": { + "count": 12, + "totalMs": 2, + "maxMs": 1 + }, + "/status/:bot": { + "count": 350, + "totalMs": 1929, + "maxMs": 144 + }, + "/gateway/state/*?password": { + "count": 7, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway": { + "count": 39, + "totalMs": 7, + "maxMs": 1 + }, + "/worldfeed": { + "count": 5, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 22, + "totalMs": 4, + "maxMs": 1 + }, + "/config819086852": { + "count": 7, + "totalMs": 1, + "maxMs": 1 + }, + "/interface282644100": { + "count": 7, + "totalMs": 0, + "maxMs": 0 + }, + "/playertraces?hours": { + "count": 1, + "totalMs": 5231, + "maxMs": 5231 + }, + "/api/version": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 7, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*": { + "count": 2, + "totalMs": 2, + "maxMs": 2 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + } + ], + "finalRollingWindow": { + "capturedAt": "2026-10-11T06:17:37.526Z", + "requestMs": 109, + "tick": 768, + "tickRate": 300, + "players": 766, + "pendingLogins": 0, + "npcs": 8142, + "zonesTracking": 0, + "window": 300, + "overBudget": 0, + "avg": { + "cycle": 86.3, + "world": 3.5, + "clientIn": 4.4, + "npc": 12.4, + "player": 17.3, + "logout": 0.2, + "login": 3.1, + "zone": 0.3, + "clientOut": 27.4, + "cleanup": 3, + "bandwidthIn": 885.1, + "bandwidthOut": 34713.9, + "interval": 300 + }, + "peak": { + "cycle": 210, + "world": 23, + "clientIn": 12, + "npc": 47, + "player": 59, + "logout": 1, + "login": 66, + "zone": 4, + "clientOut": 73, + "cleanup": 8, + "bandwidthIn": 1194, + "bandwidthOut": 54066, + "interval": 342 + }, + "last": { + "cycle": 92, + "world": 4, + "clientIn": 4, + "npc": 12, + "player": 19, + "logout": 0, + "login": 0, + "zone": 0, + "clientOut": 31, + "cleanup": 2, + "bandwidthIn": 1046, + "bandwidthOut": 35366 + }, + "heapMB": 435, + "rssMB": 1066, + "web": { + "current": { + "start": 1791699403652, + "end": 1791699457560, + "routes": { + "/crc": { + "count": 70, + "totalMs": 3, + "maxMs": 1 + }, + "/playerpositions": { + "count": 247, + "totalMs": 39, + "maxMs": 2 + }, + "/favicon-active.ico": { + "count": 17, + "totalMs": 2, + "maxMs": 1 + }, + "/playercount": { + "count": 43, + "totalMs": 3, + "maxMs": 1 + }, + "/": { + "count": 366, + "totalMs": 475, + "maxMs": 10 + }, + "/hiscores/player/*": { + "count": 513, + "totalMs": 408, + "maxMs": 23 + }, + "/api/market/*?days": { + "count": 64, + "totalMs": 18, + "maxMs": 4 + }, + "/status/:bot": { + "count": 298, + "totalMs": 2485, + "maxMs": 26 + }, + "/gateway": { + "count": 21, + "totalMs": 4, + "maxMs": 1 + }, + "/state/jackthief?password": { + "count": 7, + "totalMs": 34, + "maxMs": 17 + }, + "/hiscores?category": { + "count": 1, + "totalMs": 1, + "maxMs": 1 + }, + "/mapview": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/client/mapview.js": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 6, + "totalMs": 1, + "maxMs": 1 + }, + "/worldmap.jag": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + }, + "/gateway/state/*?password": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/worldfeed": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*": { + "count": 3, + "totalMs": 3, + "maxMs": 3 + }, + "/config819086852": { + "count": 3, + "totalMs": 4, + "maxMs": 3 + }, + "/interface282644100": { + "count": 3, + "totalMs": 1, + "maxMs": 1 + }, + "/hiscores/player/*?profile": { + "count": 1, + "totalMs": 3, + "maxMs": 3 + }, + "/api/market/*?limit&q&sort": { + "count": 1, + "totalMs": 7, + "maxMs": 7 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + }, + "last": { + "start": 1791699343574, + "end": 1791699403652, + "routes": { + "/hiscores/player/*": { + "count": 488, + "totalMs": 350, + "maxMs": 10 + }, + "/": { + "count": 420, + "totalMs": 618, + "maxMs": 9 + }, + "/playerpositions": { + "count": 239, + "totalMs": 47, + "maxMs": 2 + }, + "/api/market/*?days": { + "count": 16, + "totalMs": 13, + "maxMs": 4 + }, + "/state/jackthief?password": { + "count": 8, + "totalMs": 55, + "maxMs": 23 + }, + "/bot?bot&password": { + "count": 12, + "totalMs": 26, + "maxMs": 5 + }, + "/playercount": { + "count": 49, + "totalMs": 2, + "maxMs": 1 + }, + "/bot/client.js?v": { + "count": 12, + "totalMs": 5, + "maxMs": 1 + }, + "/bot/tinymidipcm.wasm": { + "count": 12, + "totalMs": 3, + "maxMs": 1 + }, + "/favicon-disconnected.ico": { + "count": 22, + "totalMs": 0, + "maxMs": 0 + }, + "/client/SCC1_Florestan.sf2": { + "count": 12, + "totalMs": 2, + "maxMs": 2 + }, + "/crc": { + "count": 96, + "totalMs": 2, + "maxMs": 1 + }, + "/bot/ondemandworker.js": { + "count": 12, + "totalMs": 2, + "maxMs": 1 + }, + "/status/:bot": { + "count": 350, + "totalMs": 1929, + "maxMs": 144 + }, + "/gateway/state/*?password": { + "count": 7, + "totalMs": 2, + "maxMs": 1 + }, + "/gateway": { + "count": 39, + "totalMs": 7, + "maxMs": 1 + }, + "/worldfeed": { + "count": 5, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon.ico": { + "count": 22, + "totalMs": 4, + "maxMs": 1 + }, + "/config819086852": { + "count": 7, + "totalMs": 1, + "maxMs": 1 + }, + "/interface282644100": { + "count": 7, + "totalMs": 0, + "maxMs": 0 + }, + "/playertraces?hours": { + "count": 1, + "totalMs": 5231, + "maxMs": 5231 + }, + "/api/version": { + "count": 4, + "totalMs": 0, + "maxMs": 0 + }, + "/favicon-active.ico": { + "count": 7, + "totalMs": 0, + "maxMs": 0 + }, + "/api/market/*": { + "count": 2, + "totalMs": 2, + "maxMs": 2 + }, + "/gateway/chat/*?limit&password": { + "count": 1, + "totalMs": 0, + "maxMs": 0 + } + } + } + } + }, + "finalFleet": { + "at": "2026-10-11T06:16:24.508Z", + "mode": "kalphite-renewable-v219", + "pid": 2595191, + "freshness": { + "fresh": 30, + "total": 30, + "expected": 30 + }, + "combat": { + "paused": false, + "pauseReason": null, + "kills": 16385, + "lastKillAt": "2026-10-11T06:11:37.144Z", + "minutesSinceKill": 5, + "ready": 13, + "required": 16, + "released": false, + "missing": [ + "goo004", + "goo008", + "goo009" + ], + "underground": [] + } + }, + "finalSummary": { + "players": 766, + "averageTickIntervalMs": 300, + "averageWorkMs": 86.3, + "peakWorkMs": 210, + "peakIntervalMs": 342, + "overBudgetWorkCycles": 0, + "pendingLogins": 0, + "note": "Player load recovering after restart; not a controlled comparison with1140-player pre-deploy baseline. Early warm-up sample included1504ms wall interval." + } + } +} diff --git a/package.json b/package.json index e13c6f8cc..e54a10c36 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "docs:api": "bun sdk/generate-api-docs.ts", "docs:api:check": "bun sdk/generate-api-docs.ts --check", "fetch-collision-data": "bun sdk/fetch-collision-data.ts", - "test": "bun test sdk/test server/webclient/src/bot server/webclient/src/util server/webclient/src/lite server/webclient/src/mapview server/engine/test/market.test.ts server/engine/test/market-web.test.ts server/engine/test/item-search.test.ts server/engine/test/file-stream.test.ts server/engine/test/get-ip.test.ts server/engine/test/bank-hiscores.test.ts server/engine/test/reconnect.test.ts server/engine/test/worldfeed.test.ts server/gateway/state-fanout.test.ts", + "test": "bun test sdk/test server/webclient/src/bot server/webclient/src/util server/webclient/src/lite server/webclient/src/mapview server/engine/test/market.test.ts server/engine/test/market-web.test.ts server/engine/test/item-search.test.ts server/engine/test/file-stream.test.ts server/engine/test/get-ip.test.ts server/engine/test/bank-hiscores.test.ts server/engine/test/reconnect.test.ts server/engine/test/worldfeed.test.ts server/gateway/state-fanout.test.ts server/engine/test/hiscores-performance.test.ts", "typecheck": "tsc --noEmit", "typecheck:webclient": "tsc --noEmit -p server/webclient/tsconfig.json", "test:market:integration": "cd server/engine && bun test/market-integration.ts && bun test/market-recovery.ts && bun test/market-protocol.ts && bun test/market-disabled.ts" diff --git a/server/engine/prisma/multiworld/migrations/20261011000000_hiscore_rank_indexes/migration.sql b/server/engine/prisma/multiworld/migrations/20261011000000_hiscore_rank_indexes/migration.sql new file mode 100644 index 000000000..9c06af6b0 --- /dev/null +++ b/server/engine/prisma/multiworld/migrations/20261011000000_hiscore_rank_indexes/migration.sql @@ -0,0 +1,2 @@ +CREATE INDEX `hiscore_rank` ON `hiscore`(`profile`, `type`, `level` DESC, `playtime`, `account_id`); +CREATE INDEX `hiscore_large_rank` ON `hiscore_large`(`profile`, `type`, `level` DESC, `playtime`, `account_id`); diff --git a/server/engine/prisma/multiworld/schema.prisma b/server/engine/prisma/multiworld/schema.prisma index 9331a8fb1..b6af26e62 100644 --- a/server/engine/prisma/multiworld/schema.prisma +++ b/server/engine/prisma/multiworld/schema.prisma @@ -55,6 +55,7 @@ model hiscore { date DateTime @default(now()) @updatedAt @@id([profile, type, account_id]) + @@index([profile, type, level(sort: Desc), playtime, account_id], map: "hiscore_rank") } model hiscore_large { @@ -68,6 +69,7 @@ model hiscore_large { date DateTime @default(now()) @updatedAt @@id([profile, type, account_id]) + @@index([profile, type, level(sort: Desc), playtime, account_id], map: "hiscore_large_rank") } model hiscore_outfit { diff --git a/server/engine/prisma/singleworld/migrations/20261011000000_hiscore_rank_indexes/migration.sql b/server/engine/prisma/singleworld/migrations/20261011000000_hiscore_rank_indexes/migration.sql new file mode 100644 index 000000000..c9e1cc0d4 --- /dev/null +++ b/server/engine/prisma/singleworld/migrations/20261011000000_hiscore_rank_indexes/migration.sql @@ -0,0 +1,2 @@ +CREATE INDEX "hiscore_rank" ON "hiscore"("profile", "type", "level" DESC, "playtime", "account_id"); +CREATE INDEX "hiscore_large_rank" ON "hiscore_large"("profile", "type", "level" DESC, "playtime", "account_id"); diff --git a/server/engine/prisma/singleworld/schema.prisma b/server/engine/prisma/singleworld/schema.prisma index bc4f71ccb..42dd63231 100644 --- a/server/engine/prisma/singleworld/schema.prisma +++ b/server/engine/prisma/singleworld/schema.prisma @@ -55,6 +55,7 @@ model hiscore { date DateTime @default(now()) @updatedAt @@id([profile, type, account_id]) + @@index([profile, type, level(sort: Desc), playtime, account_id], map: "hiscore_rank") } model hiscore_large { @@ -68,6 +69,7 @@ model hiscore_large { date DateTime @default(now()) @updatedAt @@id([profile, type, account_id]) + @@index([profile, type, level(sort: Desc), playtime, account_id], map: "hiscore_large_rank") } model hiscore_outfit { diff --git a/server/engine/src/engine/World.ts b/server/engine/src/engine/World.ts index efe830fa8..4cc1b0b4c 100644 --- a/server/engine/src/engine/World.ts +++ b/server/engine/src/engine/World.ts @@ -825,6 +825,9 @@ class World { private processLogouts(): void { const start: number = Date.now(); + const started = performance.now(); + const budgetMs = Math.max(1, Math.min(50, this.tickRate / 6)); + let removed = 0; for (const player of this.playerLoop.all()) { let force = false; @@ -852,6 +855,9 @@ class World { } if (player.loggingOut && (force || this.currentTick >= player.preventLogoutUntil)) { + // Keep loggingOut set so deferred accounts are retried next tick. + // Each removal performs a durable whole-world checkpoint. + if (!this.shutdown && (removed >= 10 || (removed > 0 && performance.now() - started >= budgetMs))) continue; player.closeModal(); let queueDiscardable = true; @@ -878,6 +884,7 @@ class World { ScriptRunner.execute(state); this.removePlayer(player); + removed++; } } } @@ -898,6 +905,11 @@ class World { private processLogins(): void { const start: number = Date.now(); + const started = performance.now(); + // One checkpoint cannot be interrupted, but a reconnect burst must not run + // hundreds of whole-world saves in one tick. Leave the rest queued. + const budgetMs = Math.max(1, Math.min(50, this.tickRate / 6)); + let processed = 0; // counted once per tick; sessions admitted below increment it so a burst of // logins from one IP can't all slip under the cap in the same tick @@ -912,7 +924,13 @@ class World { } } - player: for (const player of this.newPlayers) { + player: for (const queuedPlayer of this.newPlayers) { + if (processed >= 10 || (processed > 0 && performance.now() - started >= budgetMs)) break; + this.newPlayers.delete(queuedPlayer); + processed++; + let player = queuedPlayer; + if (player instanceof NetworkPlayer && (!isClientConnected(player) || player.client.state < 0)) continue; + let transferred = false; // prevent logging in if a player save is being flushed if (this.logoutRequests.has(player.username)) { player.addSessionLog(LoggerEventType.ENGINE, 'Tried to log in - old session is mid-logout'); @@ -993,7 +1011,6 @@ class World { const client = isClientConnected(player) ? player.client : null; // Re-create the new player from the existing player's current state - this.newPlayers.delete(player); const transferredPlayer = PlayerLoading.load(player.username, new Packet(existingSave), client); // Preserve login metadata from the original login response @@ -1004,18 +1021,20 @@ class World { transferredPlayer.members = player.members; transferredPlayer.messageCount = player.messageCount; - this.newPlayers.add(transferredPlayer); - // Remove the old player WITHOUT flushing to disk // State is already transferred to the new player, so no need to save // This avoids a race condition where the old logout could interfere with the new player's save + if (other instanceof NetworkPlayer && ipCounts) { + const oldIp = other.client.remoteAddress; + ipCounts.set(oldIp, Math.max(0, (ipCounts.get(oldIp) ?? 0) - 1)); + } this.removePlayerWithoutSave(other); - // Skip the rest of this iteration - transferredPlayer will be processed - // on the next iteration of the outer loop. Without this, the original - // player would continue to the normal login process and get added to - // this.players, causing an infinite loop when transferredPlayer is processed. - continue player; + // Finish admission in this iteration. Deferring the transferred + // player behind the backlog would leave the account out of the world. + player = transferredPlayer; + transferred = true; + break; } // prevent logging in when the server is shutting down @@ -1028,12 +1047,12 @@ class World { continue; } - // per-IP connection cap - reconnects and session transfers never reach here, - // so this only gates net-new sessions + // Session transfers replace an existing slot; only net-new sessions + // are subject to the per-IP connection cap. if (player instanceof NetworkPlayer && ipCounts) { const ip = player.client.remoteAddress; const count = ipCounts.get(ip) ?? 0; - if (count >= World.PLAYER_MAX_PER_IP) { + if (!transferred && count >= World.PLAYER_MAX_PER_IP) { player.addSessionLog(LoggerEventType.ENGINE, `Tried to log in - too many connections from ${ip}`); this.forceLogout(player, 7); continue; @@ -1124,7 +1143,6 @@ class World { staffLvl: player.staffModLevel }); } - this.newPlayers.clear(); this.cycleStats[WorldStat.LOGIN] = Date.now() - start; } @@ -1987,6 +2005,7 @@ class World { tick: this.currentTick, tickRate: this.tickRate, players: this.getTotalPlayers(), + pendingLogins: this.newPlayers.size, npcs: this.getTotalNpcs(), zonesTracking: this.zonesTracking.size, window: n, diff --git a/server/engine/src/engine/entity/BuildArea.ts b/server/engine/src/engine/entity/BuildArea.ts index 9ee1afd30..a817b97c2 100644 --- a/server/engine/src/engine/entity/BuildArea.ts +++ b/server/engine/src/engine/entity/BuildArea.ts @@ -12,6 +12,7 @@ export default class BuildArea { readonly mapsquares: Set; lastBuild: number = -1; + private zoneKey = ''; constructor(player: Player) { this.player = player; @@ -22,6 +23,7 @@ export default class BuildArea { clear(reconnecting: boolean): void { if (!reconnecting) { + this.zoneKey = ''; this.activeZones.clear(); this.loadedZones.clear(); this.mapsquares.clear(); @@ -29,14 +31,15 @@ export default class BuildArea { } rebuildZones(): void { - // update any newly tracked zones - this.activeZones.clear(); - const centerX = CoordGrid.zone(this.player.x); const centerZ = CoordGrid.zone(this.player.z); const originX: number = CoordGrid.zone(this.player.originX); const originZ: number = CoordGrid.zone(this.player.originZ); + const key = `${centerX}:${centerZ}:${originX}:${originZ}:${this.player.level}`; + if (key === this.zoneKey) return; + this.zoneKey = key; + this.activeZones.clear(); const leftX = originX - 6; const rightX = originX + 6; diff --git a/server/engine/src/engine/entity/NetworkPlayer.ts b/server/engine/src/engine/entity/NetworkPlayer.ts index 67ce66e55..07f4adf32 100644 --- a/server/engine/src/engine/entity/NetworkPlayer.ts +++ b/server/engine/src/engine/entity/NetworkPlayer.ts @@ -306,6 +306,8 @@ export class NetworkPlayer extends Player { // update active zones for (const zoneIndex of activeZones) { const zone: Zone = World.gameMap.getZoneIndex(zoneIndex); + // Loaded zones only need processing when the engine tracked a change. + if (loadedZones.has(zoneIndex) && !World.zonesTracking.has(zone)) continue; if (!loadedZones.has(zone.index)) { zone.writeFullFollows(this); } diff --git a/server/engine/src/web/index.ts b/server/engine/src/web/index.ts index ceece0c01..90f70592f 100644 --- a/server/engine/src/web/index.ts +++ b/server/engine/src/web/index.ts @@ -13,6 +13,7 @@ import { handleBugReport } from './pages/bug-report.js'; import { handleDisclaimerPage, handleMapviewPage, handlePublicFiles } from './pages/static.js'; import { WebSocketData, handleWebSocketUpgrade, handleGatewayEndpointGet, websocketHandlers } from './websocket.js'; import { getIp } from './utils.js'; +import { getPlayerPositionsJson } from './worldfeed.js'; export type { WebSocketData }; @@ -82,6 +83,7 @@ export async function startWeb() { } async function handleRequest(req: Request, server: Bun.Server, url: URL): Promise { + if (/^\/hi(?:gh)?scores(?:\/|$)/.test(url.pathname)) server.timeout(req, 60); // Handle WebSocket upgrades first const wsResponse = handleWebSocketUpgrade(req, server, url); if (wsResponse !== undefined) { @@ -129,11 +131,7 @@ async function handleRequest(req: Request, server: Bun.Server, url: URL): Promis // Player positions endpoint if (url.pathname === '/playerpositions' || url.pathname === '/playerpositions/') { - const players: {x: number, z: number, level: number, name: string}[] = []; - for (const player of World.playerLoop.all()) { - players.push({ x: player.x, z: player.z, level: player.level, name: player.displayName }); - } - return new Response(JSON.stringify(players), { + return new Response(getPlayerPositionsJson(), { headers: { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' diff --git a/server/engine/src/web/pages/RankedHiscores.ts b/server/engine/src/web/pages/RankedHiscores.ts new file mode 100644 index 000000000..4d4bff46d --- /dev/null +++ b/server/engine/src/web/pages/RankedHiscores.ts @@ -0,0 +1,54 @@ +import { Worker } from 'node:worker_threads'; + +export type RankedRow = { username: string; level: number; playtime: number }; +type Job = { resolve: (rows: RankedRow[]) => void; reject: (error: Error) => void; timer: ReturnType; request: { profile: string; category: number } }; +let worker: Worker | null = null; +let workerReady = false; +let nextId = 0; +const jobs = new Map(); + +// Only immutable leaderboard rows cross threads; the worker never touches the world. +export function loadRankedList(profile: string, category: number): Promise { + if (!worker) { + const current = new Worker(new URL('./RankedHiscoresWorker.ts', import.meta.url)); + worker = current; + workerReady = false; + const fail = (error: Error) => { + if (worker !== current) return; + worker = null; + void current.terminate(); + for (const job of jobs.values()) { clearTimeout(job.timer); job.reject(error); } + jobs.clear(); + }; + current.on('error', fail); + current.on('exit', code => fail(new Error(`Leaderboard worker exited (${code})`))); + current.on('message', ({ id, rows, error, ready }) => { + if (worker !== current) return; + if (ready) { + workerReady = true; + for (const [id, job] of jobs) current.postMessage({ id, ...job.request }); + return; + } + const job = jobs.get(id); + if (!job) return; + jobs.delete(id); + clearTimeout(job.timer); + if (error) job.reject(new Error(error)); else job.resolve(rows); + if (!jobs.size) current.unref(); + }); + current.unref(); + } + const current = worker; + return new Promise((resolve, reject) => { + const id = ++nextId; + const timer = setTimeout(() => { + // Restart on a stuck query so later refreshes don't accumulate behind it. + if (worker === current) { worker = null; void current.terminate(); } + for (const job of jobs.values()) { clearTimeout(job.timer); job.reject(new Error('Leaderboard refresh timed out')); } + jobs.clear(); + }, 30_000); + jobs.set(id, { resolve, reject, timer, request: { profile, category } }); + current.ref(); + if (workerReady) current.postMessage({ id, profile, category }); + }); +} diff --git a/server/engine/src/web/pages/RankedHiscoresWorker.ts b/server/engine/src/web/pages/RankedHiscoresWorker.ts new file mode 100644 index 000000000..11cd66000 --- /dev/null +++ b/server/engine/src/web/pages/RankedHiscoresWorker.ts @@ -0,0 +1,31 @@ +import { parentPort } from 'node:worker_threads'; +import { db } from '#/db/query.js'; +import Environment from '#/util/Environment.js'; + +// The general SQLite adapter logs errors and returns empty rows. Rankings must +// propagate failures instead, so an unavailable DB cannot erase a good snapshot. +const sqlite = Environment.db.backend !== 'sqlite' ? null : typeof Bun !== 'undefined' + ? new (await import('bun:sqlite')).Database('db.sqlite', { readonly: true }) + : new (await import('node:sqlite')).DatabaseSync('db.sqlite', { readOnly: true }); +sqlite?.exec('PRAGMA busy_timeout = 5000'); + +parentPort!.on('message', async ({ id, profile, category }) => { + try { + const table = category === 0 ? 'hiscore_large' : 'hiscore'; + let query = db.selectFrom(table).innerJoin('account', 'account.id', `${table}.account_id`) + .select(['account.username', `${table}.level`, `${table}.playtime`]) + .where(`${table}.profile`, '=', profile).where(`${table}.type`, '=', category) + .where('account.staffmodlevel', '<=', 1) + .orderBy(`${table}.level`, 'desc').orderBy(`${table}.playtime`, 'asc'); + if (Environment.HISCORES_HIDDEN_NAMES.length) { + query = query.where(eb => eb.not(eb(eb.fn('lower', ['account.username']), 'in', Environment.HISCORES_HIDDEN_NAMES))); + } + const compiled = query.compile(); + const rows = sqlite ? sqlite.prepare(compiled.sql).all(...compiled.parameters as any[]) : await query.execute(); + parentPort!.postMessage({ id, rows }); + } catch (error) { + parentPort!.postMessage({ id, error: String(error) }); + } +}); +// Bun may drop messages sent while top-level async imports are still loading. +parentPort!.postMessage({ ready: true }); diff --git a/server/engine/src/web/pages/hiscores.ts b/server/engine/src/web/pages/hiscores.ts index 091d2d43d..011217658 100644 --- a/server/engine/src/web/pages/hiscores.ts +++ b/server/engine/src/web/pages/hiscores.ts @@ -5,6 +5,7 @@ import { escapeHtml, SKILL_NAMES, ENABLED_SKILLS, QUEST_POINTS_HISCORE_TYPE } fr import { itemSpriteUrl, playerSpriteUrl } from '#/web/sprites/SpriteRenderer.js'; import { parseBankSnapshots, rankMatchingBanks } from './BankHiscores.js'; import type { BankSnapshot } from './BankHiscores.js'; +import { loadRankedList, type RankedRow } from './RankedHiscores.js'; const hiddenNames = Environment.HISCORES_HIDDEN_NAMES; @@ -66,73 +67,50 @@ function formatPlaytime(ticks: number): string { return `${minutes}m`; } -// rs-sdk: ranked lists are served from a short-lived cache. Every hiscores request used to -// materialise the whole hiscore/hiscore_large table (160k+ rows) on the tick thread; a burst -// of page loads was enough to freeze the world for seconds. The list changes on player save -// (autosave is 15 min), so a 60s TTL is invisible to users. -type RankedRow = { username: string; level: number; playtime: number }; -const RANKED_TTL_MS = Number(process.env.HISCORES_CACHE_MS ?? 60_000); -const rankedCache = new Map | null }>(); +// Serve complete snapshots while the read worker refreshes rankings off the tick thread. +const RANKED_TTL_MS = Number(process.env.HISCORES_CACHE_MS ?? 300_000); +type RankedCache = { at: number; rows: RankedRow[] | null; pending: Promise | null }; +const rankedCache = new Map(); -// category 0 = overall (hiscore_large type 0), otherwise hiscore type = category -async function getRankedList(profile: string, category: number): Promise { +export async function getRankedList(profile: string, category: number): Promise { const key = `${profile}:${category}`; - const now = Date.now(); const cached = rankedCache.get(key); - if (cached && now - cached.at < RANKED_TTL_MS) { - return cached.rows; - } - if (cached?.pending) { - return cached.pending; - } - const load = (async () => { - let rows: RankedRow[]; - if (category === 0) { - let query = db - .selectFrom('hiscore_large') - .innerJoin('account', 'account.id', 'hiscore_large.account_id') - .select(['account.username', 'hiscore_large.level', 'hiscore_large.playtime']) - .where('hiscore_large.type', '=', 0) - .where('hiscore_large.profile', '=', profile) - .where('account.staffmodlevel', '<=', 1) - .orderBy('hiscore_large.level', 'desc') - .orderBy('hiscore_large.playtime', 'asc'); - if (hiddenNames.length > 0) { - query = query.where(eb => eb.not(eb(eb.fn('lower', ['account.username']), 'in', hiddenNames))); - } - rows = await query.execute(); - } else { - let query = db - .selectFrom('hiscore') - .innerJoin('account', 'account.id', 'hiscore.account_id') - .select(['account.username', 'hiscore.level', 'hiscore.playtime']) - .where('hiscore.type', '=', category) - .where('hiscore.profile', '=', profile) - .where('account.staffmodlevel', '<=', 1) - .orderBy('hiscore.level', 'desc') - .orderBy('hiscore.playtime', 'asc'); - if (hiddenNames.length > 0) { - query = query.where(eb => eb.not(eb(eb.fn('lower', ['account.username']), 'in', hiddenNames))); - } - rows = await query.execute(); - } - rankedCache.set(key, { at: Date.now(), rows, pending: null }); + if (cached?.pending) return cached.rows ?? cached.pending; + if (cached?.rows && Date.now() - cached.at < RANKED_TTL_MS) return cached.rows; + const entry: RankedCache = { at: cached?.at ?? 0, rows: cached?.rows ?? null, pending: null }; + const load = loadRankedList(profile, category).then(rows => { + entry.rows = rows; + entry.at = Date.now(); return rows; - })(); - rankedCache.set(key, { at: cached?.at ?? 0, rows: cached?.rows ?? [], pending: load }); - try { - return await load; - } catch (err) { + }).catch(error => { + if (entry.rows) { + // Keep a useful snapshot and back off for 30s after a failed refresh. + entry.at = Date.now() - RANKED_TTL_MS + 30_000; + console.warn('[hiscores] refresh failed:', error); + return entry.rows; + } rankedCache.delete(key); - throw err; - } + throw error; + }).finally(() => { entry.pending = null; }); + entry.pending = load; + rankedCache.set(key, entry); + return entry.rows ?? load; } // rank of a player in a ranked list (1-based), or null when absent +// One index per cached snapshot; player pages otherwise scan every ranked list. +const rankIndexes = new WeakMap>(); function rankIn(rows: RankedRow[], username: string): number | null { - const lower = username.toLowerCase(); - const idx = rows.findIndex(r => r.username.toLowerCase() === lower); - return idx === -1 ? null : idx + 1; + let ranks = rankIndexes.get(rows); + if (!ranks) { + ranks = new Map(); + rows.forEach((row, index) => { + const name = row.username.toLowerCase(); + if (!ranks!.has(name)) ranks!.set(name, index + 1); + }); + rankIndexes.set(rows, ranks); + } + return ranks.get(username.toLowerCase()) ?? null; } // "Select hiscore table" sidebar shared by the list pages diff --git a/server/engine/src/web/worldfeed.ts b/server/engine/src/web/worldfeed.ts index 9fd60f739..558be9004 100644 --- a/server/engine/src/web/worldfeed.ts +++ b/server/engine/src/web/worldfeed.ts @@ -50,7 +50,7 @@ import type { WebSocketData } from './websocket.js'; const WORLD_FEED_VERSION = 1; const MAX_RECT_SIZE = 384; const MAX_BUFFERED_BYTES = 1 << 20; -const ROSTER_INTERVAL_TICKS = 5; +const ROSTER_INTERVAL_TICKS = 10; const MAX_CLIENT_MESSAGE_BYTES = 1024; const SLOW_FEED_MS = 20; @@ -591,3 +591,16 @@ function send(ws: ServerWebSocket, msg: FeedRecord | string): voi subscribers.delete(ws); } } + +// Map dashboards can share one immutable JSON snapshot for a second. +let positionsAt = -Infinity; +let positionsJson = '[]'; +export function getPlayerPositionsJson(now = Date.now()): string { + if (now - positionsAt >= 1000 || now < positionsAt) { + positionsJson = JSON.stringify([...World.playerLoop.all()].map(player => ({ + x: player.x, z: player.z, level: player.level, name: player.displayName + }))); + positionsAt = now; + } + return positionsJson; +} diff --git a/server/engine/test/fixtures/ranked-hiscores.ts b/server/engine/test/fixtures/ranked-hiscores.ts new file mode 100644 index 000000000..362cbae65 --- /dev/null +++ b/server/engine/test/fixtures/ranked-hiscores.ts @@ -0,0 +1,49 @@ +import assert from 'node:assert/strict'; +import { Database } from 'bun:sqlite'; +import { db } from '../../src/db/query.js'; +import { loadRankedList } from '../../src/web/pages/RankedHiscores.js'; +import { handleHiscoresPlayerPage, getRankedList } from '../../src/web/pages/hiscores.js'; + +const database = new Database('db.sqlite'); +database.exec(`CREATE TABLE account(id INTEGER PRIMARY KEY,username TEXT,staffmodlevel INTEGER); + CREATE TABLE hiscore(profile TEXT,account_id INTEGER,type INTEGER,level INTEGER,value INTEGER,playtime INTEGER); + CREATE TABLE hiscore_large(profile TEXT,account_id INTEGER,type INTEGER,level INTEGER,value INTEGER,playtime INTEGER); + INSERT INTO account VALUES(1,'Alice',0),(2,'Bob',0),(3,'hidden',0),(4,'staff',2); + INSERT INTO hiscore_large VALUES('main',1,0,100,1,200),('main',2,0,100,1,100),('main',3,0,999,1,1),('main',4,0,999,1,1),('iron',1,0,200,1,1),('iron',2,0,100,1,1); + INSERT INTO hiscore SELECT profile,account_id,1,level,value,playtime FROM hiscore_large;`); + +const rank = async (name: string, profile = 'main') => { + const response = await handleHiscoresPlayerPage(new URL(`http://localhost/hiscores/player/${name}?profile=${profile}`)); + assert.ok(response); + const html = await response.text(); + return { status: response.status, rank: html.match(/>Overall<\/a><\/td>\s*(\d+)<\/td>/)?.[1] }; +}; +try { + assert.equal((await rank('Alice')).rank, '2'); + assert.equal((await rank('Bob')).rank, '1'); + assert.equal((await rank('Alice', 'iron')).rank, '1'); + assert.equal((await rank('hidden')).status, 404); + assert.equal((await rank('staff')).status, 404); + database.exec("UPDATE hiscore_large SET level=300 WHERE account_id=1 AND profile='main'"); + assert.equal((await rank('Alice')).rank, '2', 'Existing cached snapshot remains consistent'); + const now = Date.now; + const future = now() + 60001; + try { + Date.now = () => future; + assert.equal((await rank('Alice')).rank, '2', 'Serve the old complete snapshot during refresh'); + for (let i = 0; i < 100 && (await rank('Alice')).rank !== '1'; i++) await Bun.sleep(10); + assert.equal((await rank('Alice')).rank, '1', 'Background refresh builds a fresh rank index'); + assert.equal((await rank('Bob')).rank, '2'); + database.exec('DROP TABLE hiscore_large'); + await assert.rejects(loadRankedList('main', 0)); + Date.now = () => future + 60001; + assert.equal((await getRankedList('main', 0))[0].username, 'Alice', 'Refresh failure retains the complete snapshot'); + await assert.rejects(loadRankedList('main', 0)); + assert.equal((await getRankedList('main', 0))[1].username, 'Bob'); + } finally { + Date.now = now; + } +} finally { + database.close(); + await db.destroy(); +} diff --git a/server/engine/test/fixtures/reconnect-lifecycle.ts b/server/engine/test/fixtures/reconnect-lifecycle.ts index 5374eb3cb..43a8311c8 100644 --- a/server/engine/test/fixtures/reconnect-lifecycle.ts +++ b/server/engine/test/fixtures/reconnect-lifecycle.ts @@ -17,11 +17,16 @@ const { default: NullClientSocket } = await import('../../src/server/NullClientS const { default: WSClientSocket } = await import('../../src/server/ws/WSClientSocket.js'); const { default: TcpServer } = await import('../../src/server/tcp/TcpServer.js'); const { websocketHandlers } = await import('../../src/web/websocket.js'); +const { PlayerLoading } = await import('../../src/engine/entity/PlayerLoading.js'); +const { default: ScriptProvider } = await import('../../src/engine/script/ScriptProvider.js'); +const { default: ScriptRunner } = await import('../../src/engine/script/ScriptRunner.js'); const world = World as any; afterEach(() => { for (const player of World.playerLoop.all()) player.unlink(); World.newPlayers.clear(); + world.players.fill(undefined); + world.shutdownTick = -1; world.loginThread.messages.length = 0; world.friendThread.messages.length = 0; }); @@ -33,6 +38,144 @@ function player(client: ClientSocket) { return { p, logs }; } +function queuedReconnects(count: number, onSave = () => {}) { + const entries = []; + for (let index = 0; index < count; index++) { + const old = websocket(); + const next = websocket(); + old.client.state = next.client.state = 1; + const name = `budget${index}`; + const active = new NetworkPlayer(name, BigInt(index + 1), 1n, old.client); + const pending = new NetworkPlayer(name, BigInt(index + 1), 1n, next.client); + active.save = () => { onSave(); return Uint8Array.of(index); }; + active.onReconnect = () => {}; + active.addSessionLog = pending.addSessionLog = () => {}; + pending.reconnecting = true; + World.playerLoop.add(1n, active); + World.newPlayers.add(pending); + entries.push({ active, pending, next }); + } + return entries; +} + +test('a slow reconnect yields after one save and the remaining accounts drain without loss', () => { + let elapsed = 0; + const clock = spyOn(performance, 'now').mockImplementation(() => elapsed); + const entries = queuedReconnects(185, () => { elapsed += 120; }); + const initialRate = World.tickRate; + World.tickRate = 300; + try { + for (let remaining = 184; remaining >= 0; remaining--) { + const before = elapsed; + world.processLogins(); + expect(World.newPlayers.size).toBe(remaining); + expect(elapsed - before).toBe(120); + } + expect(world.loginThread.messages).toHaveLength(185); + for (const { active, next } of entries) { + expect(active.client).toBe(next.client); + expect(next.client.player).toBe(active); + expect(next.sent).toEqual([[15]]); + } + } finally { + World.tickRate = initialRate; + clock.mockRestore(); + } +}); + +test('a logout burst retains deferred accounts and runs at most one slow checkpoint per phase', () => { + let elapsed = 0; + const clock = spyOn(performance, 'now').mockImplementation(() => elapsed); + const entries = queuedReconnects(3); + World.newPlayers.clear(); + for (const { active } of entries) { + active.loggingOut = true; + active.canAccess = () => true; + active.closeModal = () => {}; + } + const trigger = spyOn(ScriptProvider, 'getByTriggerSpecific').mockReturnValue({} as any); + const init = spyOn(ScriptRunner, 'init').mockReturnValue({ pointerAdd() {} } as any); + const execute = spyOn(ScriptRunner, 'execute').mockImplementation(() => {}); + const remove = spyOn(World, 'removePlayer').mockImplementation(p => { elapsed += 120; p.unlink(); }); + try { + for (let remaining = 2; remaining >= 0; remaining--) { + world.processLogouts(); + expect([...World.playerLoop.all()]).toHaveLength(remaining); + for (const p of World.playerLoop.all()) expect(p.loggingOut).toBe(true); + } + expect(remove).toHaveBeenCalledTimes(3); + const shutdownEntries = queuedReconnects(3); + World.newPlayers.clear(); + for (const { active } of shutdownEntries) { + active.canAccess = () => true; + active.closeModal = () => {}; + } + world.shutdownTick = 0; + world.processLogouts(); + expect([...World.playerLoop.all()]).toHaveLength(0); + expect(remove).toHaveBeenCalledTimes(6); + } finally { + clock.mockRestore(); trigger.mockRestore(); init.mockRestore(); execute.mockRestore(); remove.mockRestore(); + } +}); + +test('cheap reconnects respect the count limit and closed queued sockets are discarded', () => { + const clock = spyOn(performance, 'now').mockReturnValue(0); + const entries = queuedReconnects(12); + entries[0].next.close(); + try { + world.processLogins(); + expect(World.newPlayers.size).toBe(2); + expect(world.loginThread.messages).toHaveLength(9); + expect(entries[0].next.sent).toEqual([]); + world.processLogins(); + expect(World.newPlayers.size).toBe(0); + expect(world.loginThread.messages).toHaveLength(11); + } finally { + clock.mockRestore(); + } +}); + +test('a slow session takeover finishes admission before yielding, even at the IP cap', () => { + let elapsed = 0; + const clock = spyOn(performance, 'now').mockImplementation(() => elapsed); + const entries = queuedReconnects(2); + entries[0].pending.reconnecting = false; + entries[0].active.slot = 1; + world.players[1] = entries[0].active; + const events: string[] = []; + entries[0].active.closeModal = () => { events.push('close modal'); }; + entries[0].active.save = () => { events.push('save'); elapsed += 120; return Uint8Array.of(42); }; + entries[0].pending.staffModLevel = 1; + const loaded = new NetworkPlayer(entries[0].active.username, entries[0].active.username37, 1n, entries[0].next.client); + loaded.onLogin = () => { events.push('login'); }; + loaded.addSessionLog = () => {}; + const load = spyOn(PlayerLoading, 'load').mockImplementation((_name, packet) => { + expect([...packet.data]).toEqual([42]); + return loaded; + }); + const remove = spyOn(World, 'removePlayerWithoutSave').mockImplementation(p => { + events.push('remove'); + delete world.players[p.slot]; + p.unlink(); + }); + const zone = spyOn(World.gameMap, 'getZone').mockReturnValue({ enter() {} } as any); + try { + world.processLogins(); + expect(events).toEqual(['close modal', 'save', 'remove', 'login']); + expect([...World.playerLoop.all()]).toContain(loaded); + expect(world.players[loaded.slot]).toBe(loaded); + expect(loaded.staffModLevel).toBe(1); + expect(World.newPlayers.size).toBe(1); + expect(entries[0].next.sent).toEqual([[2, 1, 1]]); + world.processLogins(); + expect(World.newPlayers.size).toBe(0); + expect(entries[1].next.sent).toEqual([[15]]); + } finally { + clock.mockRestore(); load.mockRestore(); remove.mockRestore(); zone.mockRestore(); + } +}); + function websocket() { const client = new WSClientSocket(); const sent: number[][] = []; diff --git a/server/engine/test/fixtures/worldfeed.ts b/server/engine/test/fixtures/worldfeed.ts index 10e4c231a..e749717aa 100644 --- a/server/engine/test/fixtures/worldfeed.ts +++ b/server/engine/test/fixtures/worldfeed.ts @@ -11,13 +11,14 @@ const { default: World } = await import('../../src/engine/World.js'); const { NetworkPlayer } = await import('../../src/engine/entity/NetworkPlayer.js'); const { default: NullClientSocket } = await import('../../src/server/NullClientSocket.js'); const { Visibility } = await import('../../src/network/rsbuf/visibility.js'); -const { checkWorldFeedUpgrade, cycleWorldFeed, onWorldFeedClose, onWorldFeedMessage, onWorldFeedOpen } = await import('../../src/web/worldfeed.js'); +const { checkWorldFeedUpgrade, cycleWorldFeed, onWorldFeedClose, onWorldFeedMessage, onWorldFeedOpen, getPlayerPositionsJson } = await import('../../src/web/worldfeed.js'); type Message = { t: string; [key: string]: any }; const viewers: { close: () => void }[] = []; afterEach(() => { + World.zonesTracking.clear(); for (const v of viewers.splice(0)) { v.close(); } @@ -125,3 +126,63 @@ test('roster lists visible players every few ticks', () => { test('upgrade checks the token when one is configured', () => { expect(checkWorldFeedUpgrade(new URL('http://localhost/worldfeed'))).toBeUndefined(); }); + + +test('map snapshots are shared for a second and roster work runs every ten ticks', () => { + const player = addPlayer(22, 3210, 3210); + const first = getPlayerPositionsJson(1000); + player.x++; + expect(getPlayerPositionsJson(1999)).toBe(first); + expect(JSON.parse(getPlayerPositionsJson(2000))[0].x).toBe(3211); + const v = viewer(); + onWorldFeedMessage(v.ws, JSON.stringify({ t: 'roster', on: true })); + World.currentTick = 15; + cycleWorldFeed(); + expect(v.sent.some(s => JSON.parse(s).t === 'roster')).toBe(false); + World.currentTick = 20; + cycleWorldFeed(); + expect(v.last().t).toBe('roster'); +}); + +test('zone membership stays cached until movement, map origin, plane or clear changes it', () => { + const player = addPlayer(23, 3210, 3210); + player.originX = player.x; player.originZ = player.z; + const area = player.buildArea; + let clears = 0; + const clear = area.activeZones.clear.bind(area.activeZones); + area.activeZones.clear = () => { clears++; clear(); }; + area.rebuildZones(); area.rebuildZones(); + player.x++; area.rebuildZones(); + expect(clears).toBe(1); + player.x += 8; area.rebuildZones(); + player.originX += 8; area.rebuildZones(); + player.level++; area.rebuildZones(); + expect(clears).toBe(4); + area.clear(false); area.rebuildZones(); + expect(clears).toBe(6); + expect(area.activeZones.size).toBeGreaterThan(0); +}); + +test('loaded unchanged zones skip writes, new zones and private events retain delivery', () => { + const player = addPlayer(24, 3210, 3210); + const zone = World.gameMap.getZone(3210, 3210, 0); + player.buildArea.activeZones.add(zone.index); + const written: any[] = []; + player.write = message => { written.push(message); }; + player.updateZones(); + expect(written.length).toBeGreaterThan(0); // First sight always sends a full update. + written.length = 0; + player.updateZones(); + expect(written).toEqual([]); + const mine = { marker: 'mine' }, theirs = { marker: 'theirs' }; + // ZoneEventType.FOLLOWS = 1; use actual zone filtering with capture-only output. + (zone as any).events.add({ type: 1, receiver64: player.hash64, message: mine }); + (zone as any).events.add({ type: 1, receiver64: 999n, message: theirs }); + World.trackZone(zone); + player.updateZones(); + expect(written).toContain(mine); + expect(written).not.toContain(theirs); + zone.reset(); + player.buildArea.activeZones.clear(); player.updateZones(); + expect(player.buildArea.loadedZones.size).toBe(0); +}); diff --git a/server/engine/test/hiscores-performance.test.ts b/server/engine/test/hiscores-performance.test.ts new file mode 100644 index 000000000..2ff50d355 --- /dev/null +++ b/server/engine/test/hiscores-performance.test.ts @@ -0,0 +1,69 @@ +import { expect, test } from 'bun:test'; +import { Database } from 'bun:sqlite'; +import { mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs'; +import { tmpdir } from 'node:os'; +import { join } from 'node:path'; + +test('ranking indexes preserve results and avoid scanning other skills and sorting', () => { + const db = new Database(':memory:'); + try { + db.exec(`CREATE TABLE account(id INTEGER PRIMARY KEY, username TEXT, staffmodlevel INTEGER); + CREATE TABLE hiscore(profile TEXT, account_id INTEGER, type INTEGER, level INTEGER, playtime INTEGER, PRIMARY KEY(profile,account_id,type)); + CREATE TABLE hiscore_large(profile TEXT, account_id INTEGER, type INTEGER, level INTEGER, playtime INTEGER, PRIMARY KEY(profile,account_id,type)); + INSERT INTO account VALUES(1,'slower',0),(2,'faster',0),(3,'lower',0),(4,'staff',2); + INSERT INTO hiscore VALUES('main',1,1,99,200),('main',2,1,99,100),('main',3,1,50,1),('main',4,1,100,1),('main',1,2,100,1),('iron',3,1,100,1); + INSERT INTO hiscore_large SELECT * FROM hiscore;`); + const query = (table: string) => `SELECT account.username, h.level, h.playtime FROM ${table} h JOIN account ON account.id=h.account_id WHERE h.profile='main' AND h.type=1 AND account.staffmodlevel<=1 ORDER BY h.level DESC,h.playtime ASC`; + const before = ['hiscore', 'hiscore_large'].map(table => db.query(query(table)).all()); + db.exec(readFileSync(join(import.meta.dir, '../prisma/singleworld/migrations/20261011000000_hiscore_rank_indexes/migration.sql'), 'utf8')); + for (const [index, table] of ['hiscore', 'hiscore_large'].entries()) { + expect(db.query(query(table)).all()).toEqual(before[index]); + const plan = JSON.stringify(db.query('EXPLAIN QUERY PLAN ' + query(table)).all()); + expect(plan).toContain(`COVERING INDEX ${table}_rank`); + expect(plan).toContain('profile=? AND type=?'); + expect(plan).not.toContain('TEMP B-TREE'); + } + } finally { + db.close(); + } +}); + +test('cached ranks remain correct across profiles, exclusions and cache refresh', () => { + const dir = mkdtempSync(join(tmpdir(), 'ranked-hiscores-')); + try { + const result = Bun.spawnSync([process.execPath, join(import.meta.dir, 'fixtures/ranked-hiscores.ts')], { + cwd: dir, + env: { ...process.env, DB_BACKEND: 'sqlite', HISCORES_HIDDEN_NAMES: 'hidden', HISCORES_CACHE_MS: '60000' }, + }); + if (result.exitCode !== 0) throw new Error(result.stdout.toString() + result.stderr.toString()); + expect(result.exitCode).toBe(0); + } finally { + rmSync(dir, { recursive: true, force: true }); + } +}); + + +test('ranking requests wait for a worker with delayed startup to install its handler', () => { + const dir = mkdtempSync(join(tmpdir(), 'ranked-startup-')); + try { + writeFileSync(join(dir, 'RankedHiscores.ts'), readFileSync(join(import.meta.dir, '../src/web/pages/RankedHiscores.ts'))); + writeFileSync(join(dir, 'RankedHiscoresWorker.ts'), ` + import { parentPort } from 'node:worker_threads'; + let listening = false; + parentPort.on('message', ({ id, profile }) => { + if (listening) parentPort.postMessage({ id, rows: [{ username: profile, level: 1, playtime: 0 }] }); + }); + setTimeout(() => { listening = true; parentPort.postMessage({ ready: true }); }, 100); + `); + writeFileSync(join(dir, 'check.ts'), ` + import assert from 'node:assert/strict'; + import { loadRankedList } from './RankedHiscores.ts'; + const timeout = setTimeout(() => process.exit(1), 2000); + const rows = await Promise.all([loadRankedList('a', 0), loadRankedList('b', 1)]); + assert.deepEqual(rows.map(r => r[0].username), ['a', 'b']); + clearTimeout(timeout); + `); + const result = Bun.spawnSync([process.execPath, join(dir, 'check.ts')]); + expect(result.exitCode).toBe(0); + } finally { rmSync(dir, { recursive: true, force: true }); } +}); diff --git a/server/engine/test/reconnect.test.ts b/server/engine/test/reconnect.test.ts index 9beed4f86..5c8449449 100644 --- a/server/engine/test/reconnect.test.ts +++ b/server/engine/test/reconnect.test.ts @@ -11,7 +11,7 @@ test('reconnect transfers ownership and stale socket closes cannot detach the re copyFileSync(join(import.meta.dir, '../data/config/private.pem'), join(dir, 'data/config/private.pem')); const result = Bun.spawnSync([process.execPath, 'test', join(import.meta.dir, 'fixtures/reconnect-lifecycle.ts')], { cwd: dir, - env: { ...process.env, GE_DATABASE: join(dir, 'market.sqlite') } + env: { ...process.env, GE_DATABASE: join(dir, 'market.sqlite'), MAX_PLAYERS_PER_IP: '1' } }); if (result.exitCode !== 0) { throw new Error(result.stdout.toString() + result.stderr.toString()); diff --git a/server/webclient/src/lite/LoginBackoff.test.ts b/server/webclient/src/lite/LoginBackoff.test.ts new file mode 100644 index 000000000..94c95dbe5 --- /dev/null +++ b/server/webclient/src/lite/LoginBackoff.test.ts @@ -0,0 +1,10 @@ +import { expect, test } from 'bun:test'; +import { loginJitterMs } from './LoginBackoff.js'; + +test('fleet delays spread attempts and respect disabled, invalid and capped settings', () => { + expect([0, 0.25, 0.75].map(value => loginJitterMs(5000, () => value))).toEqual([0, 1250, 3750]); + expect(loginJitterMs(0, () => 0.5)).toBe(0); + expect(loginJitterMs(-1, () => 0.5)).toBe(0); + expect(loginJitterMs(NaN, () => 0.5)).toBe(2500); + expect(loginJitterMs(1e9, () => 0.5)).toBe(30000); +}); diff --git a/server/webclient/src/lite/LoginBackoff.ts b/server/webclient/src/lite/LoginBackoff.ts new file mode 100644 index 000000000..8b68f6368 --- /dev/null +++ b/server/webclient/src/lite/LoginBackoff.ts @@ -0,0 +1,5 @@ +/** Bounded jitter shared by initial remote logins and fleet retry loops. */ +export function loginJitterMs(maxMs: number, random = Math.random): number { + const bounded = Number.isFinite(maxMs) ? Math.max(0, Math.min(60_000, maxMs)) : 5000; + return Math.floor(random() * bounded); +} diff --git a/server/webclient/src/lite/session.ts b/server/webclient/src/lite/session.ts index 88ba9afc1..f7c5e5a67 100644 --- a/server/webclient/src/lite/session.ts +++ b/server/webclient/src/lite/session.ts @@ -13,6 +13,7 @@ // quiet without closing. A single bad packet is not an ending; see handlePacket. import './dom-shim.js'; +import { loginJitterMs } from './LoginBackoff.js'; import { invalidateCache, loadCache } from './cache.js'; import { CLIENT_VERSION, GameConnection, LoginError, OutdatedClientError } from './net/GameConnection.js'; @@ -33,6 +34,8 @@ const KEEPALIVE_CYCLES = 50; const IDLE_CYCLES = 3000; // ~60s, i.e. ~200 missed server ticks export interface SessionOptions { + /** Spread remote fleet starts over 5s by default; 0 disables the delay. */ + loginJitterMs?: number; host: string; username: string; password: string; @@ -115,14 +118,16 @@ export async function startSession(opts: SessionOptions): Promise { let { checksums } = await loadCache({ origin, cacheDir, members: opts.members, quiet: opts.quiet }); let locIndex = await LocIndex.load({ origin, cacheDir, versionlistCrc: checksums[5], quiet: opts.quiet }); - const connect = () => - GameConnection.connect({ + const connect = async () => { + await Bun.sleep(loginJitterMs(opts.loginJitterMs ?? Number(process.env.LITE_LOGIN_JITTER_MS ?? (secured ? 5000 : 0)))); + return GameConnection.connect({ host: opts.host, secured, username: opts.username, password: opts.password, checksums }); + }; let connection: GameConnection; try { diff --git a/server/webclient/src/lite/swarm.ts b/server/webclient/src/lite/swarm.ts index 3b8e78c66..53cc7302f 100644 --- a/server/webclient/src/lite/swarm.ts +++ b/server/webclient/src/lite/swarm.ts @@ -27,6 +27,7 @@ // of the gold, and the report marks anything that is currently offline. import { fileURLToPath } from 'node:url'; +import { loginJitterMs } from './LoginBackoff.js'; import { OutdatedClientError } from './net/GameConnection.js'; import { startSession, type LiteSession, type SessionEnd } from './session.js'; @@ -399,7 +400,7 @@ function exitIfOutdated(e: unknown): void { async function relogin(bot: PickpocketBot): Promise { let delay = RELOGIN_MS; while (!shuttingDown) { - await Bun.sleep(delay); + await Bun.sleep(RELOGIN_MS + loginJitterMs(Math.max(1000, delay - RELOGIN_MS))); if (shuttingDown) { return; } diff --git a/server/webclient/src/mapview/MapView.ts b/server/webclient/src/mapview/MapView.ts index 4b0036550..6bfc3ad3e 100644 --- a/server/webclient/src/mapview/MapView.ts +++ b/server/webclient/src/mapview/MapView.ts @@ -47,7 +47,8 @@ export class MapView extends GameShell { playerPositions: {x: number, z: number, level: number, name: string}[] = []; playerTrails: Map = new Map(); lastPlayerFetch: number = 0; - readonly playerPollInterval: number = 750; + readonly playerPollInterval: number = 1500; + private playerFetchPending = false; readonly maxTrailLength: number = 2000; readonly maxTrailAge: number = 1800000; @@ -837,7 +838,7 @@ export class MapView extends GameShell { // custom: poll player positions const now: number = performance.now(); - if (MapView.shouldDrawPlayers && now - this.lastPlayerFetch > this.playerPollInterval) { + if (!document.hidden && !this.playerFetchPending && MapView.shouldDrawPlayers && now - this.lastPlayerFetch > this.playerPollInterval) { this.lastPlayerFetch = now; this.fetchPlayerPositions(); } @@ -2041,14 +2042,16 @@ export class MapView extends GameShell { // custom: fetch player positions from server fetchPlayerPositions(): void { - fetch('/playerpositions') + this.playerFetchPending = true; + fetch('/playerpositions', { signal: AbortSignal.timeout(5000) }) .then(res => res.json()) .then((data: {x: number, z: number, level: number, name: string}[]) => { this.playerPositions = data; this.updateTrails(data); this.redraw = true; }) - .catch(() => {}); + .catch(() => {}) + .finally(() => { this.playerFetchPending = false; }); } // custom: fetch and pre-render long-term anonymous traces