PerlInterpScope handler

use threads;
# in loop:
threads->yield();


?

On Thu, Oct 23, 2025, 08:43 Steven Haigh via modperl <
[email protected]> wrote:

> Hi all,
>
> I'm writing a web UI in perl + mod_perl that sends an SSE stream to the
> browser full of JSON formatted updates etc. The browser then renders
> that all via Javascript to the user.
>
> I've noticed that if I reload the page multiple times, or just navigate
> away, when there's ~6 existing SSE streams, apache will stop accepting
> new connections completely.
>
> I've hunted around via the normal search engines, turned up very little
> - and out of desperation, asked ChatGPT's Codex...
>
> It suggested the following apache config:
>
> LoadModule mpm_event_module modules/mod_mpm_event.so
> # Tune event MPM so we have headroom for long-lived SSE connections
> <IfModule mpm_event_module>
>      ServerLimit              4
>      StartServers             2
>      MinSpareThreads         50
>      MaxSpareThreads        150
>      ThreadsPerChild         64
>      MaxRequestWorkers      256
>      MaxConnectionsPerChild   0
> </IfModule>
>
> ## Load mod_perl
> LoadModule perl_module /usr/lib/apache2/modules/mod_perl.so
> PerlModule Apache2::Reload
> PerlInitHandler Apache2::Reload
> PerlOptions +Parent
> PerlSwitches -Mlib=/usr/local/apache2/htdocs-includes
> PerlInterpStart      20
> PerlInterpMinSpare   10
> PerlInterpMaxSpare   20
> PerlInterpMax        80
>
> Even with this however, when I hit 6 x concurrent SSE streams being
> served, Apache grinds to a halt and doesn't even load the
> /server-status/ page for troubleshooting.
>
> Once some of the 'dead' SSE streams fail and those connections
> terminated, apache starts behaving again.
>
> Has anyone come across this before and maybe knows a bit of additional
> knowledge as to why this is, and what I can do about it?
>
> Thanks.
>
> --
> Steven Haigh
>
> 📧 [email protected]
> 💻 https://crc.id.au
>
>
>

Reply via email to