質問

典型的なCネットワークサーバーの実装では、受け入れ保留中のキューのサイズをで設定できます 聞く. 。新しい接続収入とキューにスペースがなくなると、econnrefusedがクライアントに送信されるか、リクエストが無視されます。

このキューの状態を知る方法はありますか?高負荷イベントベースのデーモンでは、クライアントからのレトリを検出しているため、このキューがいっぱいになり、接続が無視されていると疑っています。

前もって感謝します。

役に立ちましたか?

解決

Linux:/proc/sys/net/ipv4/tcp_max_syn_backlog:

記憶されている接続要求の最大数は、まだクライアントを接続することから承認を受け取っていません。

デフォルト値は、128MBを超えるメモリを持つシステムでは1024、低メモリマシンでは128です。サーバーが過負荷に苦しんでいる場合は、この数を増やすようにしてください。

/proc/sys/net/core/somaxconn:somaxconnとしてユーザースペースで知られているソケットリスニング()バックログの制限。デフォルトは128です。TCPソケットの追加チューニングについては、TCP_MAX_SYN_BACKLOGも参照してください。

これらは関連するsysctlsです。私が今座っているopenbsdでsysctl -a reveals:net.inet.ip.maxqueue = 300

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top