From 2827b23a1ec319d6a70eadccfa45cb5b7d8c83cc Mon Sep 17 00:00:00 2001 From: eunhhu Date: Sat, 26 Sep 2026 10:46:30 +0100 Subject: Count a connection's deadline from its last progress pure-serve renewed a connection's deadline when a request arrived or an answer finished, not while an answer was being sent, so a client that read a large answer steadily but slowly was cut off after ten seconds (a 1 MiB document over a 50 KB/s link never arrived). Every write that makes progress now renews it; only a stalled connection expires. --- docs/design/008-module-format.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'docs/design') diff --git a/docs/design/008-module-format.md b/docs/design/008-module-format.md index c800a8a..7c9b50a 100644 --- a/docs/design/008-module-format.md +++ b/docs/design/008-module-format.md @@ -204,7 +204,8 @@ text·리스트가 남을 때만 위치를 유지한다. - **연결.** HTTP/1.1 지속 연결과 파이프라이닝(응답은 순서대로), edge-triggered epoll 소유 스레드 하나, 기다리는 연결을 한 번에 받는다. 연결 구조체는 받을 때 할당하고 닫으면 재사용하므로 메모리는 설정한 최대치가 아니라 - 열린 연결 수를 따른다(기본 최대 1,024). 응답은 머리말과 본문을 `writev` 한 번으로 보낸다. + 열린 연결 수를 따른다(기본 최대 1,024). 응답은 머리말과 본문을 `writev` 한 번으로 보낸다. 연결 기한(기본 + 10초)은 진행이 멈춘 시간으로 센다. 느리게라도 계속 받아 가는 클라이언트는 큰 응답을 끝까지 받는다. - **런타임 코어.** 요청은 `runtime.c`를 그대로 거친다(연결마다 작업 슬롯, 입력 바이트 예산, 코어가 소유한 ingress, 요청에서 빌린 PUT 응답). 효과는 비동기 인터페이스(`pure_runtime_take`/`complete`)로 소유 스레드에서 처리한다. - **이벤트 한 바퀴가 묶음 하나다.** 준비된 요청을 모두 지연 저장 모드의 앱에 차례로 적용하고, 저장 한 번 **뒤에** -- cgit v1.2.3