Conectar-se ao meu servidor via sftp às vezes resulta em um problema:
if (select(max+1, rset, wset, NULL, NULL) < 0) {
que é a linha 1428 do sftp-server.c do openssh 5.2p1 (loop principal do sftp_server_main ()).
O mesmo travamento ocorre ao abrir uma conexão de dados sobre, por exemplo, baunilha
FTP. Às vezes sou capaz de passar depois de alguns segundos ou
minutos, mas às vezes a conexão expira no lado do cliente
antes que o servidor seja capaz de responder. Quando o servidor responde e
Estou conectado, então se eu emitir, por exemplo 'ls' vai ficar novamente no
select () por algum tempo.
ssh está OK; pode se conectar sem atrasos e emitir comandos, etc.
Eu não acho que seja a morte da tomada:
root@dl:~# cat /proc/net/sockstat
sockets: used 304
TCP: inuse 444 orphan 302 tw 152 alloc 451 mem 5280
UDP: inuse 4
RAW: inuse 0
FRAG: inuse 0 memory 0
root@dl:~# netstat -tan | awk '{print $6}' | sort | uniq -c
2 CLOSE_WAIT
121 CLOSING
1 established)
109 ESTABLISHED
17 FIN_WAIT1
9 FIN_WAIT2
1 Foreign
300 LAST_ACK
20 LISTEN
2 SYN_RECV
433 TIME_WAIT
Também não parece estar fora dos descritores de arquivo, mas eu não estou 100%
certeza disso. E mesmo se fosse, isso não produziria um erro, não
pendurar?
Parece estar um pouco relacionado ao número de conexões
O nginx está sendo veiculado. Eu posso desligar o nginx e o problema vai
longe. Dito isto, o nginx e o apache são capazes de coexistir
este estado sem nenhum problema (o apache nunca trava). As pessoas também podem
conectar-se a um servidor de IRC na mesma máquina sem problemas durante
esses "episódios". Então, talvez seja limitado a selecionar ()?
Qual recurso é nginx usando que não é soquetes / descritores de arquivo
que está causando select () para travar? Estou puxando meu cabelo por isso.
Eu tentei todas as coisas usuais de ajuste de rede (as várias configurações
através de sysctl, reduzindo os tempos limite), tudo sem efeito. A máquina não está sem RAM e a CPU e a E / S estão bem.
Linux dl 2.6.26-2-486 #1 Sat Jun 11 14:47:34 UTC 2011 i686 GNU/Linux
Está executando o Debian Lenny.
O que pode fazer com que select () pendure na verificação de alguns soquetes?