我正在使用CentOS 6.3 64位,并且在增加FD限制时遇到问题:更改限制后SSH无法正常工作,每次登录我的服务器,输入密码后,“远程服务器关闭连接”。
这是一个没有任何“救援模式”的远程服务器,因此无法进行本地登录以获取任何错误日志。在这个问题发生之前我也尝试过ulimit -Sn但是也不行。
现在我必须在每次发生此问题时恢复快照,并且仍然不知道我的服务器有什么问题。
由于我正在处理每秒处理数百万个请求的高性能服务器,因此我需要一个非常高的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
答案 0 :(得分:1)
2 ^ 20是绝对限制。至少您必须更改NR_OPEN
中的linux/fs.h
。
#define NR_OPEN (1024*1024) /* Absolute upper limit on fd num */
我建议不要提高limit.conf
值。许多程序试图关闭它们可能打开的每个文件描述符,特别是在调用exec
之前。他们会非常长时间地关闭那些未打开的描述符。