Auf meinem node.js-Server treten Zeiten auf, wenn er langsam wird oder nicht mehr reagiert, was gelegentlich zu 503-Gateway-Timeouts führt, wenn versucht wird, eine Verbindung zum Server herzustellen.
Ich bin zu 99% sicher (basierend auf Tests, die ich ausgeführt habe), dass diese Verzögerung spezifisch aus der großen Anzahl von ausgehenden Anfragen kommt, die ich mit dem node-oauth-Modul , um externe APIs (Facebook, Twitter und viele andere) zu kontaktieren. Zugegeben, die Anzahl der ausgehenden Anfragen ist relativ groß (in der Größenordnung von 30 oder so pro Minute). Schlimmer noch, dies bedeutet häufig, dass die entsprechenden eingehenden Anfragen an meinen Server ca. 5-10 Sekunden dauern können. Allerdings hatte ich eine frühere Version meiner API, die ich in PHP geschrieben hatte, die diese Menge an ausgehenden Anfragen problemlos bewältigen konnte. Tatsächlich ist die CPU-Auslastung für die gleiche Anzahl (oder sogar weniger) Anfragen mit meiner Node.js-API etwa 5 mal so hoch wie die meiner PHP-API.
Also versuche ich zu isolieren, wo ich das verbessern kann und vor allem, um sicherzustellen, dass 503 Timeouts nicht auftreten. Hier sind einige Dinge, über die ich gelesen oder mit denen ich experimentiert habe:
Ich könnte weitermachen, aber kurz gesagt, konnte ich nur sehr wenige definitive Informationen darüber finden, wie die Leistung optimiert werden kann, damit diese ausgehenden Verbindungen meinen eingehenden Anforderungen von Clients nicht nachstehen.
Danke im Voraus für irgendwelche Gedanken oder Beiträge.
FWIW, ich benutze auch Express und Mungo, und meine Server werden in der Amazon Cloud gehostet (2x M1.Large für die Knotenserver, 2x Load Balancer und 3x M1.Small MongoDB Instanzen).
> Es scheint mir, dass der Agent Ihre Anforderungen auf die Standardstufe 5 pro Host beschränkt. Ihre Tests zeigen, dass das Ankurbeln der maxSockets
des Agenten geholfen hat ... Sie sollten das tun.
Sie können beweisen, dass dies das Problem ist, indem Sie einen Paket-Sniffer starten oder Ihrer Anwendung mehr Debug-Code hinzufügen, um zu zeigen, dass dies der limitierende Faktor ist.
Tags und Links node.js