JSON データを返す Node.js RESTful API があります。API 呼び出しの 1 つが終了するまでに 10 ~ 20 秒かかることがあります (頻繁に発生します)。この長い RTT は、DiffBot、MailChimp、Facebook、Twitter などの外部 API に接続しているためです。API 呼び出しを短くできればいいのですが、できません。
もちろん、私はノード コードを適切な非同期方法で実装しましたが、問題は、サーバーが終了するのを待っている間、クライアントの (ノード アプリへの) インバウンド接続が有効であるため、パフォーマンスが低下する可能性があることです。実際、これがnode での長時間実行タイムアウトの問題を説明している可能性があると現在推測しています。
私はすでに maxSockets を膨大な数に増やしました...
require('http').globalAgent.maxSockets = 9999;
興味を引くために、新しい接続が確立されるたびにアクティブなソケットを出力しています (ここにコードがあります)。
次のような出力が得られます。
SOCKETS: {} { 'graph.facebook.com:443': 5, 'api.instagram.com:443': 1 }
そこにはあまりにも啓発的なものはありません。これまでに見た最大接続数は、すべてのホストで合計約 20 程度です。しかし、これは、着信接続について、またはそれらを最適化して、一度に多数の接続が存在する場合にサーバーが詰まらないようにする方法については何も教えてくれません (私はそうであると思います)。