Linux で開いているファイルが多すぎる問題を解決する方法

Linux で開いているファイルが多すぎる問題を解決する方法

原因は、プロセスが特定の時点でシステム制限を超える数のファイルと通信リンクを開くことです。 システムによって現在設定されているハンドルの最大数を表示するには、コマンド ulimit -a を使用できます。

コアファイルサイズ (ブロック、-c) 0

データセグメントサイズ (キロバイト、-d) 無制限

スケジュール優先度 (-e) 0

ファイルサイズ(ブロック、-f)無制限

保留中のシグナル (-i) 31767

最大ロックメモリ (キロバイト、-l) 64

最大メモリサイズ (キロバイト、-m) 無制限

開いているファイル (-n) 1024

パイプサイズ (512 バイト、-p) 8

POSIX メッセージ キュー (バイト、-q) 819200

リアルタイム優先度 (-r) 0

スタックサイズ (kbytes, -s) 8192

CPU時間(秒、-t)無制限

最大ユーザープロセス数 (-u) 31767

仮想メモリ (キロバイト、-v) 無制限

ファイルロック (-x) 無制限

ご覧のとおり、開いているファイルの構成は1024です。次のコマンドを実行すると、開いているファイルを増やすことができます。

制限 -n 65535

この変更方法では、開いているファイルの数を一時的に 65535 まで増やすことができますが、この構成はシステムを再起動すると無効になります。

もう一つの方法は、システム設定ファイルを変更することです。Ubuntuを例にとると、デフォルトの設定ファイルは次のようになります。

制限

この設定ファイルを追加する

* ソフト nofile 65535 * ハード nofile 6553

プロセスによって現在開かれているハンドルの数を表示する場合は、次のコマンドを使用できます。

lsof -p プロセスID | wc -l

さらに、スーパーバイザーを使用してプロジェクトをホストして開始すると、この構成が有効にならないという問題が発生します。これは、スーパーバイザーがオープン ハンドルの数をデフォルトで 1024 に設定するためです。

プロセスの最大オープンファイル数を表示する場合は、このプロセスのプロセス番号に対応する制限を通じて表示できます。

cat /proc/プロセスID/制限

1行目は次のとおりです。

最大オープンファイル数 10241024バイト

スーパーバイザホストプログラムのデフォルト値は1024で、これはスーパーバイザ構成の最大数です。このとき、スーパーバイザ構成ファイルを手動で変更する必要があります。変更方法は次のとおりです。Ubuntuシステムを例にとると、スーパーバイザ構成ファイルsupervisord.confを見つけます。

[supervisord]オプションにminfdsオプション設定を追加します

[supervisord]minfds=65535; 利用可能な起動ファイル記述子の最小数; デフォルト 1024

設定後、スーパーバイザーを再起動する必要があります(systemctlを例に挙げます)

systemctl スーパーバイザを再起動

効果が出るだろう

ちなみに:

cat /proc/プロセス番号/制限

対応するプロセスで開いているファイルの数を確認します

最大オープンファイル数 6553565535 バイト

上記は、Linux で開いているファイルが多すぎる問題を解決する方法の詳細な内容です。Linux で開いているファイルが多すぎる問題を解決する方法の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • Linux仮想メモリについての簡単な説明
  • Linux での C++ コンパイルとリンクの分析
  • Pytorch1.8GPU (CUDA11.1)のLinuxインストールの実装
  • docker を使用して Linux 環境に Springboot パッケージをデプロイするチュートリアル
  • Linux コマンドラインで R 言語を使用して絵を描く例
  • Linuxディレクトリ構造の詳細な紹介
  • Linuxでよく使われるコマンド パフォーマンスコマンド
  • Linux のファイル システム タイプの表示方法の例
  • Linux システムでの pip アップグレード エラーの解決策

<<:  CSS ピックアップ矢印、カタログ、アイコン実装コード

>>:  Word のコンテンツを Web サイトのエディターに直接コピーすることはお勧めしません。

推薦する

Nginx 仮想ホストを構成する 3 つの方法 (ドメイン名に基づく)

Nginx は、IP ベースの仮想ホスト構成、ポート ベースの仮想ホスト構成、ドメイン名ベースの仮...

マテリアルデザインで水滴アニメーションボタンを実現するための純粋なCSS

序文こういう特殊効果ってよく見かけますよね。すごくかっこいいですよね。 これは、Google Mat...

進捗バー効果を実現するJavaScript

この記事では、プログレスバー効果を実現するためのJavaScriptの具体的なコードを参考までに紹介...

Mysql テーブルコメントフィールド取得操作

余計なことは言わないで、コードだけ見てみましょう〜 -- テーブル内のフィールドコメントを表示および...

MySQL SQL ステートメントが遅い場合の一般的な原因と解決策

1. インデックス不足または無効なインデックスによるクエリの遅延数千万件のデータを含むテーブルで、イ...

React NativeのstartReactApplicationメソッドの簡単な分析

今回は、 RNの起動処理を整理しました。最後のstartReactApplication比較的複雑で...

uni-app WeChatアプレット認証ログイン実装手順

目次1. appIDの申請と設定1. appidの取得方法2. AppIDの設定2. 基本的なユーザ...

CentOS8でのnmcliの使い方の詳しい説明

RHEL8/CentOS8 に基づく一般的な nmcli コマンド # IP を表示する (ifco...

ウェブページのエクスペリエンス: ウェブページのカラーマッチング

<br />ウェブページの色はウェブサイトのイメージを確立する鍵の一つですが、ネットユー...

MySQLをインストールして設定し、ルートパスワードを変更する方法

1. インストールapt-get install mysql-server にはアカウントとパスワー...

docker+gitlab+gitlab-runnerの詳細なデプロイメント

環境サーバー: centos7クライアント: ウィンドウCentos7 に docker+gitla...

Windows ホストと Docker コンテナに共有フォルダを設定してマウントする手順

Docker コンテナ内のプログラムは、ホスト ディレクトリ内のデータにアクセスして呼び出す必要があ...

MySQL が外部キーを作成できない理由と解決策

2 つのテーブルを関連付けるときに、外部キーを作成できませんでした。このブログから、問題は、ポイント...

MySQL における explain の役割の詳細な説明

1. MYSQLインデックスインデックス: MySQL がデータを効率的に取得するのに役立つデータ構...

Linux での MySQL のアンインストールとインストールのグラフィック チュートリアル

ブログを書くのは初めてです。開発に携わって2年になります。仕事の後に何か有意義なことを見つけたいと思...