Aumenta a limitação de FD e o SSH não funciona?

2

Estou usando o CentOS 6.3 de 64 bits e tendo problemas com o aumento da limitação de FD: o SSH não funciona depois de alterar a limitação, todas as vezes que eu fiz logon no servidor, após digitar a senha e "conexão fechada pelo servidor remoto".

É um servidor remoto sem qualquer "modo de recuperação", portanto não há como fazer um login local para obter qualquer log de erro. Eu também tentei ulimit -SHn antes que este problema acontecesse, mas não funcionasse também.

Agora tenho que restaurar o instantâneo toda vez que esse problema aconteceu e ainda não tenho idéia do que há de errado com o meu servidor.

Como estou trabalhando em um servidor de alto desempenho que manipula milhões de solicitações por segundo, preciso de uma limitação muito alta de FD, aqui está minha configuração:

/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 
    
por Reck Hou 09.04.2013 / 10:16

2 respostas

0

Finalmente, encontrei uma maneira de superar a limitação 2 ^ 20 sem modificar o código-fonte do kernel:

Em /etc/sysctl.conf :

fs.nr_open = 10485760

Modifique fs.nr_open sobre 2 ^ 20 para resolver este problema.

Além disso, o limite 2 ^ 20 não é o fim do mundo. Há uma pessoa que conheço ter construído com sucesso um servidor do CentOS muito próximo desse limite, seu registro é 1025216 por enquanto. Se ele usa mem mais alto com configuração correta, sem dúvida ele pode superar essa limitação facilmente.

Aqui está o que ele fez (escrito por chinês, mas você pode ver a configuração dele):

link link link link

    
por 12.04.2013 / 10:48
1

2 ^ 20 (aproximadamente um milhão) é o limite máximo do descritor de arquivo ( NR_OPEN ) suportado no Linux. Seriam necessárias muitas mudanças, incluindo a recompilação do kernel, para aumentá-lo. Ele também quebraria muitas aplicações de espaço do usuário que dependem do limite ser baixo.

Eu suspeito que você esteja latindo completamente na árvore errada. Não há correlação entre a taxa de solicitações e o número de descritores de arquivos necessários.

    
por 09.04.2013 / 12:59