aboutsummaryrefslogtreecommitdiffstats
path: root/docs/research/056-server-only-document-package.md
diff options
context:
space:
mode:
authoreunhhu <[email protected]>2026-09-27 18:56:02 +0100
committereunhhu <[email protected]>2026-09-27 18:56:02 +0100
commit944ab4fe95596127ec3c517037bad8fe6102dfe4 (patch)
treea28b4f4e50b08a2f17e131fe826825adfe6acd2d /docs/research/056-server-only-document-package.md
parentb469bdaee395a4c49b23d6b3a146ea31ef7c0959 (diff)
downloadpure-944ab4fe95596127ec3c517037bad8fe6102dfe4.tar.gz
pure-944ab4fe95596127ec3c517037bad8fe6102dfe4.zip
Stop reading a connection at a short read
After answering, a connection went back to recv for its next request and got EAGAIN nearly every time: a failed syscall a request. A recv that returns less than it asked for has emptied the socket, and the edge-triggered epoll reports the next bytes when they come (epoll(7); as nginx does), so the connection now waits for that; a peer that hung up is read to its end as before. Small keep-alive GETs, 64 connections, five rounds in rotation (Raspberry Pi 5): 131.9k/s before this step, 139.9k after. With the three steps before it (a burst's keys in one look, the clock once a round, the head without printf): 116.1k -> 139.9k/s, p99 672 -> 512 us, above the 127.0k of 2026-09-26's build that the app model had since slowed. App reads: the total 111.5k -> 125.4k/s, a 20-row page 86.2k -> 94.3k; 1 MiB reads and durable posts unchanged.
Diffstat (limited to 'docs/research/056-server-only-document-package.md')
0 files changed, 0 insertions, 0 deletions