Operational Limits¶
HTTP/3 request and response bodies are buffered by the module. Set limits according to the memory available to each httpd child and the maximum concurrency you accept.
| Directive | Default | Effect |
|---|---|---|
H3MaxConnections |
256 |
Refuses new QUIC connections after the per-child limit |
H3MaxConcurrentStreams |
100 |
Caps in-flight requests per connection |
H3StreamBufferSize |
65536 |
Sets per-stream read/write buffer capacity |
H3MaxRequestBodySize |
10485760 |
Rejects request bodies above 10 MiB |
H3MaxResponseBodySize |
unlimited | Replaces excessive buffered responses with HTTP 500 when set |
H3HandshakeTimeout |
10 seconds |
Terminates incomplete QUIC/TLS handshakes |
H3IdleTimeout |
300 seconds |
Closes idle QUIC connections |
Response Body Limit¶
H3MaxResponseBodySize is unlimited by default for compatibility. Configure it to cap worst-case per-request memory. A response that exceeds the limit is replaced with 500 Internal Server Error; the original body may already be partially generated, so its Content-Length cannot be trusted.
Deployment Guidance¶
Start with conservative limits in exposed deployments. Test realistic download, upload, and concurrent-stream workloads before increasing connection or stream counts. Network-wide denial-of-service mitigation remains outside the module's scope.
The security policy describes the relevant trust boundaries and dependencies.