서버에서 느린 전송 속도 디버깅


9

나는 이것을 간단하지만 설명하기 위해 설명하려고합니다. 이것은이 서버 또는 현재 사용중인 ISP 전용이 아닙니다 . 여러 ISP에 있고 다른 공급자 (미국의 GoDaddy, 캐나다의 iWeb 및 GloboTech)가있는 서버를 보유하면서 수년 동안 동일한 문제가 발생했습니다. 일반적인 것은 Windows Server OS (2003 및 2008 r2)뿐입니다. 그러나 현재 서버와 현재 ISP 만 살펴 보겠습니다.

문제 :

로컬 워크 스테이션과 원격 전용 서버간에 전송 속도가 매우 느립니다. 내 서버는 100Mbps 포트에 있고 로컬 워크 스테이션은 광섬유를 통한 50Mbps 대칭 연결에 있습니다.

증상 :

미국과 멕시코의 다른 서버 및 위치에 대해 speedtest.net에서 테스트를 수행 할 때 서버와 워크 스테이션 모두 우수한 연결 속도에 매우 가까운 결과를 얻습니다. Dropbox에서 서버 나 워크 스테이션으로 큰 파일을 다운로드하면 단일 연결에서 각각 10Mbps 및 5MBps의 전송 속도를 얻습니다. 각 연결 속도는 100Mbps 및 50Mbps입니다. 우연히.

그러나 파일을 서버에서 (HTTP 또는 FTP를 통해) 워크 스테이션으로 전송하면 50Mbps 속도 (5MBps 전송 속도)에 가깝지 않지만 대신 3Mbps에 해당합니다. (300kbps 전송 속도).

전송 속도가 느린 이유를 이해하려고합니다. 디버깅 방법을 잘 모르겠습니다. 호스팅 제공 업체와 관련된 문제에 대한 티켓을 얻을 때마다 추적 출력을 요청하고 결국 중간에있는 일부 서버에서 비난합니다. 그러나 우리가 처음에 말한 것을 고려할 때, 그것은 정확하지 않은 것 같습니다 : GoDaddy, iWeb 및 GloboTech가있는 서버를 가지고 있고 다른 ISP를 사용하는 동안이 정확한 속도 / 문제를 보았습니다. 다른 유형의 인터넷 서비스 . 서버 영역 어딘가에 고정 된 설정처럼 보입니다.

내가 한 테스트 :

SPEEDTEST

다음은 멕시코 시티에있는 ISP 데이터 센터의 서버를 포함하여 다른 원격 서버에 대해 전용 서버에서 실행 된 speedtest.net의 속도 테스트입니다 .

캐나다 : 다운로드 94.64Mbps 및 업로드 94.87 http://www.speedtest.net/my-result/3470801975

산호세, 캘리포니아 : 다운로드 93.58Mbps 및 업로드 95.48Mbps http://www.speedtest.net/my-result/3470805341

멕시코 시티 (내 ISP의 데이터 캔터에있는 서버) : 다운로드 92.99Mbps 및 업로드 95.39Mbps http://www.speedtest.net/my-result/3470810269

로컬 워크 스테이션에서 동일한 서버에 대해 이러한 테스트를 실행하면 50Mbps 연결에 가까운 속도도 얻을 수 있습니다.

TRACERT

이것은 내 워크 스테이션에서 전용 서버로 실행 된 최근 tracert 출력입니다.

 1    <1 ms    <1 ms    <1 ms  192.168.7.254
 2     2 ms     1 ms     1 ms  10.69.32.1
 3     *        3 ms     2 ms  10.5.50.174
 4     3 ms     2 ms     2 ms  10.5.50.173
 5     *        5 ms     3 ms  fixed-203-69-2.iusacell.net [189.203.69.2]
 6    32 ms    32 ms    32 ms  8-1-33.ear1.Dallas1.Level3.net [4.71.220.89]
 7    33 ms    33 ms    33 ms  ae-3-80.edge5.Dallas3.Level3.net [4.69.145.145]
 8    33 ms    33 ms    33 ms  ae13.dal33.ip4.tinet.net [77.67.71.221]
 9    76 ms    76 ms   157 ms  xe-1-0-0.mtl10.ip4.tinet.net [89.149.185.41]
10    72 ms    72 ms    72 ms  te2-2.cr2.mtl3.gtcomm.net [67.215.0.160]
11    72 ms    72 ms    72 ms  ae2.csr2.mtl3.gtcomm.net [67.215.0.134]
12    72 ms    72 ms    73 ms  te3-4.dist1.mtl8.gtcomm.net [67.215.0.83]
13    72 ms    72 ms    72 ms  ns1.marveldns.com [173.209.57.82]

아이 퍼프

