• ベストアンサー

Too many open files in system

いつもお世話になっています。 今日、自宅PC(linux)のコマンド画面で $ ls と入力すると、 ls: .: Too many open files in system と表示されるだけで、コマンドが実行できません、 rootでも同じで、ls以外にも他のいくつかのコマンドも使えませんでした。 しばらくしてからもう一度やって見ると普通にできたのでとりあえずはいいのですが、調べて見るとこの現象のせいでHPが見れない、メールサーバーがとまる。等あまりよくないことがわかったので、原因を突きとめたいと思い質問させていただきました。 自分で調べた結果、「ls: .: Too many open files in system」のようなエラーが出るのは「file descriptor」を使い切っていることが原因であるということまでは分かりました。(合ってますかね^^;) なので、できればこの「file descriptor」を大量消費しているプロセスを突き止め、それをやめさせ、回復する方法を知りたいのです。よろしくお願いします。 サーバーは、http、mailサーバーになっていて、java、postgresqlなども動いています。

  • lafi
  • お礼率61% (11/18)

質問者が選んだベストアンサー

  • ベストアンサー
  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.5

(補足2) TurboLinux 7.0で確認してみたら、lsofコマンドがありますので、 実行してみて下さい。 # lsof | less lsofはプロセスによってオープンされているファイル情報を 表示するコマンドです。 たぶん、今のままではlsofを実行しても、too many open... のエラーが出るでしょうから、いくつかのサービスを止めたりして、 どのプロセスがファイルをたくさん開いているか調べるのが良いかと思います。

lafi
質問者

お礼

xjdさん回答ありがとうございます。 無事コマンドは実行できました。(再起動したからですかね) コマンドを実行すると、ずいぶんたくさん出てきますね。まさかこんなにファイルを開いているとは、、、 ざっと見た感じ、httpd関連がかなり使っているようなので、何とかしたいですね。 助かりました。ありがとうございます。 多分この「file descriptor」のことでまた質問すると思うので、そのときはまたよろしくお願いします。

その他の回答 (4)

  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.4

(補足) そういえば以前、postgresqlのバグで同じ現象になった 事を思い出しました。 selectがfile descriptorをクローズしなかったのが原因だったと覚えています。 一度バージョンなど確認ください。

lafi
質問者

お礼

問題なのはver6.2.1ですよね? いま使用中のpostgresqlのバージョンは7.1.2なので大丈夫だと思います。(このバージョンがfile descriptorをクローズし忘れているというバグに対応済みであるかどうかまでは、はっきりと調べられなかったんですけど^^;) 回答ありがとうございました。

  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.3

ディスクの空き容量が無くなってる! なんて事はないでしょうか? df -h で各パーティションの空き容量はどうですか?

lafi
質問者

お礼

xjdさん回答ありがとうございます。 >ディスクの空き容量が無くなってる! これはまずないです。80GBありますからね~ 一応調べて見たのですが、どのパーティションも使用率15%を超える場所はありませんでした。 (最大でも3GBしか使ってません)

  • asuca
  • ベストアンサー率47% (11786/24626)
回答No.2

>あのあと、HPサーバーが一部止まった(CGIが動かない)うえ、コマンドプロントも開かない状態になってしまい、けっこう切実な問題になってきました^^; >できれば回避策を教えていただきたいのですが、、、 うーん、どこに原因があるのかが問題ですがアップデータをまずは当ててみてはどうでしょう。

参考URL:
http://www.turbolinux.co.jp/update/update_history/7/
lafi
質問者

お礼

度々ありがとうございます。 そうですね。そうすることにします。 前のお礼で書いた問題は、再起動することで直った(?)のでこれからも定期的に再起動することでとりあえず回避しておきます。 そこでもう一つご質問が、、 ”どこに原因があるか”というのは調べることができるのですか?

  • asuca
  • ベストアンサー率47% (11786/24626)
回答No.1

OSのバグですね. もうすでにバグレポートは多数送られているようですので改善されたバージョンを待つしかないかと思います。

