Como melhorar o Windows Server 2008 R2 para lidar com muitas conexões?


9

Já faz alguns dias que estou tentando descobrir como resolver esse problema. Antes de tudo, estou executando um site com uma visualização média de página diária de 350.000. Anteriormente, todo o gerenciamento de anúncios (rastreamento de cliques e impressões que cada anúncio exibia) e conteúdo eram exibidos em um único servidor com a seguinte especificação:

Servidor1
SO: Windows 2008 R2 de 64 bits
CPU: Intel® Core ™ i5 - 4 núcleos
RAM: 8 GB
Armazenamento: 2 discos rígidos de 1 TB
Largura de banda: 10 TB por mês

Para melhorar a velocidade do site, decidi separar o script de gerenciamento de anúncios para outro servidor dedicado, porque temos mais de 15 anunciantes para 30 anunciantes por página.

Servidor 2
SO: Windows 2008 R2 de 64 bits
CPU: Intel® Core ™ i5 - 4 núcleos
RAM: 4 GB
Armazenamento: 2 discos rígidos de 300 GB
Largura de banda: 10 TB por mês

O problema
O problema é que Server 1pode lidar com o conteúdo e o sistema de anúncios. Agora, tiro o sistema de anúncios e o coloco em Server 2. Server 2mal pode veicular apenas o sistema de anúncios.

Teste

  • Primeiro, movi 75% dos anúncios para Server 2. E, em seguida, execute um ping ao servidor: ping -t xxxxx. [Eu fiz o ping por 10 minutos e seu padrão semelhante a seguir como abaixo]
Resposta de xxxxx bytes = 32 tempo = 290ms TTL = 116
Resposta de xxxxx bytes = 32 tempo = 289ms TTL = 116
Resposta de xxxxx bytes = 32 tempo = 320ms TTL = 116
Resposta de xxxxx bytes = 32 tempo = 286ms TTL = 116
Resposta de xxxxx bytes = 32 tempo = 286ms TTL = 116
Resposta de xxxxx bytes = 32 tempo = 348ms TTL = 116
Resposta de xxxxx bytes = 32 tempo = 284ms TTL = 116
  • Então, mudei 100% dos anúncios para Server 2. Em seguida, execute um ping no servidor novamente. [Eu fiz o ping por 10 minutos e seu seguinte padrão semelhante ao abaixo]
Resposta de xxxxx bytes = 32 tempo = 290ms TTL = 116
A solicitação expirou
Resposta de xxxxx bytes = 32 tempo = 320ms TTL = 116
Resposta de xxxxx bytes = 32 tempo = 286ms TTL = 116
A solicitação expirou
A solicitação expirou
Resposta de xxxxx bytes = 32 tempo = 284ms TTL = 116

Tentativas

  1. Aumentar MaxUserPorteTcpNumConnection
  2. Reinicie o servidor
  3. Aumente o IIS Max InstanceseInstance MaxRequests

Recurso do servidor

  • Apenas 10% -15% da conexão de rede é usada
  • Apenas 10% -15% da CPU é usada
  • Apenas 25% da memória é usada

3
Esta é uma pergunta bem formada na minha opinião e digna de votos, mas ainda sinto que estamos perdendo algumas pistas para nos ajudar a resolver o enigma.
Ryan Ries

@RyanRies, por favor, indique qual informação que falta para resolver este enigma. Agora, eu tenho 75% de anúncios em Server 2 e 25% dos anúncios em Server 1. Ele executa muito bom agora, mas eu não posso completamente mover ao servidor 2.
Monkey D Luffy

11
Concordo com @RyanRies: estamos perdendo alguma coisa. Eu examinaria a maneira como o sistema de veiculação de anúncios é construído: pode haver uma dependência entre o conteúdo e os serviços de veiculação de anúncios que causa um atraso excessivo.
quer

@ Stephanie não, isso deveria e não causaria pings perdidos. Os pings não são tratados pelo código de veiculação de anúncios, mas pela pilha TCP diretamente. O que basicamente significa que eles devem funcionar, a menos que o servidor esteja sobrecarregado loucamente. Parece sério - conforme a minha resposta - a largura de banda simplesmente não existe. Antes do servidor.
TomTom

Algumas coisas que estão faltando aqui são 1) o que você pode mudar / não mudar no seu ambiente? 2) como os servidores web são configurados por disco? 3) os horários da rede são internos para onde você está ou é um servidor remoto? Se é um servidor remoto, a que distância está? 4) se você precisa melhorar seu servidor, qual é a sua liberdade de orçamento para adicionar hardware à mistura geral 5) Os logs de eventos estão apresentando algum erro? 6) Não vejo resultados de capturas perfmon no auge do tráfego 7) quais são os números de visitantes únicos? 8) você filtrou o tráfego indesejado?
Techie Joe

Respostas:


4

Bem, vamos começar. Isso é mais longo.

Você totalmente julgou mal os fatos aqui apresentados. O Windows - mesmo o desatualizado 2008 R2, que você deve atualizar o mais rápido possível - é completamente capaz de lidar com um volume que meu telefone celular não tem problema em lidar.

