네트워크에 있는 약 700개의 장치에서 명령을 실행하는 ESXi VM이 있습니다. 사용되며 Expect
이러한 장치의 노후화로 인해 성능이 저하됩니다. 두 가지가 잘 섞이지 않습니다. 왜냐하면 Expect 스크립트가 출력을 계속하려면 오랜 시간 동안 기다려야 하기 때문입니다.
이를 방지하기 위해 우리 팀은 ping
장치에 연결하기 전에 테스트하기로 결정했습니다. 패킷 손실이 발생하면 나중에 논의하겠습니다.
우리가 가진 문제는 핑 테스트가 다음과 같다는 것입니다.
loss=`ping -i 0.2 -w 2 $1 | grep "packet loss" | awk '{print $6}'`
loss=${loss%?}
echo "$loss"
2초에 핑 10번 - 하지만 우리는많은9% 패킷 손실 응답. 예를 들어 우리는 보통74/700패킷 손실 감지로 인해 테스트가 일찍 종료됩니다.74년 39월이 보고서 중9%, 나머지는 10의 배수로 보고됩니다.
우리가 아는 한, 이것은 실제로 말이 되지 않습니다. 10개의 패킷이 전송되고 있습니다. 그중 하나가 손실되면 손실은 10%입니다. 이는 거의 관찰되지 않지만 발생합니다.숫자 9가 나타나는 원인이 되는 어떤 일이 기억에서 일어나고 있을 가능성이 있습니까?이것이 합법적인 패킷 손실 사례라면 이는 우리에게 큰 뉴스입니다.
답변1
핑에는 여러 버전이 있습니다. 어떤 사람들에게는 -w
선택권이 있습니다. 어떤 사람들은 그것을 받아들이지만 기록하지 않습니다. 일부 ping 버전에서는 다음과 같은 일이 발생합니다.
$ ping -i 0.2 -w 2 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.091 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.091 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.089 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.086 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.088 ms
64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.097 ms
64 bytes from 127.0.0.1: icmp_seq=6 ttl=64 time=0.091 ms
64 bytes from 127.0.0.1: icmp_seq=7 ttl=64 time=0.095 ms
64 bytes from 127.0.0.1: icmp_seq=8 ttl=64 time=0.095 ms
64 bytes from 127.0.0.1: icmp_seq=9 ttl=64 time=0.092 ms
--- 127.0.0.1 ping statistics ---
11 packets transmitted, 10 packets received, 9% packet loss
round-trip min/avg/max/stddev = 0.086/0.091/0.097/0.000 ms
즉, 데이터 패킷이 전송되면 시간이 만료된 후에는 다시 수신되지 않습니다.
따라서 11개들이 1개의 패키지가 손실되며 이는 9% 손실입니다.
이러한 핑 버전의 경우 -c
옵션을 추가하면 됩니다.
$ ping -i 0.2 -c 10 -w 5 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.127 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.096 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.088 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.084 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.084 ms
64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.093 ms
64 bytes from 127.0.0.1: icmp_seq=6 ttl=64 time=0.089 ms
64 bytes from 127.0.0.1: icmp_seq=7 ttl=64 time=0.089 ms
64 bytes from 127.0.0.1: icmp_seq=8 ttl=64 time=0.087 ms
64 bytes from 127.0.0.1: icmp_seq=9 ttl=64 time=0.094 ms
--- 127.0.0.1 ping statistics ---
10 packets transmitted, 10 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.084/0.093/0.127/0.000 ms
즉, 10개의 패킷이 수신되거나 5초의 시간 제한이 경과할 때까지 0.2초마다 패킷을 시도합니다.