Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> LinuxシステムFAQ >> Linuxハンドルリークの問題ビュー

Linuxハンドルリークの問題ビュー

  

背景:

Linuxオンラインサーバを開発するとき、ハンドルリークの問題がよく発生します。 Linuxシステム設計では、すべてがファイルの原則、つまりディスクファイル、ディレクトリ、ネットワークソケット、ディスク、パイプなど、すべてがファイルであるため、ファイルを開くと、fdが返されます。ハンドル頻繁にファイルを開くか、ネットワークソケットを開いて解放するのを忘れた場合、ハンドルがリークする可能性があります。 Linuxシステムでは、プロセスが呼び出せるファイルハンドルの数は制限されていますデフォルトでは、各プロセスが呼び出せるハンドルの最大数は1024です。この制限を超えると、プロセスは新しいハンドルを取得できなくなります。新しいファイルまたはネットワークソケットを開くことはできず、オンラインサーバーに対するサービスは拒否されます。

ハンドルを表示および変更します。

Linuxシステムでは、ulimit– nでプロセスあたりの最大ハンドル数を確認し、ulimit– HSn 10240でプロセスの最大ハンドル数を変更できます。ハンドル数が上限に達すると、開いているファイルが多すぎます。

プロセスによって占有されているハンドルの数を表示するには、いくつかの方法があります。

1)cat /proc /pid /fdでスレッドpid番号が開いているスレッドを表示できます。

2) lsofコマンドを使用した場合、/usr /sbin /lsof-p 21404コマンドの結果は次のようになります。


コマンドPIDユーザーFDタイプデバイスサイズノード名前vas21404 root cwd DIR 8,3 4096 30195729 /home /users /root /vasvas 21404 root rtd DIR 8,2 4096 2 /vas 21404 root txt REG 8,3 112201650 30195914 /home /users /root /vasvas 21404ルートメモリREG 0,0 0 [stat](統計ファイルはありません) Vas 21404ルートメモREG 8,2 105080 339377 /lib64/ld-2.3.4.sovas 21404ルートメモREG 8,2 1493186 339367 /lib64/tls/libc-2.3.4.sovas 21404ルートメモREG 8,2 17943 339392 /lib64/libdl-2.3.4.sovas 21404 root mem REG 8,2 613297 339369 /lib64/tls/libm-2.3.4.sovas 21404 root mem REG 8,2 79336 490463 /usr/lib64/libz.so.1.2 .1.2


COMMAND:プロセスの名前PID:プロセス識別子USER:プロセス所有者FD:ファイル記述子、アプリケーションはファイル記述子でファイルを識別します。 cwd、txtなど。TYPE:DIR、REG、IPV4、FIEOなどのファイルタイプ。DEVICE:指定されたディスクの名前SIZE:ファイルのサイズNODE:インデックスノード(ディスク上のファイルの識別)NAME:開いているファイルの正確な名前< Br>

さらに、lsofコマンドは、ポートを占有しているプロセスも表示できます。

/usr /sbin /lsof-i:9001

Copyright © Windowsの知識 All Rights Reserved