免責事項: この記事には、サードパーティ製品に関する情報が含まれている場合があります。 そのような情報は参照だけのためです。 Alibaba Cloudは、明示または黙示を問わず、サードパーティ製品のパフォーマンスと信頼性、および製品に対する操作の潜在的な影響に関して、いかなる保証も行いません。
問題の説明
SSHを使用してLinuxインスタンスにログインすると、コマンドラインインターフェイス (CLI) を使用すると、次のエラーメッセージが表示されます。
-bash: fork: retry: Resource temporarily unavailable.
pam_limits(sshd:session):could not sent limit for 'nofile':operaton not permitted.
Permission denied.
原因
Shellプロセスに含めることができるファイルの最大数は、サーバーのUlimitシステム環境に含まれるクォータよりも大きい。
解決策
以下の点にご注意ください。
インスタンス設定やデータの変更など、リスクを引き起こす可能性のある操作を実行する前に、データのセキュリティを確保するために、インスタンスのディザスタリカバリ機能とフォールトトレランス機能を確認することを推奨します。
ECSおよびRDSインスタンスを含むがこれらに限定されないインスタンスの構成およびデータを変更する場合、スナップショットを作成するか、RDSログバックアップを有効にすることを推奨します。
Alibaba Cloud管理コンソールでログオンアカウントやパスワードなどのセキュリティ情報を承認または送信した場合は、そのような情報をタイムリーに変更することを推奨します。
注: この記事の構成と説明は、CentOS 7.6 64ビットおよびCentOS 5 64ビットオペレーティングシステムでテストされています。 他のタイプおよびバージョンのオペレーティングシステム構成は異なっていてもよい。 詳細については、オペレーティングシステムの公式ドキュメントを参照してください。
上記の原因に基づいて、CentOSシステムバージョンのlimit. confファイルを変更して、システム環境の制限を完全に変更する必要があります。 CentOS 6以降のバージョンでは、X-nproc.conf
ファイルはシステム環境の制限を管理します。 したがって、異なるバージョンの操作指示は次のとおりです。
注: X-nproc.conf
ファイルには、システムバージョンによって異なるプレフィックスがあります。たとえば、CentOS 6では90-nproc.conf
、CentOS 7では20-nproc.conf
です。
CentOS 6より前のバージョン
例としてCentOS 5 64ビットシステムバージョンを取り上げます。 手順は次のとおりです。
Passmanagement terminallogをインスタンスに移動し、次のコマンドを実行して現在のUlimitシステムリソース制限を表示し、オープンシステムリソース制限の値が小さすぎるため、システムリソース制限を有効にするかどうかを確認します。
cat /etc/security/limits.conf
コマンドの出力は次のとおりです。デフォルトでは、システムリソースの制限はありません。
説明注:
システムユーザー <domain> を制限する必要があります。
*
すべてのユーザーを置き換えることができます。<type> には、
soft
、hard
、-
3つのパラメーターがあります。soft
: 現在のシステムでアクティブな <value> 値。hard
は、システムで設定された最大 <value> 値を指します。soft
the limitはhard
limitより高くすることはできません。-
soft
とhard
の値は同時に設定されます。
<item> 制限する必要があるリソースの種類。 次の表に、リソースタイプのパラメーターを示します。
core
は、カーネルファイルのサイズを制限することを示します。rss
は、最大永続設定サイズを指します。nofile
は、開いているファイルの最大数を示します。noproc
は最大プロセス数を示します。
システムがシステムリソース制限を有効にして構成する場合は、
limits.conf
ファイルを編集し、リソースタイプのコード操作を選択してコメントアウトし、オンサイトのフィードバック結果に基づいてnoproc
またはnofile
パラメーター制限を変更または削除します。説明注: 例としてnoprocをメモします。
次のコマンドを実行して
limits.conf
ファイルをバックアップします。cp -af /etc/security/limits.conf /root/limits.conf_bak
次のコマンドを実行して編集モードに入ります。
vim /etc/security/limits.conf
nofileパラメーターが制限するリソースタイプコード。 コマンド出力は次のとおりです。
保存して編集モードを終了した後、Linuxインスタンスを再起動します。
CentOS 6以降のバージョン
例としてCentOS 7.6 64ビットバージョンを取り上げます。 手順は次のとおりです。
管理端末からインスタンスにログインし、次のコマンドを実行して現在のUlimitシステムリソースの制限を表示します。
cat /etc/security/limits.d/20-nproc.conf
同様の出力が表示されます。 次の図は、rootユーザーを除くすべてのユーザーに対して、システムリソースのスロットリングが有効になっており、接続プロセスの最大数が4096ていることを示しています。 オンサイト環境で確認します。
CentOS
ファイルを変更するには、CentOS 6以前のバージョンの手順に従います。説明注: これらのファイルをバックアップしてから
前
の操作。上記の操作が完了し、設定が保存されたら、対応するLinuxインスタンスを再起動します。
ドキュメント
SSHリモート接続の問題の詳細については、「SSHおよびSSHの原則によるLinuxインスタンスのリモートログオン障害のトラブルシューティングのガイドライン」をご参照ください。
適用範囲
ECS