[server] 2 개의 Linux 호스트 간의 대기 시간 문제를 해결하는 방법

2 개의 리눅스 호스트 간의 대기 시간은 약 .23ms입니다. 그들은 하나의 스위치로 연결됩니다. Ping & Wireshark는 대기 시간 번호를 확인합니다. 그러나이 대기 시간을 일으키는 원인에 대한 가시성이 없습니다. 대기 시간이 호스트 A 또는 B의 NIC 또는 스위치 또는 케이블로 인한 것인지 어떻게 알 수 있습니까?

업데이트 : .23ms의 대기 시간은 기존 응용 프로그램에 좋지 않습니다.이 응용 프로그램은 매우 높은 빈도로 메시지를 보내고 0.1ms로 줄일 수 있는지 확인하려고합니다.



답변

일반적으로 iperf 유틸리티 에 대한 일부 고급 스위치를 사용하여 시스템 간 네트워크 성능, 특히 대기 시간 및 지터를 볼 수 있습니다.

이것이 UDP 또는 TCP 기반 메시지 스트림입니까?

설정에 대한 자세한 정보가 필요하다고 위에서 언급했습니다. 대기 시간이 짧은 메시징 응용 프로그램 인 경우 하드웨어, 드라이버 및 OS 조정에 걸친 전 세계 튜닝 및 최적화 기술 이 있습니다. 그러나 실제로 더 많은 정보가 필요합니다.

편집하다:

자, 이것은 TCP 메시징입니다. /etc/sysctl.conf매개 변수 를 수정 했습니까 ? 송신 / 수신 버퍼는 어떻게 생겼습니까? 실시간 커널 만 사용하는 것은별로 도움이되지 않지만 인터럽트를 CPU에 바인딩하는 지점으로 이동하면 메시징 앱의 실시간 우선 순위 ( chrt)를 변경 tuned-adm하고 시스템 프로필을 수정하는 것이 도움이 될 수 있습니다 …

이는 일반적인 EL6 시스템 인 것처럼 들리므로 성능 조정 기준을 설정하는 쉬운 방법은 시스템의 성능 프로파일을 조정 된 프레임 워크 내에서 사용 가능한 다른 프로파일로 변경하는 것 입니다. 그런 다음 거기에서 빌드하십시오.

귀하의 경우 :

yum install tuned tuned-utils
tuned-adm profile latency-performance

차이점을 보여주는 빠른 매트릭스 :

하드웨어에 대해 말씀해 주시겠습니까? CPU, NIC, 메모리의 종류?

링크를 테스트하는 것이 흥미로울 수 있습니다 … iperf 테스트를 사용해보십시오 …

한 시스템에서 iperf UDP 리스너를 시작하십시오. 다른 한편으로, 첫 번째 연결을여십시오. 빠른 라인 품질 테스트.

# Server2
[root@server2 ~]# iperf -su

# Server1
[root@server1 ~]# iperf -t 60 -u -c server2

필자의 경우 낮은 지터와 낮은 핑 시간 :

------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size:  224 KByte (default)
------------------------------------------------------------
[  3] local 192.168.15.3 port 5001 connected with 172.16.2.152 port 36312
[ ID] Interval       Transfer     Bandwidth        Jitter   Lost/Total Datagrams
[  3]  0.0-20.0 sec  2.50 MBytes  1.05 Mbits/sec   0.012 ms    0/ 1785 (0%)

PING server1 (172.16.2.152) 56(84) bytes of data.
64 bytes from server1 (172.16.2.152): icmp_seq=1 ttl=63 time=0.158 ms
64 bytes from server1 (172.16.2.152): icmp_seq=2 ttl=63 time=0.144 ms

하드웨어와 인터페이스에 오류가 있는지 확인했습니다. 원하는 경우 시스템 간 전환을 제거하고 직접 연결이 어떻게 보이는지 확인하십시오. 높은 지터 (분산)를 원하지 않으므로 확인하십시오.

그러나 솔직히 말하면 현재 설정을 수행하는 핑 시간이 있어도 응용 프로그램을 종료하기에는 충분하지 않습니다. 보내기 / 받기 버퍼 조정 경로를 따라 가겠습니다. 참조 : net.core.rmem_max, net.core.wmem_max및 기본값 …

다음과 같은 것 /etc/sysctl.conf(맛을 조정하십시오) :

net.core.rmem_default = 10000000
net.core.wmem_default = 10000000
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216


답변