AWS Elastic Beanstalk - Socket-Fehler auf dem Puma-Server bei mehr als 300 Verbindungen gleichzeitig

AWS Elastic Beanstalk - Socket-Fehler auf dem Puma-Server bei mehr als 300 Verbindungen gleichzeitig

Ich habe mich mit einem, wohl seltsamen, Problem in einer AWS Elastic Beanstalk-Umgebung befasst. Ich erhalte den folgenden Nginx-Fehler, wenn zu einem bestimmten Zeitpunkt mehr als 300 Verbindungen zu einer einzelnen Instanz bestehen:

2018/03/23 20:56:53 [Fehler] 5431#0: *4121 connect() zu unix:///var/run/puma/my_app.sock ist fehlgeschlagen (11: Ressource vorübergehend nicht verfügbar) beim Verbinden mit Upstream, Client:

Antwort1

Wenn man das Problem und die Konfigurationen durchgeht, stellt man fest, dass der Fehler mit einem überschrittenen Ressourcenlimit zusammenhängt. Möglicherweise zwei der Betriebssystemressourcen:

  • Öffnen Sie Dateideskriptoren
  • Prozesse, die einem einzelnen Benutzer zur Verfügung stehen. Um die Prozessbeschränkung zu beseitigen, halten Sie Ihren nproc-Wert in der EC2-Instanz auf einem sehr hohen Wert oder unbegrenzt.

    sudo vi /etc/security/limits.conf

Verweisendieser Linkfür eine kurze Idee. Da Sie worker_rlimit_nofile nicht höher als das auf dem Server festgelegte ulimit setzen können, wäre der erste Ansatz, die Nginx-Parameter zu berechnen und je nach Bedarf zu optimieren:

Wir können dienen worker_processes * worker_connections / ( keepalive_timout * 2 ) users per second.

Dieser Skalierungsleitfadenkann Ihnen dabei helfen, die Werte zu quantifizieren, die Sie erhöhen und definieren sollten. Sobald Sie mit der Definition der Werte für Ihren Webserver fertig sind, müssen Sie die Grenzwerte mit höheren oder gleichen Werten aktualisieren. Überprüfen Sie, bis zu welcher Benutzerparallelität der Server funktioniert, um Ihnen bei der Skalierung zu helfen.

verwandte Informationen