2016-12-08 7 views
0

einstellen Ich habe kürzlich eine Rails App in Docker auf Amazon ECS bereitgestellt. Meine App verwendet zwei Container - einen für die App, mit Puma als App-Server und einen für nginx, der als Reverse-Proxy für die App fungiert. Ich benutzte die Standard-Puma-Konfiguration von 2 Arbeitern und 5 Threads. Ich führe eine Instanz davon auf einem t2.small.Puma Worker, Threads für Rails in Docker

Wir haben angefangen, Probleme zu sehen, bei denen die App irgendwann mit dem Zeitlimit beginnen würde. Benutzer erhalten entweder keine Antwort oder erhalten vom Lastenausgleich einen 504-Fehler. In den Rails-Protokollen würden wir sehen, dass Anfragen unter sehr ungewöhnlichen Umständen plötzlich viel zu lange dauern würden (800 Sekunden!). Nach ein paar Minuten würde Puma einen neuen Arbeiter starten, und es würde wieder normal werden.

Ich lese in der Puma-Dokumentation, dass Sie Arbeiter auf die gleiche Anzahl von CPU-Kernen einstellen sollten, die 1 auf einem t2.small ist, also tat ich das. Ich habe auch gelesen, dass wenn du dir nicht sicher bist, ob deine App threadsicher ist, solltest du das nicht durcheinander bringen, also setze ich Threads ebenfalls auf 1. 1 Arbeiter, 1 Faden.

Und es war den ganzen Tag in Ordnung - so weit.

Wie würde ich mehr Nebenläufigkeit erhalten? Die App benutzt kaum RAM oder CPU - sollte ich einfach mehr Aufgaben aufspielen (1 Task = 1 Rails Container + 1 Nginx Container)? Muss ich mir überhaupt Sorgen machen, wenn ich vor Puma nginx habe?

Antwort

1

Ich hatte eine Menge Probleme mit der Sicherheit und Speichererweiterung mit Puma. Ich bin zu Passagier gewechselt und viel bessere Leistung gesehen. Ich benutze auch Docker.

Verwandte Themen