Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxについて >> Linuxでオープンしているファイルが多すぎますか?

Linuxでオープンしているファイルが多すぎますか?

  
                

Linuxシステムの操作をしているとき、開いているファイルが多すぎてプロンプトが飛び出してしまうことがあります。つまり、プログラムを閉じると正しく閉じられなかった可能性があります。ファイルを開くとそれを解決する方法が表示されます。

答え、

[ルート@ LXADMIN nginxの]#猫を/proc /sys /fs /ファイル-maxの

8192

ファイルシステムで開くことができるファイルの最大数

[root @ lxadmin nginx]#ulimit -n

1024

プログラムの上限は1024個のファイルしか開けません

[root @ lxadmin nginx]#ulimit -n 8192調整

するか、または起動ファイル/etc/rc.d/rc.localの末尾(/etc/sysctl.confの最後)に追加するオープンファイルの数を恒久的に調整します。 fs.file-max = xxxを追加してください。)

ulimit -n 8192

答え2、

Linuxカーネルは時々「オープンファイルが多すぎます」と報告します。 file-maxのデフォルト(8096)が小さすぎます。この問題を解決するには、rootとして以下のコマンドを実行します(または/etc/rcS.d/*の下のinitスクリプトに追加します)。

#echo' 65536'》 /proc /sys /fs /File-max#2.2と2.4のカーネルに適用

#echo' 131072'》 /proc /sys /fs /inode-max#バージョン2.2のカーネルにのみ

Answer 3

方法は、次のようにオペレーティングシステムのオープンファイル制限を変更することです。

1.オープンファイルの最大数に従ってシステムを設定し、/proc /sys /fs /file-を確認します。最大ファイルは、オープンファイルの最大数が正しく設定されていることを確認します。

#cat /proc /sys /fs /file-max

設定が小さすぎる場合は、/etc /sysctl.conf変数を適切な値に変更します。これは再起動するたびに有効になります。設定が十分に大きい場合は、次の手順をスキップしてください。

#echo 2048》 /proc /sys /fs /file-max

/etc/sysctl.confファイルを編集してダウンストリームに挿入します。

fs.file-max = 8192

2. /etc/security/limits.confファイルで、オープンファイルの最大数を設定します。

次の行を追加してください。

* - nofile 8192

この行は、1ユーザーあたりのデフォルトのオープンファイル数を2048に設定します。 "nofile"オプションには2つの制限があることに注意してください。商品の下のハードとソフトです。変更された最大オープンファイル数を有効にするには、これら2つの制限を設定する必要があります。 - と - の文字設定を使用すると、ハード設定とソフト設定が同時に設定されます。

ハードリミットは、ソフトリミットに設定できる最大値を示します。ソフトリミットとは、現在のシステムが有効になっている設定値のことです。ハードリミット値は一般のユーザーが下げることができます。しかし増やすことはできません。ソフトリミットをハードリミットより高く設定することはできません。 rootユーザーだけがハードリミット値を増やすことができます。

ファイル制限の説明を追加するときは、現在の値を2倍にすることができます。例を次に示します。デフォルト値の1024を増やしたい場合は2048に増やした方がよいでしょう。増やし続けたい場合は4096に設定する必要があります。

インデックスを作成するとき、マージファクタが小さすぎるために作成されるファイルの数がオペレーティングシステムの制限を超えるという2つの可能性がありますこの場合、マージファクタを変更して操作を変更できます。システム内のオープンファイルの数には制限があり、もう1つの方法では、統合係数が仮想マシンのメモリによって制限され、それ以上大きいサイズに調整することはできません。制限が解決されました。

これに基づいて、次の設定ファイルも変更しました。

vi /etc/sysctl.conf

追加:

#時間を短縮します。 tcp_fin_timeout接続のデフォルト値

net.ipv4.tcp_fin_timeout = 30

#tcp_keepalive_time接続の時間デフォルト値を減らします

net.ipv4.tcp_keepalive_time = 1800

#tcp_window_scalingを無効にする

net.ipv4.tcp_window_scaling = 0

#tcp_sackを無効にする

net.ipv4.tcp_sack = 0

# tcp_timestampsをオフにします。

net.ipv4.tcp_timestamps = 0

次にサービスネットワークを再起動します。これらはTCPソケットに関連する最適化です。

また、/etc /rc.d /rc.localに追加する必要がありますが、再起動時に有効になります。

echo' 30' "/proc /sys /net /ipv4 /tcp_fin_timeout

echo' 1800'" /proc /sys /net /ipv4 /tcp_keepalive_time

"&proc /sys /net /ipv4 /tcp_window_scaling" /proc /sys /net /ipv4 /tcp_sack

echo' 0' /proc /sys /net /ipv4 /tcp_timestamps

すべてのプログラムがrootで実行されるわけではないので、すべてのLinuxにはハードオープンファイルとソフトオープンファイルが区別されています。 n値が高い値に調整され、/etc/security/limits.conf内のnofileの値に達することができません。

この最適化後lsof -p $ java_pid

Copyright © Windowsの知識 All Rights Reserved