Kann ich httpd, redis und php-fpm ordnungsgemäß starten, ohne die Besucher meiner Website zu beeinträchtigen?

610
WackGet

Ich betreibe eine ziemlich ressourcenlastige Magento-basierte Site über eine Kombination aus Apache httpd, redis und php-fpm.

Wenn ich Änderungen an den zentralen PHP-Dateien vornehme, müssen die oben genannten Dienste neu gestartet werden, um sicherzustellen, dass kein alter Code zwischengespeichert wird, der Magento vermasseln kann (und kann).

Als ich in der Vergangenheit nur httpd verwendet habe, habe ich einfach service httpd gracefuleinen Neustart durchgeführt, ohne die Besucher der Website zu beeinträchtigen. Jetzt, da ich mehrere Dienste neu starten muss (und die Redis löschen), ist die Website für einige Sekunden nicht verfügbar.

Kann man das vermeiden?

0
Wie denken Sie, dass es möglich ist, den Server neu zu starten, ohne ihn offline zu setzen? Alexiy vor 7 Jahren 0
@Alexiy: Neuer Prozess erbt die Abhör-FDs und beginnt sofort, neue Verbindungen zu akzeptieren, während der alte Prozess vorhandene FDs der Verbindung so lange verarbeitet, bis alle beendet sind. grawity vor 7 Jahren 0

1 Antwort auf die Frage

1
Seth

Wenn Sie in der Apache- Dokumentation nachschauen, werden Sie feststellen, dass Apache das USR1Signal dafür verwendet. Als solches ist es eine benutzerdefinierte Routine. Sie müssen die Dokumentation der anderen Komponenten überprüfen, um zu sehen, wann sie ähnliche Optionen bieten oder nicht. Ein Erfolg für php-fpm ist zB Kann man einen PHP-FPM-Pool neu laden, ohne andere zu stören .

Wenn eine der Komponenten nicht über eine solche Option verfügt, können Sie dies nicht mit einem einzelnen Server / Standort tun. Sie müssten eine Art Cluster oder Balancer verwenden, mit dem Sie Ihre Benutzer auf die neue Version umleiten und die alte Version nach einiger Zeit deaktivieren können. Eine Alternative könnte sein, den Neustart für einige Zeit mit wenig Verkehr (z. B. während der Nacht) zu planen.