Então, isso deixa três possíveis áreas de problemas:

  • Instalação. Seus drivers podem ser ruins. Dado que você executa um sistema operacional desatualizado - quão bons são seus drivers? Atualize-os - isso pode causar todos os tipos de problemas.

  • Rede. Isso parece seriamente "Meu carro está muito lento, por favor me ajude a acelerar" quando o problema é que você passa a maior parte do tempo em um engarrafamento e reclamação sobre o tráfego não se mover. Não é um problema de ajuste de carro. O tráfego de 10 TB não diz nada sobre o congestionamento da rede. Observe as estatísticas de tráfego de sua rede na NIC e, em seguida, reaja de acordo - se elas não atingirem a velocidade que deveriam ser ... o seu provedor gastou demais. Simples assim.

  • Código. Pode ser que você precise de mais RAM (o computador está ocupado trocando para a RAM em vez de processá-la) ou a codificação de baixa qualidade está usando toda a sua CPU a um nível que faz com que a pilha TCP no nível do kernel não reaja adequadamente (sim, as respostas ICMP são tão baixas). Isso seria brutal - mas é outra maneira de verificar. Também pode ser que você sobrecarregue os discos acessando-os com muita frequência, em vez de armazenar em cache na RAM, mas de alguma forma não vejo isso levando a pings perdidos. Porém, qualquer problema aqui não é algo que um administrador possa resolver - você precisa jogar o hardware nele, ou pegar um pedaço de pau e bater no programador até que ele o conserte (se for um erro de nível "estúpido" que consome o desempenho - caso contrário, é muito mais difícil obter ganhos sérios e pode ser apenas a sua necessidade de hardware mais robusto).

Definitivamente não requer ajuste de janelas - uma janela bem configurada pode oferecer muito mais do que isso. Meus servidores de arquivos regularmente - por períodos mais longos - fornecem 4-6gigabit a partir de uma configuração relativamente padrão.

Agora, todos os números que você fornece não dizem nada a sério.

  • 10-15% da CPU é usada PODE trocar de meio.
  • Provavelmente, 25% da memória usada é um bom indicador, agora a troca acontece, mas ainda pode significar que a CPU está aguardando IO.
  • A rede de 10% a 15% é usada significa - absolutamente nada, porque é apenas o SEU lado da rede. E o montante? E se o provedor estiver colocando 20 servidores com 1 gigabit em um uplink de 1 gigabit do rack e isso estiver transbordando como o inferno?

O último ponto é bastante provável - pacotes descartados são um bom indicador disso. E isso não será visível para você.

Meu conselho .... desligue qualquer coisa em uma máquina por um momento, faça um teste de velocidade externo com um arquivo estático grande. Aposto que você encontra congestionamentos mais altos.

Tudo o que você fez até agora - maxuserport, tcpnumconnection, reiniciar o servidor, brincar com as configurações do IIS - está totalmente desligado e não faz nada no melhor lugar. Bater um martelo em um carro lento nunca conserta nada - especialmente se o carro estiver lento porque está em um engarrafamento. Gostaria de desfazer todas as alterações e começar a analisar o problema, não apenas o seu servidor. Eu apostaria no congestionamento da rede no momento.


3
even the outdated 2008 R2 which you should update ASAP- Vamos, TomTom, se controle. 2008 R2 ainda está bem dentro de suporte base e um longo caminho fora de ir para fora do Suporte Estendido que é em 2020 eu acredito ...
Dan

4
"2008 R2 desatualizado, que você deve atualizar o mais rápido possível": isso está incorreto (2008R2 não está "desatualizado" e não deve ser atualizado "apenas porque") e não faz sentido no contexto da resposta. O resto faz pouco para melhorar sua resposta, pois não fornece nenhuma etapa útil para identificar o problema, muito menos corrigi-lo, apenas fornece conselhos genéricos (e apenas moderadamente sobre tópicos) sobre desempenho.
quer

Na verdade, é porque adivinhe o que foi seriamente alterado mais tarde - a pilha de IP. Escalabilidade sendo um ponto. Então, sim, no contexto dado é. As atualizações devem acontecer o mais rápido possível - porque, adivinhe, você pode não melhorar suas coisas ao longo do tempo, a maioria das empresas. 2012 R2 é melhor que 2008 R2.
TomTom

Usando speedtest.net, o uplink e o downlink estão em torno de 100mbps.
Monkey D Luffy

Existem dois softwares de dependência para o sistema de anúncios: memcached e MySQL. Mantenha o controle de todas as impressões e clique no memcached e atualize para o MySQL uma vez a cada 10 minutos.
Monkey D Luffy

0

Os pings são externos aos dois servidores? Nesse caso, tente o ping do servidor um para o servidor dois. Se os resultados forem totalmente diferentes de quando executar o ping externamente, isso mostra que o problema pode não estar relacionado ao servidor dois. Além disso, verifique no monitor de recursos o comprimento da fila de disco para as unidades e o tempo ativo - são mais algumas informações que podem destacar um problema.


Eu já tentei isso. Usei o Servidor 1 para executar ping no Servidor 2 e o ping continuará caindo se eu colocar mais anúncios.
Monkey D Luffy

11
A conexão entre o servidor 1 e o servidor 2 é através do seu próprio hardware? Ou é o comutador de datacenter? Apenas tentando determinar se, quando você efetuou o ping, estava passando por um hardware DC que poderia estar causando congestionamento. Você tem algo no IIS / Windows que está bloqueando dinamicamente solicitações? Não há proteção contra o bloqueio de solicitações legítimas? O sistema, é ASP.NET e o banco de dados é MySQL?
Ross Buggins
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.