Skip to content

v0.1.0-alpha.4

@thugstar thugstar tagged this 26 Oct 15:03
A Watch renews and removes one client at a time: each IDLE is renewed on its own clock without blocking the others, an unanswered renewal or a BYE is a failure of that client alone, and mail that arrives during a renewal is still reported.

Measured before the release on PHP 8.5 with the Io\Poll polyfill (backend: Poll), one process holding IDLE connections over TLS to a local server that pushes one EXISTS every 200 ms:
- 500 connections renewing every 28 minutes: 18 MB resident (37 kB per connection), 1.3% CPU while holding, push latency p99 1.46 ms, max 1.54 ms.
- 500 connections renewing every 10 seconds (50 renewals a second): every connection renewed, none failed, 32% CPU, max 111 ms.
- 100 and 10 connections renewing every 10 seconds: p99 1.8 ms and 1.0 ms.
A first run reported delays of seconds; those were pushes sent while the connections were still being opened, counted from before the wait began (the worst equalled the setup time). The measurement counts only pushes sent after the hold starts.
Assets 2
Loading