Ik heb een webserver opgezet, en die draait aardig. Inmiddels werken er meerdere gebruikers op, Helaas groeien met het aantal gebruikers ook het aantal problemen. Zo zijn er gebruikers die scripts draaien die hierop neerkomen:
Wanneer zoiets maar vaak genoeg aangeroepen wordt, gaat de boel vanzelf traag lopen. Een script als deze loopt uren door, terwijl er ondertussen door Apache aan systemresources wordt geknabbeld.
Om dit te voorkomen heb ik de volgende dingen uitgezocht:
Max_execution_time in PHP. Werkt niet omdat sleep een syscall is, en niet wordt meegeteld bij deze tijd.
Time-out in Apache. Werkt niet omdat dit meer betrekking heeft op de verbinding, en niet op de uitvoertijd van scripts.
Elke x minuten een graceful restart. Werkt niet omdat zoiets niet gracefully wil restarten.
Gezocht op 'php hard execution limit' en 'apache hard-limit sethandler', maar niets gevonden dat deed wat ik wou.
Ik kan mij niet voorstellen dat grote hosters hier ook mee zitten. Er zal dus wel een manier zijn dit op te lossen (afgezien van elke x minuten apache stoppen, en daarna weer starten). Ik heb echter gezocht, maar kan het niet vinden. Heeft iemand een idee?
PHP:
1
2
3
4
5
6
| <?php while(true) { sleep(10); echo "a"; } ?> |
Wanneer zoiets maar vaak genoeg aangeroepen wordt, gaat de boel vanzelf traag lopen. Een script als deze loopt uren door, terwijl er ondertussen door Apache aan systemresources wordt geknabbeld.
Om dit te voorkomen heb ik de volgende dingen uitgezocht:
Max_execution_time in PHP. Werkt niet omdat sleep een syscall is, en niet wordt meegeteld bij deze tijd.
Time-out in Apache. Werkt niet omdat dit meer betrekking heeft op de verbinding, en niet op de uitvoertijd van scripts.
Elke x minuten een graceful restart. Werkt niet omdat zoiets niet gracefully wil restarten.
Gezocht op 'php hard execution limit' en 'apache hard-limit sethandler', maar niets gevonden dat deed wat ik wou.
Ik kan mij niet voorstellen dat grote hosters hier ook mee zitten. Er zal dus wel een manier zijn dit op te lossen (afgezien van elke x minuten apache stoppen, en daarna weer starten). Ik heb echter gezocht, maar kan het niet vinden. Heeft iemand een idee?