리눅스 네트워크 로그를 얻는 방법?


14

우리는 수천 및 수천 명의 사용자를위한 지속적인 연결을 허용하는 특정 포트에서 Linux에서 실행되는 Java 서버를 가지고 있습니다. 최근에 고객이 시간 초과 오류로 연결할 수 없습니다. 트래픽이 너무 높아지고 있다고 생각하지만 Java 로그는 실제로 초당 연결되는 사람이 많지 않음을 보여줍니다.

우리는 너무 많은 사람들이 동시에 시도하고 있으며 기본적으로 OS 레벨에서 삭제되어 Java 프로그램이 실제로 연결을 수락 할 기회를 얻지 못할 수 있다고 생각합니다. 누군가 소켓에 부딪 히려고 시도하는 것을 보여줄 수있는 리눅스 로그가 있습니까?

답변:


8

iptables -I INPUT -p tcp --dport some_port -j LOG그런 다음
tail -f /var/log/messages
해당 규칙에 의해 얼마나 많은 데이터가 적중되었는지 확인하십시오. iptables -L -n -v
또는 tcpdump를 실행하고 포트를 grep 할 수 있습니다.


2
+1. 새로운 연결 시도 만 포착하기 위해 약간의 수정이 더 효과적 일 수 있습니다 iptables -I INPUT -p tcp --dport some_port -m state --state NEW. 각 연결 시도의 세부 사항에 관심이 없으면 생략 -j LOG하면 많은 불필요한 데이터가있는 시스템 로그 파일의 스팸이 발생하지 않습니다.
Steven 월요일

3

네트워크 문제가 심할wireshark를 실행 하는 경향이 있습니다. 저에게있어 중요한 세부 사항을 찾아야 할 때 더 나은 네트워크 진단 도구는 없습니다. 소스 또는 대상 상자에 설치할 수없는 경우 걱정하지 마십시오. tcpdump -w시작 및 / 또는 엔드 포인트에서 파일에 패킷 데이터를 기록하고 편의에 따라 다른 상자의 wireshark에 파일을 공급하도록 실행할 수 있습니다 .


그래, 필터를 씌우는 것이 좋습니다tcpdump -nS dst port <some port>
gravyface

0

Java 스레드가 소켓 레벨에서 얻는 내용을 정확하게 보는 것이 좋습니다. 동시에 OS 네트워크 정보와 연관 시키려고합니다. AppFirst를 살펴보십시오. 그들은 이런 종류의 일을 할 수 있습니다.


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

현재 설정된 연결을 보여줍니다.

이것을 활성 ulimit설정과 Java 응용 프로그램이 처리 할 수있는 최대 연결 수와 비교하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.