Linux 2.6.36 カーネルを実行していますが、ランダムなエラーがいくつか見られます。のようなもの
ls: error while loading shared libraries: libpthread.so.0: cannot open shared object file: Error 23
はい、私のシステムは一貫して「ls」コマンドを実行できません。:(
dmesg の出力にいくつかのエラーがあります。
# dmesg | tail
[2808967.543203] EXT4-fs (sda3): re-mounted. Opts: (null)
[2837776.220605] xv[14450] general protection ip:7f20c20c6ac6 sp:7fff3641b368 error:0 in libpng14.so.14.4.0[7f20c20a9000+29000]
[4931344.685302] EXT4-fs (md16): re-mounted. Opts: (null)
[4982666.631444] VFS: file-max limit 1231582 reached
[4982666.764240] VFS: file-max limit 1231582 reached
[4982767.360574] VFS: file-max limit 1231582 reached
[4982901.904628] VFS: file-max limit 1231582 reached
[4982964.930556] VFS: file-max limit 1231582 reached
[4982966.352170] VFS: file-max limit 1231582 reached
[4982966.649195] top[31095]: segfault at 14 ip 00007fd6ace42700 sp 00007fff20746530 error 6 in libproc-3.2.8.so[7fd6ace3b000+e000]
明らかに、file-max エラーは疑わしいように見え、一緒にクラスター化されており、最近のものです。
# cat /proc/sys/fs/file-max
1231582
# cat /proc/sys/fs/file-nr
1231712 0 1231582
これも少し奇妙に思えますが、このシステムで 120 万個のファイルを開いているわけにはいきません。これを使用しているのは私だけで、ローカル ネットワーク外のユーザーには表示されません。
# lsof | wc
16046 148253 1882901
# ps -ef | wc
574 6104 44260
私はいくつかの文書を見ました:
ファイルの最大値とファイル番号:
カーネルはファイル ハンドルを動的に割り当てますが、まだ解放しません。
file-max の値は、Linux カーネルが割り当てるファイル ハンドルの最大数を示します。ファイル ハンドルが不足しているというエラー メッセージが多数表示される場合は、この制限を増やすことをお勧めします。
従来、file-nr の 3 つの値は、割り当てられたファイル ハンドルの数、割り当てられているが未使用のファイル ハンドルの数、およびファイル ハンドルの最大数を示していました。Linux 2.6 は、空きファイル ハンドルの数として常に 0 を報告します。これはエラーではなく、割り当てられたファイル ハンドルの数が、使用されているファイル ハンドルの数と正確に一致することを意味します。
file-max よりも多くのファイル記述子を割り当てようとすると、printk で報告されます。「VFS: file-max limit reached」を探します。
これを最初に読んだのは、カーネルには基本的に組み込みのファイル記述子リークがあるということですが、それは非常に信じがたいことです。ファイル記述子を解放するために、アクティブに使用されているシステムを頻繁に再起動する必要があることを意味します。私が言ったように、これが真実であるとは信じられません。なぜなら、Linux システムが何ヶ月も (場合によっては何年も) 稼働し続けるのは私にとって普通のことだからです。一方で、ほぼアイドル状態のシステムが 100 万を超えるファイルを開いたままにしていることが信じられません。
修正またはさらなる診断のためのアイデアはありますか? もちろん、システムを再起動することもできますが、これが数週間ごとに繰り返される問題にはなりたくありません。その場しのぎの措置として、ウィンドウを 1 つしか開いていなかったにもかかわらず、lsof の出力が 2000 行近くもあった Firefox を終了しました (!)。久々の問題。(編集: おっと、話が早すぎました。この質問を書き終える頃には、症状が戻っていました/戻ってきました)
助けてくれてありがとう。