Velocidade de download do CloudFront na Europa: esperada vs. relatável

0

Como usuário na Europa, qual é a velocidade de download que eu devo esperar de um serviço desenvolvido pela AWS / CloudFront? Em que ponto devo denunciar uma lentidão e para quem?

Para o WeTransfer, de um link de exemplo , chego a um example URL de download (encontrado em console de rede, F12). Eu então uso iftop para ver qual host está servindo o arquivo para mim e mtr para ver se algum problema óbvio se destaca (embora o traceroute de seu host para minha máquina possa ser diferente do outro caminho).

Ontem, o arquivo foi veiculado em borda de Madri , algo como server-54-192-61-242.mad50.r.cloudfront.net , e minha velocidade de download não ultrapassou 300 KiB / s, permanecendo em 150-200 KiB / s na maior parte do tempo. Isso é terrivelmente lento. * Eu não salvei o traceroute, mas não houve perda ou latência óbvia de pacotes; Pacotes IIRC passaram por Telia.

Hoje, o arquivo é servido a partir de server-54-240-166-250.lhr5.r.cloudfront.net (Londres) e recebo 1,1 MiB / s em casa, 13 MiB / s média (e 25 MiB / s de pico) em um servidor do Norte da Europa. Isso é o que eu espero.

Como a Amazon / AWS alterou o host de ontem e agora as coisas funcionam, parece ainda mais provável que o problema esteja com elas. No entanto, o cliente da AWS em A velocidade de download é lenta diz que eles não farão nada. Documentos do CloudFront e fóruns da AWS não tem informações sobre como relatar problemas de rede / roteamento / peering. O que fazer nesses casos, então? Eu acho que apenas o cliente da AWS está na posição de fazer algo, mas somente se a pessoa que recebe o relatório for capaz de entender o trabalho em rede.

Meu traceroute para o CloudFront Madrid é algo assim:

10.|-- 62-101-124-129.fastres.net                   0.0%    50    4.6  13.8   3.5 101.1  20.3
11.|-- 89.96.200.21                                 0.0%    50   17.6  16.6   2.6  92.9  22.0
12.|-- mno-b2-link.telia.net                        4.0%    50   52.6  26.3  13.1  69.2  13.7
13.|-- mei-b1-link.telia.net                        0.0%    50   23.7  30.3  20.4  87.7  11.3
14.|-- bcn-b2-link.telia.net                        0.0%    50   47.5  53.7  30.2  92.9  16.4
15.|-- mad-b2-link.telia.net                        0.0%    50   62.7  57.7  36.1 102.2  14.4
16.|-- mad-b1-link.telia.net                        0.0%    50   37.7  42.1  34.3  59.8   5.6
17.|-- a100-ic-314004-mad-b1.c.telia.net            0.0%    50   70.2  58.5  39.7  87.2  12.5
18.|-- ???                                         100.0    50    0.0   0.0   0.0   0.0   0.0
19.|-- ???                                         100.0    50    0.0   0.0   0.0   0.0   0.0
20.|-- ???                                         100.0    50    0.0   0.0   0.0   0.0   0.0
21.|-- server-54-192-61-242.mad50.r.cloudfront.net  2.0%    50   71.1  83.5  56.4 156.2  19.5

O traceroute é agora algo assim:

10.|-- 62-101-124-94.fastres.net                    0.0%    50   68.6  79.5  36.1 108.8  15.4
11.|-- 89.96.200.110                                0.0%    50   75.9  94.8  46.0 141.8  17.6
12.|-- ???                                         100.0    50    0.0   0.0   0.0   0.0   0.0
13.|-- 54.239.4.248                                 2.0%    50  107.2 112.9  71.6 146.7  18.2
14.|-- 54.239.41.135                                0.0%    50  112.8 108.7  72.8 147.6  15.0
15.|-- 178.236.3.22                                 0.0%    50  115.8 102.3  58.4 127.9  16.9
16.|-- 176.32.106.11                                4.0%    50   95.8 103.2  73.7 130.7  14.2
17.|-- 176.32.106.11                               40.0%    50  110.6 108.6  80.4 136.1  14.7
18.|-- ???                                         100.0    50    0.0   0.0   0.0   0.0   0.0
19.|-- ???                                         100.0    50    0.0   0.0   0.0   0.0   0.0
20.|-- server-54-240-166-250.lhr5.r.cloudfront.net 60.0%    50   88.7 100.0  57.6 131.9  18.0

