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

推薦する

Ubuntu 20.04 ベスト設定ガイド (初心者向け)

1. システム構成1. sudoパスワードをオフにするsudo コマンドを使用するたびにパスワード...

MySQL 接続で認証失敗エラーが発生する場合の分析と解決方法

[問題の説明]アプリケーション側では、次のエラーが時々表示されます。メソッド 'mysql_...

Vscode が Ubuntu にリモート接続する際のエラー問題の解決方法

1. 事件の背景:仕事上、Ubuntu への vscode リモート接続を使用する必要があります。 ...

Vue+ElementUI Treeの使い方

Vue+ElementUI Treeの使い方は参考までに。具体的な内容は以下のとおりです。 フロント...

すべてまたは逆の選択機能を実現するJavaScript

この記事では、全選択または選択を反転する機能を実現するためのJavaScriptの具体的なコードを参...

nginxとlvsのメリットとデメリット、そして適切な使用環境

まず最初に、ロード バランシングとは何かについて説明します。ロード バランシングとは、リクエストの内...

WeChatアプレットでvantフレームワークを使用するための具体的な手順

目次1. アプレットのプロジェクト ディレクトリを開き、ファイルの場所を開きます。 2. プロジェク...

VMware CentOS 仮想マシンのインストールとネットワーク構成のグラフィックチュートリアル

1. CentOSイメージをダウンロードする1.1 ダウンロードウェブサイトhttp://mirro...

Zabbixリモートコマンド実行の詳細な例

目次1つ。環境二。予防三つ。例Zabbix トリガーがしきい値に達すると、アラート メッセージの送信...

フロントエンド JavaScript でローカルあいまい検索機能を実装する方法の例

目次1. プロジェクトの見通し2. 知識ポイントObject.assign() の使用法filter...

DOCTYPE 文書型宣言 (Web ページ愛好家必読)

DOCTYPE 宣言 作成するすべてのページの先頭に、ドキュメント宣言が必要です。はい、そうでしょう...

証明書を使用してリモート Docker サーバーに接続する方法

目次1. スクリプトを使用してDockerのTLSを暗号化する2. Dockerの設定を変更してリモ...

nginx で仮想ホストを構成するための詳細な手順

仮想ホストは、インターネット上で実行されているサーバー ホストを複数の「仮想」ホストに分割する特殊な...

Docker クロスホストネットワーク (オーバーレイ) の実装

1. Dockerのホスト間通信Docker クロスホスト ネットワーク ソリューションには以下が含...

Nginx 502 Bad Gateway エラーの原因と解決策

Nginx 502 Bad Gateway エラーに何度か遭遇しました。ここでメモしておこうと思いま...