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 サイトのエディターに直接コピーすることはお勧めしません。

推薦する

JS はシンプルなカレンダー効果を実装します

この記事では、シンプルなカレンダー効果を実現するためのJSの具体的なコードを参考までに紹介します。具...

フォームタグの Enctype 属性とその応用例の紹介

Enctype : ブラウザがデータをサーバーに送り返すときに使用するエンコーディングのタイプを指定...

モバイル端末の適応により、px は自動的に rem に変換されます。

まずpostcss-pxtoremをインストールします: npm install postcss-p...

Windows 10 での mysql-8.0.17-winx64 のインストール方法

1.公式サイトからダウンロードして解凍する参考: ダウンロード後、zip 圧縮ファイル (mysql...

MYSQL開発パフォーマンス調査:バッチデータ挿入の最適化方法

1. どのような問題に直面しましたか?標準 SQL では、通常、次の SQL 挿入ステートメントを記...

入力ボックスのコンテンツプロンプトと非表示機能を実装する JavaScript

入力ボックスが小さい場合、内容を入力した後に、入力内容が拡大されたプロンプト ボックスを表示したいこ...

Nginx はリクエスト接続を統合し、ウェブサイトのアクセス例を高速化します

序文世界最高の Web サーバーの 1 つである Nginx の利点は明らかです。 Nginx がリ...

Docker+jenkins+python3環境を使用して非常に詳細なチュートリアルを構築する

序文:自動化を記述した後、毎日サーバー上で実行する必要があります。このような問題に遭遇しました。Je...

Linux trコマンドの使用

1. はじめにtr はテキストの一部を変換または削除するために使用されます。 tr は transl...

JS ES6コーディング標準の詳細な説明

目次1. ブロックスコープ1.1. let は var を置き換える1.2. グローバル定数とスレッ...

Vueストレージにはブール値のソリューションが含まれています

Vueはブール値でストレージを保存します今日、問題に遭遇しました。バックグラウンドから返された真偽の...

Linux 環境の Apache で https サービスを有効にする方法の詳細な説明

この記事では、Linux 環境の Apache で https サービスを有効にする方法について説明...

CSS3を使って歌詞進行テキストカラー塗りつぶし変更の動的効果を実装するアイデアの詳細な説明

音楽を再生すると、曲が進むにつれて歌詞が徐々に色づきます。色は単語ごとに変わるのではなく、左から右へ...

Ubuntu 18.04 に vsftpd をインストールするための実装コード

vsftpdをインストールする $ sudo apt-get install vsftpd -y v...

Nginx で Basic Auth ログイン認証を設定する方法

nginx でファイルサーバーを構築することもありますが、これは一般に公開されていますが、サーバーが...