Como obter um log de rede linux?

12

Temos um servidor java em execução no linux em uma porta específica que aceita conexões persistentes para milhares e milhares de usuários. Recentemente, nossos clientes não conseguem se conectar com um erro de tempo limite. Suspeitamos que o tráfego esteja ficando muito alto, mas nosso log java realmente mostra que muitos não estão conectados por segundo.

Suspeitamos que muitos tentem ao mesmo tempo e que sejam basicamente descartados no nível do sistema operacional e, portanto, o programa java nunca tenha a chance de aceitar a conexão? Existe algum tipo de login no linux que pode mostrar alguém tentando acessar um soquete?

erotsppa
fonte

Respostas:

7

iptables -I INPUT -p tcp --dport some_port -j LOGentão
tail -f /var/log/messages
Depois, para ver a quantidade de dados foi atingido por essa regra: iptables -L -n -v
Ou você pode executar tcpdump e grep para fora das portas.

James L
fonte
2
+1. Uma ligeira modificação pode funcionar melhor para pegar apenas as novas tentativas de conexão: iptables -I INPUT -p tcp --dport some_port -m state --state NEW. Observe que, a menos que você esteja interessado nos detalhes de cada tentativa de conexão, a omissão -j LOGevita o envio de spam no arquivo de log do sistema com muitos dados desnecessários.
Steven segunda-feira
3

Quando tenho problemas de rede realmente desagradáveis, costumo acionar o wireshark . Para mim, não há ferramenta de diagnóstico de rede melhor quando tenho que detalhar os detalhes minuciosos. E não se preocupe se não conseguir instalá-lo na caixa de origem ou de destino; você pode executar tcpdump -wpara gravar dados de pacote em um arquivo no início e / ou terminal e alimentar o arquivo no wireshark em outra caixa, conforme sua conveniência.

Chapeleiro Louco
fonte
Sim, eu recomendo colocar um filtro nele comotcpdump -nS dst port <some port>
gravyface 21/10/10
0

Seria bom ver exatamente o que seus threads Java estão obtendo no nível do soquete. Ao mesmo tempo, você deseja correlacionar isso com as informações da rede do sistema operacional. Dê uma olhada no AppFirst. Eles podem fazer esse tipo de coisa.

IAPaddler
fonte
0
watch -n1 -d "netstat -an | grep ESTABLISHED | wc -l"

mostra as conexões atualmente estabelecidas.

Compare isso com suas ulimitconfigurações ativas e, é claro, com o número máximo de conexões que seu aplicativo java pode suportar.

sjas
fonte