Ik zit met een vreemd probleem waar ik niet uit kom. Als test heb ik 3 simpele servers opgezet:
- Apache backend met PHP welke een phpinfo() pagina weer geeft.
- Nginx reverse proxy > apache backend
- Varnish reverse proxy > apache backend
Alle servers zijn default installaties zonder optimalisatie op welk niveau dan ook. Het zijn kleine servers met 1GB ram en 1 core. Niets bijzonders. Nutteloze software is verwijdert en verder draait alleen een Zabbix agent op iedere VM.
De test is extreem simpel:
# ab -n 50000 -c 100 http://10.15.120.5/test1.php
Uit Nginx krijg ik als verwacht een resultaat:
Varnish krijgt op de een of andere manier altijd een timeout vlak voor het eindigen van de benchmark:Code:Concurrency Level: 100 Time taken for tests: 76.314583 seconds Complete requests: 50000 Failed requests: 0 Write errors: 0 Total transferred: -2066867296 bytes HTML transferred: -2079267296 bytes Requests per second: 655.18 [#/sec] (mean) Time per request: 152.629 [ms] (mean) Time per request: 1.526 [ms] (mean, across all concurrent requests) Transfer rate: -26448.75 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 30.0 0 2999 Processing: 0 151 861.9 33 27451 Waiting: 0 92 607.8 30 27449 Total: 0 151 862.4 33 27451
Of ik er 100k requests van maak of 50k, vlak voor het einde stopt de benchmark met een timeout. De tests worden uitgevoerd vanuit dezelfde testomgeving. Doel is om te kijken welke van de twee uiteindelijk het meest geschikt is als reverse proxy. Ik begrijp dat ip_conntrack op een moment vol loopt. Maar waarom gebeurt dit alleen structureel bij Varnish en heb ik bij Nginx geen problemen? Met -k werkt het overigens wel, maar toch ben ik benieuwd waar het verschil door komt.Code:apr_poll: The timeout specified has expired (70007) Total of 49975 requests completed
Wat zijn verder de ervaringen tussen de twee?

Likes:


Quote