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

推薦する

MySQL クエリ データベース容量方法手順

すべてのデータベースの合計サイズを照会する方法は次のとおりです。 mysql> informa...

Linux crontab コマンドの使用

1. コマンドの紹介contab (cron テーブル) コマンドは、Windows のスケジュール...

Linuxシステムのログの詳細な紹介

目次1. ログ関連サービス2. システム内の共通ログファイル1. ログ関連サービスCentOS 6....

フレックスレイアウトによるシームレスなスクロールのサンプルコード

この記事では、シームレスなスクロールを実現するためのフレックスレイアウトのサンプルコードを主に紹介し...

Docker イメージのインポートとエクスポートのコード例

Dockerイメージのインポートとエクスポートこの記事では、移行、バックアップ、アップグレードなどの...

Docker データボリュームの一般的な操作コードの例

開発者が Dockerfile を使用してイメージをビルドする場合は、イメージをビルドするときにデー...

JavaScript による省・市連携効果の実現

この記事では、省と都市間の連携効果を実現するためのJavaScriptの具体的なコードを参考までに共...

Win10にmysql8.0.15 winx64をインストールしてサーバーに接続する際に問題が発生しました

1. mysql-8.0.15をダウンロード、インストール、設定する1. 公式サイト (https:...

コンパイル/サーバーなしでブラウザにCommonJSモジュールを実装する

目次導入1. one-click.jsとは2. パッケージングツールはどのように機能しますか? 3....

Ubuntu 18.04 コマンドでタッチパッドを無効/有効にする

Ubuntu では、ショートカット キーでタッチパッドをオフにできない状況によく遭遇します。この問題...

ウェブサイトアイコンを追加するにはどうすればいいですか?

最初のステップは、アイコン作成ソフトウェアを準備することです。まず、いわゆるアイコンは拡張子 .ic...

three.js を使用してクールなアシッドスタイルの 3D ページ効果を実現します

この記事では、主にReact + three.jsテクノロジースタックを使用して3Dモデルの読み込み...

JS で if 判定をスムーズに行う方法

目次序文コードの実装アイデア 1アイデア2要約する参照ドキュメント序文プロジェクト内の小さな要件ポイ...

HTML ボディタグと HTML でよく使われる制御タグの詳細な説明

1. <body> タグ: Web ページの本体をマークするために使用されます。body...

MySQLにおける正規表現の一般的な使用法

MySQL における Regexp の一般的な使用法特定の文字列を含むあいまい一致# コンテンツフィ...