gnu/linuxの係争中の接続のキューのサイズを知る
-
25-10-2019 - |
質問
典型的な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
所属していません StackOverflow