이것은 전용 서버를 서버로 사용하고 내 워크 스테이션을 클라이언트로 사용하여 iperf 테스트를 실행합니다.

------------------------------------------------------------
Client connecting to ns1.marveldns.com, TCP port 5001
TCP window size: 64.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.7.2 port 60339 connected with 173.209.57.82 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.3 sec  5.62 MBytes  4.59 Mbits/sec

PATHPING

이것은 내 워크 스테이션에서 전용 서버로 실행되는 경로 지정 권장 사항의 출력입니다.

Tracing route to ns1.marveldns.com [173.209.57.82]
over a maximum of 30 hops:
  0  ws1 [192.168.7.2]
  1  192.168.7.254
  2  10.69.32.1
  3     *     10.5.50.174
  4  10.5.50.173
  5  fixed-203-69-2.iusacell.net [189.203.69.2]
  6  8-1-33.ear1.Dallas1.Level3.net [4.71.220.89]
  7  ae-3-80.edge5.Dallas3.Level3.net [4.69.145.145]
  8  ae13.dal33.ip4.tinet.net [77.67.71.221]
  9  xe-1-0-0.mtl10.ip4.tinet.net [89.149.185.41]
 10  te2-2.cr2.mtl3.gtcomm.net [67.215.0.160]
 11  ae2.csr2.mtl3.gtcomm.net [67.215.0.134]
 12  te3-4.dist1.mtl8.gtcomm.net [67.215.0.83]
 13  ns1.marveldns.com [173.209.57.82]

Computing statistics for 325 seconds...
            Source to Here   This Node/Link
Hop    RTT  Lost/Sent = Pct  Lost/Sent = Pct  Address
  0                                           ws1 [192.168.7.2]
                                0/ 100 =  0%   |
  1    0ms     0/ 100 =  0%     0/ 100 =  0%  192.168.7.254
                                0/ 100 =  0%   |
  2    1ms     0/ 100 =  0%     0/ 100 =  0%  10.69.32.1
                                0/ 100 =  0%   |
  3    3ms     0/ 100 =  0%     0/ 100 =  0%  10.5.50.174
                                0/ 100 =  0%   |
  4    2ms     0/ 100 =  0%     0/ 100 =  0%  10.5.50.173
                                0/ 100 =  0%   |
  5    4ms    20/ 100 = 20%    20/ 100 = 20%  fixed-203-69-2.iusacell.net [189.203.69.2]
                                0/ 100 =  0%   |
  6   34ms     0/ 100 =  0%     0/ 100 =  0%  8-1-33.ear1.Dallas1.Level3.net [4.71.220.89]
                                0/ 100 =  0%   |
  7   34ms     0/ 100 =  0%     0/ 100 =  0%  ae-3-80.edge5.Dallas3.Level3.net [4.69.145.145]
                                0/ 100 =  0%   |
  8   33ms     0/ 100 =  0%     0/ 100 =  0%  ae13.dal33.ip4.tinet.net [77.67.71.221]
                                0/ 100 =  0%   |
  9   79ms     0/ 100 =  0%     0/ 100 =  0%  xe-1-0-0.mtl10.ip4.tinet.net [89.149.185.41]
                                2/ 100 =  2%   |
 10   73ms    14/ 100 = 14%    12/ 100 = 12%  te2-2.cr2.mtl3.gtcomm.net [67.215.0.160]
                                0/ 100 =  0%   |
 11   72ms     2/ 100 =  2%     0/ 100 =  0%  ae2.csr2.mtl3.gtcomm.net [67.215.0.134]
                                2/ 100 =  2%   |
 12   72ms    18/ 100 = 18%    14/ 100 = 14%  te3-4.dist1.mtl8.gtcomm.net [67.215.0.83]
                                0/ 100 =  0%   |
 13   72ms     4/ 100 =  4%     0/ 100 =  0%  ns1.marveldns.com [173.209.57.82]

Trace complete.

스스로 시도 할 수있는 것들

시도해보고 싶다면 테스트 목적으로 서버에 설정 한 몇 가지 사항입니다.

HTTP 서버의 큰 파일

HTTP를 통해 다운로드 할 수있는 5GB 파일을 서버에 저장했습니다. 여기에서 찾을 수 있습니다 : http://www.marveldns.com/transfer_test/

가장 빠른 MINI 앱

내 서버에서 "speedtest mini"테스트를 설정했습니다. 당신은 그것을 방문하고 내 서버와 자신 내에서 다운로드 및 업로드에 대한 속도를 알 수 있습니다. 여기에서 찾을 수 있습니다 : http://www.marveldns.com/speedtest/

마지막으로 :

