Skip to content

2026 ithread repairs#5

Open
joesuf4 wants to merge 7 commits intoapache:trunkfrom
joesuf4:trunk
Open

2026 ithread repairs#5
joesuf4 wants to merge 7 commits intoapache:trunkfrom
joesuf4:trunk

Conversation

@joesuf4
Copy link
Copy Markdown

@joesuf4 joesuf4 commented Apr 6, 2026

This patch enables

1/ true ithread multiplexing for HTTP/2

2/ real resilience under h2load across thousands of concurrent theads/connections.

3/ full support for segfault-free live interpreter destruction under such loads.

4/ fixes the dumbness around pulling an ithread interpreter out of the pool just to run the request cleanup hook, which fires on every request: even on static requests that have nothing to do with mod_perl.

It also disables support for PerlInterpMaxRequests, which was always a dumb idea.

With this patch (and the corresponding mod_http2 patch), I can sustain 1200 req/s under a 10K concurrency load (100 connections x 100 HTTP/2 multiplexed channels) for over a minute without failure. Without this patch set, you can't come anywhere close on a 4 core machine with 32 GB RAM.

@joesuf4 joesuf4 force-pushed the trunk branch 16 times, most recently from 0f65d45 to 89ac317 Compare April 8, 2026 01:59
@joesuf4
Copy link
Copy Markdown
Author

joesuf4 commented Apr 9, 2026

I've beaten the living shit out of this PR, and it fleshed out a pair of serious bugs in mod_http2 as a result.

It now only cores under serious pressure on interpreter destruction, which is tunable to taste. I've always recommended postponing interpreter destruction to global httpd process destruction. This is much more robust than that, but it's the best I can do at this juncture.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant