サーバーでlsofが非常に遅い


8

Linuxサーバーの1つでlsofを実行/tmp/incoming_data.txtして、ext3システムの1つのファイル()が他のプログラムによって開かれているかどうかを確認しています。私のサーバーにはたくさんのTCP接続があります。奇妙なことに、「sudo lsof」の実行が完了するまでに約2分かかり、その2分間に99.x%のCPUを使用します。

私が使用したコマンドはsudo lsof /tmp/incoming_data.txtです。私は「フューザー」を試してみましたが、これはほぼ同じ量のCPUと実行時間を必要とします。この問題を解決するために何かできることはありますか?


その2分が経過した後、何がlsof表示されますか?そのファイルを開いているプロセスとスレッドはいくつありますか?lsofを実行していないときのCPU負荷はどれくらいですか?
Michael Martinez

回答:


7

開いているTCPまたはUDP接続をスキップできることが確かな場合は、それらが多すぎると述べたので、lsofの方言固有のオプションを使用できます-X

lsof -X

詳細については、lsofのmanページを読み、「-X」を検索してください。


16

-nIP接続のDNS名の解決をスキップするオプションを渡します。これはほぼ確実に減速の最大の部分になります。


1
こんにちは、@ Zoredache、返信ありがとうございます。私は-nと-Pオプションの両方を試しましたが、どちらも役に立たないようです。どうもありがとう!
James Gan

それでも遅い場合は、おそらくstraceを使用して実行し、なぜ遅いのかを理解できるかどうかを確認します。
Zoredache 2015年

1
これはMacOS X El Capitanで私にとってはうまくいった
Andrew Miner

@JamesGan同じ問題があります。問題を理解したことはありますか?
Noldorin

すごい。これはMacOS 10.14で私にとってはうまくいった
Ninja

0

ファイルのlsofを高速化する素晴らしい仕事をするこの小さなNPMパッケージを見つけました:https : //www.npmjs.com/package/lsof-mac-fast

それを使用するラッパースクリプトを作成しました。

node ~/tools/MacOs/lsof.js db.mv.db 1000
repeating using interval: 1000
COMMAND  PID  USER   FD   TYPE DEVICE  SIZE/OFF     NODE NAME
java    7336 jumar  256u   REG    1,4 194465792 53854404 
db.mv.db

これは私のスクリプトです:

// https://www.npmjs.com/package/lsof-mac-fast
var fastLsof = require('lsof-mac-fast');

var myArgs = process.argv.slice(2);
var fileToCheck = myArgs[0];
var repeatIntervalMs = myArgs[1];
// console.log('myArgs: ', myArgs);

function lsofFile(file) {
  fastLsof.lsof([file], function(err, stdout, stderr) {process.stdout.write(stdout)});
}

if (repeatIntervalMs) {
  // repeat until killed
  // https://javascript.info/settimeout-setinterval
  console.log('repeating using interval: ' + repeatIntervalMs);
  var timerId = setInterval(() => lsofFile(fileToCheck),  repeatIntervalMs);
} else {
  // just one time
  lsofFile(fileToCheck);
}

繰り返し間隔は非常に短くなる可能性があります。たとえば、10 msは正常に機能するようです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.