-2

CentOS 6.3 64 ビットを使用していますが、FD 制限の増加に問題があります。制限を変更した後、パスワードを入力した後、サーバーにログオンするたびに SSH が機能せず、「リモート サーバーによって接続が閉じられました」。

「レスキューモード」のないリモートサーバーであるため、ローカルログインを行ってエラーログを取得する方法はありません. この問題が発生する前に ulimit -SHn も試しましたが、うまくいきませんでした。

この問題が発生するたびにスナップショットを復元する必要がありますが、サーバーの何が問題なのかまだわかりません。

毎秒数百万のリクエストを処理する高性能サーバーで作業しているため、非常に高い FD 制限が必要です。私の構成は次のとおりです。

/etc/security/limits.conf
* hard nofile 2000000
* soft nofile 2000000


/etc/security/limits.d/90-nproc.conf  
*          soft    nproc     1024


/etc/ssh/sshd_config
Protocol 2
SyslogFacility AUTHPRIV
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
UsePAM yes
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
X11Forwarding yes
Subsystem       sftp    /usr/libexec/openssh/sftp-server


/etc/pam.d/sshd
auth       required     pam_sepermit.so
auth       include      password-auth
account    required     pam_nologin.so
account    include      password-auth
password   include      password-auth
session    required     pam_selinux.so close
session    required     pam_loginuid.so
session    required     pam_selinux.so open env_params
session    optional     pam_keyinit.so force revoke
session    include      password-auth
session    required     pam_limits.so   


/etc/sysctl.conf
fs.file-max = 2000000
fs.nr_open = 2000000 
4

1 に答える 1

1

2^20 が絶対限界です。最低でも着替える必要がありNR_OPENますlinux/fs.h

#define NR_OPEN (1024*1024) /* Absolute upper limit on fd num */

limit.conf必要以上に値を上げることはお勧めしません。多くのプログラムは、特に を呼び出す前に、開く可能性のあるすべてのファイル記述子を閉じようとしますexec。開いていない記述子を閉じて、非常に長い時間ループします。

于 2013-04-09T08:17:55.523 に答える