서버 데이터 버퍼 문제 찾기
다음은 우리가 알고 싶은 상황입니다.
본고는 "데이터 패키지가 네트워크 전송 과정에서 잃어버렸으니traceroute/계수 TCP로 재전송하여 진단합시다"(물론 중요하지만)!
데이터 패키지가 버려졌는지 어떻게 알 수 있습니까?
제가 트위터에 질문을 했는데 아주 유용한 답이 나왔어요. "넷stat-i 보세요!"이것은 내 노트북에서 실행된 결과입니다.
bork@kiwi~> sudo netstat -i Kernel Interface table Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg docker0 1500 0 0 0 0 0 0 0 0 0 BMU enp0s25 1500 0 1235101 0 242 0 745760 0 0 0 BMRU lo 65536 0 21558 0 0 0 21558 0 0 0 LRU nlmon0 3776 0 551262 0 0 0 0 0 0 0 ORU
보아하니 받은 (RX) 데이터 패키지가 enp0s25 (내 무선 카드) 에서 분실된 것 같다.하지만 TX 가방을 잃어버리지 않았습니다.
어떤 사람도 나에게 ethtool-S를 실행하는 것이 도움이 될 것이라고 알려주지만, 나의 ethtool에는 -S 옵션이 없다.
왜 패킷이 버려졌는지 어떻게 알아요?
구글 검색을 통해 멋진 도구인dropwatch를 발견했다.기존 Ubuntu 설치 패키지는 없지만 github를 통해 다운로드할 수 있습니다.
https//github.com/pavel-odintsov/drop_watch
다음은 내가 컴파일할 수 있는 설명입니다.
sudo apt-get install -y libnl-3-dev libnl-genl-3-dev binutils-dev libreadline6-dev git clone https://github.com/pavel-odintsov/drop_watch cd drop_watch/src vim Makefile # comment out the -Werror argument to gcc make
여기는 출력!그것은 나에게 어떤 내부 핵 함수가 데이터 패키지를 잃어버렸는지 알려준다. 쿨!
sudo ./dropwatch -l kas Initalizing kallsyms db dropwatch> start Enabling monitoring... Kernel monitoring activated. Issue Ctrl-C to stop monitoring 1 drops at tcp_v4_do_rcv+cd (0xffffffff81799bad) 10 drops at tcp_v4_rcv+80 (0xffffffff8179a620) 1 drops at sk_stream_kill_queues+57 (0xffffffff81729ca7) 4 drops at unix_release_sock+20e (0xffffffff817dc94e) 1 drops at igmp_rcv+e1 (0xffffffff817b4c41) 1 drops at igmp_rcv+e1 (0xffffffff817b4c41)
퍼프로 버려진 데이터 패키지 모니터링
무슨 일이 일어났는지 디버깅하는 또 다른 멋진 방법이 있다.
thomas graf는 퍼프를 사용하여 kfree_를 감시할 수 있다고 알려주었다skb 이벤트, 데이터 패키지를 언제 버릴지 알려줍니다.
sudo perf record -g -a -e skb:kfree_skb sudo perf script
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.