2012-04-15 60 views
1

非常に大規模な(2048台の)家庭用分散キーストアをテストしていたときにこのエラーが発生しました。通信パターンはn:nであり、これは各マシンが他のマシンに多くの要求を送信することを意味します。 私はC TCPソケットを実装するためにSO_REUSEADDRを使用してソケットをリサイクルしました。 このエラーを引き起こす可能性のあることについて、お手伝いできますか?コードは複雑ですが、単純化して必要なロジックを失うことなくここに投稿するのは難しいです。だから私は、デバッグを開始する可能性のあるすべての原因を知りたいだけです。 は8000>は、/ proc/sys/kernel /スレッド-maxのTCP接続エラー「利用可能なバッファスペースがありません」

がキューを聞くの8000>は、/ proc/sys/net /コア/ SOMAXCONN #limitエコー、デフォルトは128ですエコー:

はところで私は、設定を変更しました/ netdev_max_backlog

エコー10>は、/ proc/sys/net/IPv4の/

エコーtcp_fin_timeout "10000 65000">は、/ proc/sys/net

エコー8000>は、/ proc/sys/net /コア/ ipv4/ip_local_port_range

これは、最大接続数を有効にするためのものです。私はあなたの「いいえバッファスペース利用可能」エラーと同じ問題を抱えていた-Tony

+0

あまりにも多くのオープンディスクリプタがMTUの設定ミスやその他の条件の数も、このエラーを引き起こす可能性があり、私が想像してみてください。この問題を示す最小限のコード例がなければ、確かに言うことはできません。 –

+0

エラーは、私が以前に会った「オープンファイル記述子が多すぎます」ではありませんでした。私もこれらの設定を持っています:echo 8000>/proc/sys/kernel/threads-max ;; echo 8000>/proc/sys/net/core/somaxconn ;; echo 8000>/proc/sys/net/core/netdev_max_backlog ;; echo 10>/proc/sys/net/ipv4/tcp_fin_timeout ;; echo "10000 65000">/proc/sys/net/ipv4/ip_local_port_range – Tony

答えて

2

おかげで、。あなたがしたエコーパッチは一時的な設定とみなされます。

上記のようにエコーを使用して一時設定を変更した後は、ネットワークを再起動する必要があります。これにより、「使用可能なバッファスペースがありません」というエラーがクリアされました。

あなたは/etc/sysctl.confファイルの末尾に行を追加することにより、永続的な設定を追加する必要があります。

SOMAXCONN = 8000

こちらをご覧ください: http://www.cyberciti.biz/files/linux-kernel/Documentation/networking/ip-sysctl.txt

がそれを願っています助けてください。

ロバート

http://NetworkCities.com

関連する問題