Ich erhalte unregelmäßige, aber reguläre 503-Fehler ("Dienst nicht verfügbar: Back-End-Server ist ausgelastet") von einer Site, die aus 2 t2.medium-Instanzen hinter einem ELB besteht. Keine sind besonders stark belastet und alle Überwachung scheint normal.
Die AWS-Dokumentation hier: Ссылка sagen, dass eine mögliche Ursache nicht übereinstimmende Timeout-Einstellungen zwischen ELB und EC2s sind: "Setzen Sie das Keep-Alive-Timeout auf größer oder gleich den Leerlauf-Timeout-Einstellungen Ihres Load Balancers"
Apache conf auf dem EC2s hat:
Leerlauf-Timeout auf dem Lastenausgleich ist 60 Sekunden.
Dies scheint dann eine Ursache zu sein, aber ich bin mir nicht sicher über die Lösung. Die Erhöhung des Apache KeepAliveTimeout wird nicht - wie ich verstehe - normalerweise empfohlen, und ich bin mir ebenfalls nicht sicher, wie sich das Reduzieren des Leerlaufzeitlimits auf den ELB auf die Leistung der Site auswirken wird.
Was ist der empfohlene Ansatz? Wie kann ich eine Vorstellung davon bekommen, was die idealen Einstellungen für meine Einrichtung und die Art des Verkehrsaufkommens sind (derzeit etwa 30-50 Anfragen / Min.), Die es beschäftigt?
Ich würde das Leerlaufzeitlimit im ELB senken. Clients müssen häufiger neue Verbindungen öffnen, aber es ist nur etwas langsamer als die Wiederverwendung einer Keepalive-Verbindung.
Wenn Sie das Keepalive auf 60 in Apache setzen, wird auch der 503 repariert, aber Sie müssen aufpassen, dass Ihnen die Verbindungen oder der Speicher nicht ausgehen, besonders bei prefork mpm, weil Sie viel mehr Slots in Keepalive bekommen. Verwenden Sie Worker mpm (oder Ereignis mpm, wenn Sie keine Angst vor der Warnung "Diese MPM ist experimentell"), stellen Sie sicher, dass Sie genügend MaxClients haben, um alle Anfragen zu bearbeiten, aber niedrig genug, um die Memos nicht auszulassen.
Tags und Links amazon-web-services amazon-ec2 amazon-elb