lafi
質問者

お礼

asucaさん回答ありがとうございます。 OSのバグなんですか、、、 あのあと、HPサーバーが一部止まった(CGIが動かない)うえ、コマンドプロントも開かない状態になってしまい、けっこう切実な問題になってきました^^; できれば回避策を教えていただきたいのですが、、、 バグってことは無いんですかね。 (いま使ってるのは、TurboLinux7.0です。)

関連するQ&A

  • サイト閲覧中に「500 Too Many Files Open」と表示される

    いつもお世話になっております。 会社の業務上、とあるサイト(ラーニング系)にアクセスする必要があるのですが、同僚がJAVAのアップデートを行なったらしく(PCの知識はほとんどなし)、それ以前は閲覧できていたページが、表題の ------------------------------------------------ 500 Too Many Files Open Java・・・ : : ------------------------------------------------ とテキスト表示されてしまうようになり、困っています。 リブートしてもダメでした。 JAVAのランタイムを再インストールしようかと思い、プログラムの追加と削除を実施しようとしたところ、「権限なし」でストップします(だったらなぜアップデートできたのか?と思いましたが詳細は私自身の知識不足もあり、不明)。 他の同様のスペックのパソコンでは閲覧可能ですので、やはりJAVAアップデートが悪いのではないかと思います。 解決できないかと色々「Too Many Files Open」で検索してみましたが、コーディングの注意点ばかりヒットしてしまい、閲覧(使用)者側の対処方法が見つかりません。 自分でコーディングしたものではないので、OSやブラウザの設定変更くらいしか思いつかないのですが、なんとかなるなら救済してあげたいのです。 思い当たる解決策などございましたら、ご教授いただけると幸いです。

  • 自動起動のサーバーのtoo many open filesについて

    socket通信の簡単なサーバーを作っているのですが、クライアントの数が多くなるとtoo many open filesと出てしまい、困っています。 普通に(sshでログインして)サーバーを起動すると、2000以上のクライアントを受け付けることができるのですが、同じ物をinittabやrc.localから起動すると、1000付近で上記のエラーが出て、それ以上の接続を受け付けなくなってしまいます。 lsofでディスクリプタの数を数えると、1080で止まるようでした。ソケットだけなら1000に届いていないと思います。 色々と設定を変えてみたのですが、自分では原因を追及できませんでした。 ご存じの方、何卒対策を教えていただけないでしょうか。 よろしくお願い致します。 環境は、Fedora Core 5(2.6.15-1.2054_FC5)、ファイルディスクリプタ関連の設定は > ulimit -n 65535 > cat /proc/sys/fs/file-max 65535 > cat /proc/sys/net/core/somaxconn 10240 となっています。

  • Apacheエラー 「(24)Too many open files」が頻発します

    こんにちは、当方 自宅サーバにてWebサイトを運営しております。 環境は以下の通りです。 ディストリビューション:CentOS4.6 Apache2.0.52 MySQL 4.1.20 PHP 4.3.9 メインホストとバーチャルホストにて 朝方にかけ、403エラーが頻発します。 Apacheを再起動すると直るのですが、すぐに上記のエラーが頻発するようになります。 エラーをしらべたところ、 [Sun Mar 30 14:42:31 2008] [crit] [client ***.***.***.***] (24)Too many open files: /var/www/html/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable 上記のエラーがたくさん出力されていることがわかりました。 しかし上記の/var/www/html/には、.htaccessを設置しておりません(confに認証関連の設定を書いているため)。 集中アクセスが起こったのかと推測しましたが、 当方のApacheは、mod_evasiveにてDoS攻撃をある程度防げるようになっており アクセスログを見ても、それらしいアクセスはありませんでした。 このエラーメッセージは、どういう意味なのでしょうか。 また、対策としてどのようなものがあげられるのでしょうか。 CMSサイトを運営している以上、このような状態が続くのは サイトの死活問題です。 よろしくお願いいたします。

  • メールを連送するアプリで Too many sending とのエラー

    メールを連送するアプリで Too many sending とのエラーが出る C#のSmtpClientクラスを使用して日本全国の約300ケ所にメールを送るプログラムを組みました メールサーバはOCNです 必ず43通目で MySmptClient.Send(Message); ステートメントがエラーを起こします エラー内容はclient host rejected: Too many sending です 連送が原因と思いメール送信間隔に2秒を取ったらOKでした【1秒ではNG】 この2秒間隔は私の当てズッポウです 『次のメールをメールサーバに送ってもいいよ!』というタイミングを知るには、どのような方法がありますか?

  • ARCserve Agent for Open Filesをお使いの方

    稼働中のサーバで、ARCserve r11.1本体と、Agent for Open Files、 Disaster Recovery Optionが入っています。 今回、このサーバで稼働中のAPに対して、パッチをあてることになりましたが、不安要素もあるため、パッチ前のサーバの状態をバックアップしておき、パッチ後問題があれば、元の状態に戻せるようにしておきたいと思います。 Disaster Recovery Optionを使うほどではないと思いますので、Agent for Open Filesで、Windwosのシステムも含めてすべてバックアップしておけばよいのかなと思います。 Agent for Open Filesをお使いの方で、このような使い方をされている方がいらっしゃれば、使い方/注意点など、ご教示頂きたくお願い致します。

  • SMTP送信時に421 Too Many SessionsでClientから送信不可

    BASP21を用いてメールを送信するようにしていますが、 一定の量を超えると、次のエラーが送信されます。 421 Too Many Sessions 一時的に全てのメールが送信できなくなります。 1~2秒後に送信されます。 これは、クライアント側の問題なのでしょうか? サーバー側(今回OCNのプロバイダメールサーバーを使用)なので しょうか? or モデム?

  • cgiでのファイルオープン

    cgiでファイルをオープンする時 open IN,"$file" でオープンしているのですが この時、$file に他のサーバー下のファイルを指定すると エラーになってしまうんですか? 管理しているサーバーが2つあり、他方のサーバーからファイルを 読み込んで処理をしたいのですが、どうしたらいいのでしょうか? 読み込むだけで、書き込むことはしません。 お知恵を貸してください。 よろしくお願いします。

    • 締切済み
    • CGI
  • log4jの使用方法について

    現在、Javaで開発されたアプリケーションのシステム運用を行っています。 (OSはLinux、APサーバーはTomcatを使用) あるバグ解析のため、ログ出力(log4jを使用)を追加したところ Socket Exception:Too many open filesが発生しました。 原因はログ出力した際のファイルクローズ漏れでは?と指摘を受けました。 log4jのログ出力機能を使用した際にはクローズ処理は必要なのでしょうか? 以上、よろしくお願いします。

  • Java 環境 コンパイルできない

    本に付属していたJDK5.0をインストールし 環境変数を設定しました。 %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;c:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\Microsoft SQL Server\80\Tools\Binn\;C:Program Files\Java\jdk1.5.0\bin コマンドプロントにて、Example1.javaという、サンプルファイルを javac Exsample.java と打ち込みコンパイルしてみたのですが 'javacは、内部または外部コマンド、 操作可能なプログラムまたはバッチファイルとして 認識されません。となりコンパイルできません。 visual studioをしようすることになり javaファイルがVJ#になっているのも、何か関係しているのでしょうか? なにが原因なのかわからないので、 ご教授いただければ幸いです。

  • CGIのシステムの件

    システム屋やヘビーユーザーに教えていただきたいのですが、 Linux+Apache+PostgreSQL+Perlでシステムを構築する予定です。 Perlは5.8を使うことは決めていますが、 他のバージョンについてどれを使えば今後メンテナンスで楽になるのでしょうか? ・Linuxのディストリビューション ・Apacheのバージョン ・PostgreSQLのバージョン です。因みに、 DNSサーバー、メールサーバー、WWWサーバー、DBサーバーと分けます。