Como a primeira resposta observa, importa muito se o arquivo já foi armazenado em cache na borda do CloudFront ou não. Aqui está um exemplo de uma falta de cache (que agora consegue saturar minha largura de banda):

$ LANG='en' wget -S 'https://download.wetransfer.com/wetransfer-eu1/f7a2031249f56fdeeda9040adda5a26f20160224143804/wetransfer-f7a203.zip?expiration=1456605646&escaped=false&signature=3d916716d49e415f637b4f824c7709f7483b67a8f02588caece30d6c2a3ed0ea&filename=wetransfer-f7a203.zip'
--2016-02-27 21:34:39--  https://download.wetransfer.com/wetransfer-eu1/f7a2031249f56fdeeda9040adda5a26f20160224143804/wetransfer-f7a203.zip?expiration=1456605646&escaped=false&signature=3d916716d49e415f637b4f824c7709f7483b67a8f02588caece30d6c2a3ed0ea&filename=wetransfer-f7a203.zip
Resolving download.wetransfer.com (download.wetransfer.com)... 54.192.61.62, 54.192.61.196, 54.192.61.80, ...
Connecting to download.wetransfer.com (download.wetransfer.com)|54.192.61.62|:443... connected.
HTTP request sent, awaiting response...
HTTP/1.1 200 OK
Content-Type: application/octet-stream
Content-Length: 1449534395
Connection: keep-alive
Server: nginx
Date: Sat, 27 Feb 2016 20:34:39 GMT
Content-Transfer-Encoding: binary
Content-Encoding: none
Cache-Control: private, no-transform, no-store
Allow: GET, HEAD
Accept-Ranges: bytes
Content-Disposition: attachment; filename="wetransfer-f7a203.zip"
X-Transfer-Id: f7a2031249f56fdeeda9040adda5a26f20160224143804
X-Cache: Miss from cloudfront
Via: 1.1 943ab292a0096b706fe263560805857e.cloudfront.net (CloudFront)
X-Amz-Cf-Id: 4hEZcZL56GWMBn8z1T2txF-O3TTdrAC6OxCtqVDZUoJREUd9_EBo6A==
Length: 1449534395 (1.3G) [application/octet-stream]

Em outros testes , eu sempre gewt X-Cache: Miss from cloudfront , mesmo na sexta vez que solicito o mesmo recurso, parece que o WeTransfer não está armazenando nada em cache CloudFront (ou não arquivos deste tamanho). Curiosamente, o cabeçalho X-Transfer-Id: f7a2031249f56fdeeda9040adda5a26f20160224143804 é sempre o mesmo, embora a URL de download real que recebo ao clicar no botão de download varie; Os cabeçalhos Via e X-Amz-Cf-Id também variam. A partir desta atualização, a primeira vez que solicito uma determinada URL de download é muito rápida, a segunda muito lenta, a terceira 404s. Eu tentei e posso ter dois downloads simultâneos, um na segunda tentativa e um na primeira tentativa: o primeiro será muito lento e o último muito rápido, embora as condições de rede sejam claramente as mesmas.

Veja o link para um teste do meu servidor do Norte da Europa: o download A * é um URL, B * outro; A-2 é após A-1 e B-2 é após B-1, mas B * começou enquanto A-2 estava em execução. No entanto, A-1 e B-1 eram muito rápidos, A-2 e B-2 muito lentos.

Isso está cada vez mais parecendo um problema com a qualidade de serviço / limitação de QoS aka. O CloudFront pode me estrangular com falhas de cache, ou devemos apenas culpar o cliente deles?

