Hi all,
ik heb een probleem met HTTP/2 in combinatie met de Apache (2.4.25) webserver, waarbij het lijkt alsof de requests op elkaar wachten. Dit gebeurd bijvoorbeeld bij het doen van meerdere API requests (PHP backend). HTTP/2 zou sneller moeten zijn en wat andere voordelen hebben t.o.v. HTTP/1.1, maar het gaat in dit geval totaal niet op.
Wat heb ik al geprobeerd:
Ik heb een "bare minimum" Ubuntu (16.04) server opgezet, met daarop Apache 2.4.25 met mod_http2 enabled. Op de server staat een PHP script, welke een GET request opvangt, een aantal seconden wacht en daarna een response geeft. Vanuit de frontend worden alle requests op hetzelfde moment verstuurd.
Ik heb daarnaast ook een server opgezet met Nginx i.p.v. Apache, hierop werkt het wèl correct en worden de requests parallel uitgevoerd. Ook bij het gebruiken van HTTP/1.1 in combinatie met Apache & Nginx wachten de requests niet op elkaar.
Hieronder 2 scenario's:
Nginx + HTTP/2: Worden parallel uitgevoerd, requests wachten niet op elkaar:

Apache + HTTP/2: Wachten op elkaar, hierdoor zie je dat een request van 10 seconden (?action=10s) het aantal seconden van de vorige requests + 10 seconden duurt.

Heb verder de default config van de http2 module, dus zonder wat aangepast te hebben. Als ik probeer de H2MaxWorkers op te hogen via /etc/apache2/apache2.conf en dan opnieuw de requests probeer uit te voeren, krijg ik een error 'zend_mm_heap corrupted'.
LogLevel http2:debug:
Mijn virtualhost config, ingesteld met Let's Encrypt: https://pastebin.com/C78HkfGb
Iemand enig idee wat hier mis gaat en of dit op te lossen is?
ik heb een probleem met HTTP/2 in combinatie met de Apache (2.4.25) webserver, waarbij het lijkt alsof de requests op elkaar wachten. Dit gebeurd bijvoorbeeld bij het doen van meerdere API requests (PHP backend). HTTP/2 zou sneller moeten zijn en wat andere voordelen hebben t.o.v. HTTP/1.1, maar het gaat in dit geval totaal niet op.
Wat heb ik al geprobeerd:
Ik heb een "bare minimum" Ubuntu (16.04) server opgezet, met daarop Apache 2.4.25 met mod_http2 enabled. Op de server staat een PHP script, welke een GET request opvangt, een aantal seconden wacht en daarna een response geeft. Vanuit de frontend worden alle requests op hetzelfde moment verstuurd.
Ik heb daarnaast ook een server opgezet met Nginx i.p.v. Apache, hierop werkt het wèl correct en worden de requests parallel uitgevoerd. Ook bij het gebruiken van HTTP/1.1 in combinatie met Apache & Nginx wachten de requests niet op elkaar.
Hieronder 2 scenario's:
Nginx + HTTP/2: Worden parallel uitgevoerd, requests wachten niet op elkaar:
Apache + HTTP/2: Wachten op elkaar, hierdoor zie je dat een request van 10 seconden (?action=10s) het aantal seconden van de vorige requests + 10 seconden duurt.
Heb verder de default config van de http2 module, dus zonder wat aangepast te hebben. Als ik probeer de H2MaxWorkers op te hogen via /etc/apache2/apache2.conf en dan opnieuw de requests probeer uit te voeren, krijg ik een error 'zend_mm_heap corrupted'.
LogLevel http2:debug:
code:
1
2
| AH03200: h2_session(10) created, max_streams=100, stream_mem=65536, workers_limit=6, workers_max=1, push_diary(type=1,N=256) AH03201: h2_session(10): start, INITIAL_WINDOW_SIZE=65535, MAX_CONCURRENT_STREAMS=100 |
Mijn virtualhost config, ingesteld met Let's Encrypt: https://pastebin.com/C78HkfGb
Iemand enig idee wat hier mis gaat en of dit op te lossen is?
[ Voor 15% gewijzigd door klepje op 31-03-2017 22:45 . Reden: Meer informatie toegevoegd ]