전에 말했듯이, 나는 모든 것을 이해하는 데 도움을 얻으려고 노력하고 있습니다. TCP / IP 또는 최고급 네트워킹에 대해서는 전문가가 아닙니다. 솔직히 tracert, iperf 또는 pingpath의 결과를 사용하여 문제를 해결할 수있는 방법을 명확하게 알지 못하지만이 문제에 대해 이야기 할 때 항상 요청하기 때문에 포함시킵니다.

내 질문에 더 나은 무언가가 부족한 경우 문제를 공감하고 문제가 있거나 도움을 얻기 위해 추가 할 수있는 내용을 알려주지 마십시오. 감사합니다.


궁금해서, 전용 서버의 localhost에서 파일을 얻을 때 속도는 어느 정도입니까?
Brice

안녕 브라이스. 나는 약 50MB / s (비트가 아닌 바이트)를 얻습니다. 이는 Windows 탐색기에서 직접 동일한 디스크의 동일한 폴더에 파일을 수동으로 복사하면 얻을 수있는 속도와 거의 같습니다 (따라서 속도는 디스크를 읽고 쓰는 동안 디스크).
Francisco Zarabozo

1
tracert에 따르면 워크 스테이션은 다소 큰 네트워크에 있습니다. 연결 속도를 늦추는 Qos가 있는지 로컬 네트워크 관리자에게 물어 보셨습니까?

여러 번의 전송을 동시에 시작하면 결합 속도가 예상 50Mbit / s에 가까워 집니까? 즉. 전체에서 느리거나 연결 당 느리게 진행됩니까?
Grant

@Grant : 여러 개의 연결로 최대 50Mbps까지 광고합니다. 연결 당 제한이 발생합니다.
Francisco Zarabozo

답변:


9

해당 URL에 액세스 할 때 나타나는 병목 현상은 창 크기 때문입니다.

서버에서 다운로드하려고하면 555KB / s가 표시됩니다. 왕복 시간은 108ms입니다. 수학을하면 다음과 같은 창 크기가 나타납니다 : 555KB / s * 108ms = 59.94KB.

데이터 센터의 호스트에서 수행하는 한 매우 일관된 처리량과 왕복을 얻습니다. 또한 두 번의 다운로드를 동시에 시작하면 각각 555KB / s를 얻습니다. 병목 현상이 창 크기 일 때 나타나는 증상입니다.

창 크기 조정이 없으면 창은 64KB보다 클 수 없습니다. 그러나 창 크기 조정이 협상되므로 더 높은 처리량이 가능해야합니다. 이를 통해 두 가지 가설을 조사 할 수 있습니다.

  • 클라이언트에서 서버로의 경로에서 창 크기 조정 옵션을 조작하여 서버가 창을 1의 배율로 조정했다고 생각합니다.
  • 서버는 각 연결에서 60KB 이상의 전송 창을 사용하지 않도록 구성 될 수 있습니다.

첫 번째는 서버에서 패킷 캡처를 수행 할 수 있는지 쉽게 확인할 수 있습니다. 들어오는 SYN 패킷의 스케일링 옵션을보고 서버가 1보다 큰 스케일링 계수를 수신하는지 확인하십시오. 트래픽 분석에 Wireshark를 사용하는 것이 좋습니다.

두 번째 가설을 검증하려면 사용중인 운영 체제에 대한 지식이 필요합니다. 내가 알 수없는 운영 체제를 선택 했으므로 도와 드릴 수 없습니다. 따라서 네트워킹 전문 지식 만 도울 수 있습니다.


100 % 확신 할 수 없지만 소켓 전송 및 수신 버퍼 크기 (소켓 옵션 SO_RVSBUF 및 SO_SNDBUF)의 영향을받지 않는 창 크기는 무엇입니까? 버퍼가 너무 작고 (예 : 1KB) 처리량이 4KB 또는 8KB에 비해 매우 제한적인 유사한 사건을 보았습니다.
Cameron Kerr

@CameronKerr 귀하의 의견에 따라 다른 의사 소통을 살펴 보았습니다. 이번에는 랩톱에서 테스트했습니다 (Wi-Fi에 있고 처리량이 적습니다). 내가 관찰 한 것은 105ms 왕복으로 138KB / s를 얻는다는 것입니다. 이는 유효 창 크기가 14.5KB임을 의미합니다. 처리량이 안정화되기 전에 랩톱에서 보급 한 수신 창이 679 << 7 (약 85KB)로 증가했습니다. 스케일링 팩터가 전송 중에 단순히 제로화되었을 가능성을 배제하고 처리량이 최종적으로 수신 버퍼에 의해 제한 될 가능성을 배제해야합니다.
kasperd

Windows Server 2008 r2에 대한 관련 기사는 여기에서 찾을 수 있습니다. andydavies.me/blog/2011/11/21/…
Francisco Zarabozo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.