(*) Nota: Eu tenho uma conexão FTTH de 10/10 Mb / s com Fastweb. A largura de banda disponível nunca ultrapassa essa velocidade garantida. O ISP não é conhecido por aplicar o controle de QoS, mas às vezes tem alguns problemas de roteamento fora da Itália. Quando observei o problema, não tive nenhum problema em saturar minha largura de banda com outros serviços.

    
por Nemo 27.02.2016 / 11:46

1 resposta

1

Se você não é representante da conta da AWS que possui a distribuição do CloudFront - e o fraseado usado na pergunta faz parecer que você não é - então o ponto de contato apropriado é o site onde você está estão tendo um desempenho ruim.

Seria então a sua responsabilidade de abrir um incidente de suporte com o suporte da AWS, se considerarem apropriado, uma vez que são clientes do CloudFront.

O CloudFront foi projetado para rotear sua solicitação para o ponto de presença mais adequado do CloudFront (onde "ideal" geralmente, mas nem sempre significa geograficamente próximo) na camada de preços selecionada pelo proprietário da distribuição (os proprietários podem optar por não pagar por arestas mais caras) , onde os custos da Amazon são maiores, caso em que as solicitações desse site evitarão essas bordas ou, pelo menos, evitarão preços premium, mesmo que o CloudFront possa, a seu critério, usar um local de custo mais alto, mas faturar na menor taxa). p>

A borda ideal para a localização de um determinado baixador mudará com o tempo, devido a vários fatores, incluindo latência, congestionamento, tamanhos de caminho de salto e AS, largura de banda de link e vários outros fatores ... que não são públicos informações, mas são levadas em conta pelos algoritmos de roteamento do CloudFront que determinam qual resposta de DNS você recebe quando se conecta a um site com o CloudFront. A resposta do DNS varia de acordo com o endereço IP do cliente solicitante.

De um único endereço IP de origem no Sul de Ohio (EUA), vejo meu site de teste do CloudFront percorrer um ponto de presença que muda entre o sul Bend (IN, EUA), Chicago (IL, EUA) e Ashburn (VA, EUA) em uma base bastante regular - sem o endereço IP real estou solicitando a página de até mesmo mudando. De uma configuração semelhante a menos de 8 km de distância, mas com um endereço IP de origem estática diferente usando um ISP diferente, recebo respostas semelhantes, variadas, mas frequentemente diferentes.

Isso pode ser facilmente explicado pelos algoritmos do CloudFront tentando selecionar a borda mais apropriada, com base em fatores que não são óbvios do lado de fora olhando para dentro.

Por tudo o que você pode saber, seu comportamento lento nas conexões com o CloudFront de ontem pode ter sido detectado e acionou o algoritmo de seleção para escolher uma estratégia diferente, fazendo com que o problema de desempenho "se conserte". Também é possível que a borda de Madri estivesse sendo usada como uma escolha abaixo do ideal, devido a problemas de disponibilidade em uma melhor escolha de local.

Também pode ter havido um problema entre o CloudFront e o servidor de origem. Os cabeçalhos de resposta do CloudFront teriam dado a você um pouco mais de informações ... Se X-Cache: Hit from Cloudfront estiver presente, você está sendo servido do cache de borda, e o Age: dirá quanto tempo o objeto foi armazenado em cache no A beira. Se X-Cache: Miss from Cloudfront , seu download não foi armazenado em cache na borda, e o arquivo que você está recebendo atualmente está sendo buscado no servidor de origem e, ao mesmo tempo, está sendo preparado para o cache e sendo transmitido de volta para você. Permitir que o download seja totalmente concluído e, em seguida, fazer download novamente com uma solicitação idêntica deve fornecer a cópia em cache, supondo que sua próxima solicitação atinja a mesma borda e a diferença de velocidade, se houver, seja aproximadamente indicativa da velocidade de conexão para o servidor de origem . CloudFront é um CDN pull-through; objetos não são replicados para as bordas, eles são armazenados apenas em locais onde foram solicitados, após a solicitação inicial.

Como cliente do CloudFront, nunca precisei relatar downloads lentos. Isso não significa que é perfeito, mas o serviço parece ser muito solidamente projetado para desempenho e resiliência.

    
por 27.02.2016 / 20:14