내 서버에 연결된 일부 클라이언트는 계속해서 핑이 매우 높다고 말하고 서버와의 연결이 계속 끊어집니다(예, 마인크래프트 서버이지만 파일 서버, 봇 및 기타 항목도 호스팅합니다). 일부 클라이언트는 핑 속도가 매우 빠릅니다. 저는 연결 상태가 좋지 않은 사람들과 이야기를 나눴는데, 그들은 자신에게서 더 멀리 떨어져 있고 우리 서버보다 더 높은 핑을 가져야 하는 다른 서버와 좋은 연결을 갖고 있는 것 같습니다.
이 문제를 해결하는 방법을 거의 모르기 때문에 어떻게 시작해야 하며, 일부 클라이언트에서 높은 핑 및 연결 끊김이 발생할 수 있는 원인은 무엇입니까?
지금까지 나는 다음과 같은 정보를 가지고 있습니다.
- 서버에 여유 메모리가 있습니다(많음).
- 서버가 전체 처리 능력을 사용하고 있지 않습니다.
- 실생활에서 비슷한 위치에 동시에 접속하더라도 일부 클라이언트는 성능이 매우 높으며 일부 클라이언트는 성능이 매우 낮습니다.
- 서버가 다시 시작되었습니다
- 스왑 메모리가 감소되었습니다.
- IPV4 포트에서 호스팅되는 서버
- 지연 클라이언트는 VPN 없이 서버에 직접 연결됩니다.
- 현재 실행 중인 nginx 또는 유사한 서비스가 없습니다.
- UFW를 사용하여 필요한 서버 포트 열기
- 서버에 무료 대역폭이 있습니다(hetzners 웹사이트에서 확인).
- 지연 클라이언트에는 ipv4 주소가 있지만 지연되지 않는 클라이언트도 마찬가지입니다.
- 일부 클라이언트는 무작위로(몇 분마다) 연결이 계속 끊어집니다.
- 서버는 Java를 사용합니다.
- 서버 소프트웨어가 최신 버전으로 업데이트되었습니다.
- 일부 netty 네트워크 패킷이 계속 손상됩니다(예: "내부 예외: io.netty.handler.codec.DecoderException: java.io.IOException: 패킷 0/31(ty)이 예상보다 큽니다. 패킷을 읽는 동안 추가 10280이 발견되었습니다. 바이트 31" 모든 오류가 이와 같은 것은 아니며 일부는 단지 클라이언트의 연결이 끊어졌다고 말합니다.)
ifconfig
재설정 후 몇 분 후에 인쇄된 내용은 다음과 같습니다 (ipv 주소가 약간 변경되었습니다).
enp35s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 95.217.120.173 netmask 255.255.255.192 broadcast 95.217.120.191
inet6 2a01:000:00:0000::2 prefixlen 64 scopeid 0x0<global>
inet6 fe80::aaa1:0000:0000:8e5 prefixlen 64 scopeid 0x20<link>
ether a8:a1:00:00:00:e5 txqueuelen 1000 (Ethernet)
RX packets 1562223 bytes 109572401 (104.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4615944 bytes 4081321353 (3.8 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device memory 0xf7200000-f727ffff
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 2945629 bytes 7593571263 (7.0 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2945629 bytes 7593571263 (7.0 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
현재 DNS 설정은 다음과 같습니다.
마인크래프트의 경우:
SRV 레코드_minecraft_tcp 0 5 25565 mc.karanteeni.net
로그MC 95.217.120.173
(namecheap dns에서 가져옴)
www의 경우:
(기본 github 가이드 설정)
기타:
URL 리디렉션 기록 http://95.217.120.173:<포트>/<차폐/비차폐>
달리기tracert mc.karanteeni.net
높은 핑 없이 내 컴퓨터에서 명령을 실행하면 다음과 같은 결과가 나타납니다.
1 <1 ms <1 ms <1 ms home [192.168.1.1]
2 6 ms 6 ms 6 ms dsl-trebng21-58c180-2.dhcp.inet.fi [88.193.000.0]
3 9 ms 8 ms 8 ms 141.208.000.000
4 9 ms 9 ms 8 ms 62.115.000.00
5 9 ms 10 ms 9 ms hls-b3-link.ip.twelve99.net [62.115.000.000]
6 10 ms 10 ms 10 ms hetzner-svc076536-ic365572.ip.twelve99-cust.net [62.115.52.255]
7 11 ms 10 ms 10 ms core32.hel1.hetzner.com [213.239.203.209]
8 10 ms 11 ms 10 ms ex9k1.dc4.hel1.hetzner.com [213.239.252.98]
9 10 ms 10 ms 10 ms static.173.120.217.95.clients.your-server.de [95.217.120.173]
이제 핑 값이 매우 높은 다른 소유자의 컴퓨터에서 명령을 실행합니다.
1 <1 ms <1 ms 2 ms router.asus.com [192.168.1.1]
2 120 ms 70 ms 181 ms 46-163-000-0.blcnet.fi [46.000.000.0]
3 7 ms 13 ms 16 ms 46-163-000-000.blcnet.fi [46.163.000.000]
4 6 ms 6 ms 8 ms 46-163-000-000.blcnet.fi [46.163.000.000]
5 8 ms 12 ms 9 ms 85.194.000.00
6 13 ms 14 ms 14 ms 87.236.154.178
7 16 ms 12 ms 13 ms 87.236.154.212
8 83 ms 271 ms 56 ms hetzner.ficix2.ficix.fi [193.110.224.44]
9 14 ms 12 ms 15 ms core32.hel1.hetzner.com [213.239.224.26]
10 13 ms 12 ms 18 ms ex9k1.dc4.hel1.hetzner.com [213.239.252.98]
11 160 ms 14 ms 12 ms static.173.120.217.95.clients.your-server.de [95.217.120.173]
작업 결과netstat -s | egrep -i 'loss|retran'
79234 segments retransmitted
TCPLostRetransmit: 7145
59 timeouts in loss state
58300 fast retransmits
6808 retransmits in slow start
TCPLossProbes: 8710
TCPLossProbeRecovery: 411
TCPSynRetrans: 2691