system management
1752799 メンバー
6055 オンライン
108789 解決策
新規ポスト

accept() failed: No buffer space available

 
O_Y
時折のコントリビューター

accept() failed: No buffer space available

いつもお世話になっております。

当方が運用しているサーバにおいて、複数のプロセスから以下のエラーがsyslogに繰り返し出力されるようになりました。

accept() failed: No buffer space available

当方で確認したところ、accept()実行時にENOBUFSエラーが発生した際に出力されるメッセージであり、ENOBUFSエラーはカーネル空間内で資源無しが発生した際に発生する、とのことでした。

この場合、「資源」というのは具体的に何を指しているのでしょうか。

また、それはカーネルパラメータ等でチューニング可能なのでしょうか。

以上、お忙しいなか申し訳ございませんが、よろしくお願いいたします。

3件の返信3
O_Y
時折のコントリビューター

accept() failed: No buffer space available

OSのバージョンを書き忘れました。

HP-UX 11.0です。

以上、よろしくお願いいたします。

uhyo
貴重なコントリビューター

accept() failed: No buffer space available

一般論だと、基本的には、ソケットに対してのaccept()が失敗しているようなので、CPU、メモリのあたりを疑ってみるといいと思います。もし、CPU、メモリがまだまだ十分だとすると海外で同じ話題がフォーラムにあがってます。

そこでは、結果的に

ndd -set /dev/tcp tcp_early_conn_ind 0

にて解決しているみたいです。

ただし、RCに問い合わせした結果のようです。

今、手元に実機がないので、上記パラメータが

何を設定するものなのか、確認できませんが、

ndd -hとかで確認ができたはずです(man nddを参照してみてくだしあ)。それでrzpさんの環境に影響がないようであれば、試してみるのもいいかもしれません。
yoshimura
レギュラーアドバイザー

accept() failed: No buffer space available

HP-UX 11.X の TCP ソケットプログラムの accept() の

際に ENOBUF が返る状況ですが、以下の2パターンがあると

聞いています。

1) コネクション要求(SYN パケットの到着)から

accept() が呼び出される前に RST パケットが届いて

接続がキャンセルされた場合

2) システムのメモリが足りなくて、通信用のソケットを

準備できなかった場合

よっぽどメモリが足りないようなことで無ければ、1) のケースが

多いようです。