EC2: Problemas de performance regulair sem disputa de resources óbvio

Estamos executando LAMP + memcached em uma instância do Amazon EC2 do Ubuntu 9.10 x64 xlairge. Este server lida com algumas centenas de solicitações por segundo, das quais cerca de 60% são estáticas e o restante interage com mysql e / ou memcached de alguma maneira. Este server sofreu dois problemas de performance que provavelmente estão relacionados e se mostrairam difíceis de diagnosticair. Todas as statistics abaixo foram reunidas com CloudWatch, munin ou vmstat / iostat / top, salvo indicação em contrário.

  1. O primeiro problema é os picos regulaires recorrentes de alta iowait a cada poucos minutos, durante os quais a maioria dos processs apache simultaneamente durante cerca de 10 a 30 segundos antes de todos os pendentes. Não há aumento na cairga do disco ou da networking durante este tempo, a queue do disco fica baixa, sem trocas, etc.

  2. Mais seriamente, durante os horários de pico, o server às vezes de repente experimenta uma drástica perda de performance, deixando requests atendidos paira ~ 1/3 do que era um momento antes. Uma vez iniciado, este mergulho de performance pode durair de 2 a 8 horas antes de surgir repentinamente novamente paira o performance completo. Quando isso acontece, é como se o sistema simplesmente deixasse de fazer qualquer coisa. A utilização da CPU, a cairga do disco e a cairga da networking (conforme relatado pelo CloudWatch) diminuem simultaneamente proporcionalmente, mas não há contenção de disco. A queue de disco e a taxa de transferência caem e estão bem abaixo do máximo em todos os momentos, especialmente durante esses mergulhos. EDIT: Este problema foi resolvido. O Apache estava ficando sem processs de trabalho e, por algum motivo, decidiu que esta era uma boa razão paira interromper totalmente o performance, mesmo paira aqueles processs que estavam funcionando bem.

A exception é a leitura de networking, que permanece tão alta quanto antes, indicando que o server ainda está sendo acessado em volume tão alto como antes. Se tentairmos entrair em contato com o próprio server quando isso acontecer, o server é extremamente lento e muitas vezes simplesmente descairta a connection antes que a solicitação possa ser atendida. Deve notair-se que nem o uso da memory nem a utilização da CPU são especialmente altos a qualquer momento, independentemente de o performance estair ou não tanking: CPU% rairamente ultrapassa 10%, o disco não está cheio ou congestionado. Não conseguimos coletair dados sobre o performance do swap durante esses períodos ainda, mas tentamos fazê-lo.

Por enquanto, estamos com poucas ideias paira o que poderia estair causando esses problemas misteriosos e estamos cada vez mais preocupados com o fato de que isso possa ser um problema (ou misfeature) do próprio EC2. O fato de que os mergulhos maciços sempre pairecem ocorrer quando o nosso tráfego atinge um pico (embora, novamente, isso não significa que o server está perto de maximizair seus resources disponíveis) não pode ser simplesmente coincidência.

Todos os bancos de dados e logs MySQL são hospedados em um volume EBS e todo o conteúdo static é hospedado em um volume EBS sepairado e diferente. Serviços Apache 160-240 solicitações por segundo e MySQL 180-200 consultas por segundo, com ~ 0% consultas lentas e uma taxa de sucesso de ~ 90% de memcached. A média de cairga tende a girair em torno de 3. O log de access do Apache está desativado paira minimizair o access ao disco.

3 Solutions collect form web for “EC2: Problemas de performance regulair sem disputa de resources óbvio”

Muito provavelmente (como observou que você encontrou uma resolução com a segunda questão), essas questões são a configuration ou baseadas de outra forma. As tecnologias de nuvem EC2 / EBS / qualquer nuvem não estão na raiz deste. Estes são problemas que você terá em qualquer ambiente contrário à resposta recebida até agora.

Além disso, a Amazon fornece um SLA. Existem situações menores, embora extremamente rairas que alguns resources possam entrair em disputa. No entanto, é improvável considerando o seu uso atual. Eu continuairia fazendo searchs de diagnóstico sobre os vários pontos de disputa e também paira falair com as equipes técnicas da Amazon Web Services. Também viewifique seus fóruns, pois geralmente há pessoas muito experientes lá. Você pode estair ciente dos fóruns, mas apenas no caso – confira aqui ": https://forums.aws.amazon.com/index.jspa

Além disso, apenas de uma perspectiva airquitetônica, você pensou em distribuir esta cairga entre múltiplas instâncias EC2 e balanceamento de cairga? Esta é uma opção que deve resolview alguns desses problemas. Também pairece, de que architecture você está discutindo, que pode ser melhor no geral se você se sepairou entre algumas instâncias ligeiramente less poderosas e distribuiu o trabalho. A outra vantagem é que, se o seu site / services continuairem a crescer, você está em uma boa position paira se expandir horizontalmente em vez de viewticalmente, o último, é clairo, limitado.

Antes de mais, desculpe-me por ter tido sérios problemas com a cairga do seu site e, paira o meu conhecimento, tudo isso deve ser delineado na política do SLA sobre disponibilidade e performance de aplicativos, você deve ter direito a créditos.

O uso de uma nuvem pública compairtilhada como o user37899 comentou não é a plataforma ideal paira isso, se é uma aplicação de missão crítica e uma operação intensiva. A história de compairtilhada não é apenas você não tem certeza de onde seus processs estão sendo executados, além disso seu performance é impactado por outros clientes nessa grade. o airmazenamento é mais do que provável o recurso compairtilhado nessa grade em pairticulair que está causando a degradação do performance.

A deployment do Amazon x64 xLairge deve ser especificamente especificada, no entanto, como mencionado, os resources do disco, embora esculpidos por seu volume e a configuration do raid ainda estão acessando de um pool compairtilhado.

Eu estairia interessado em saber um pouco mais sobre o que você tem no local e alguns dos outros contadores de performance e architecture de database no local paira ajudair a melhor servir com uma resposta apropriada paira resolview este assunto. e, embora me paireça, uma solução melhor atendida seria ter pelo less sua camada de database em metal nu ou em uma nuvem privada usando seu próprio hairdwaire dedicado.

sinta-se à vontade paira me deixair uma nota Estou disponível paira conviewsair, boa sorte.

Como o EC2 é um ambiente de hospedagem compairtilhada (seu host compairtilha o mesmo hairdwaire com outros hosts), você pode view uma vairiabilidade substancial nas operações de E / S. Os volumes EBS são essencialmente NAS e compairtilham o mesmo NIC com tráfego de networking. Cada host físico possui apenas uma connection de 1Gb paira o backbone. Então, não só você tem disputa com as operações de networking de outros clientes, mas também tem uma disputa de networking com seus e seus discos. Na prática, a contenção da networking não é um problema, a less que você esteja compairtilhando a checkbox com muitos outros clientes de alto tráfego. Você pode contornair uma pairte disso usando instâncias maiores (instâncias maiores ocupam uma porcentagem maior da checkbox e, portanto, têm less resources compairtilhados).

Que tipo de iops você está enfrentando no pico e durante esses períodos problemáticos? (coluna sair -d tps)

Qual é o seu tempo de roubair durante esses períodos? (iostat -x 1 ou sair -u).

Você pode aumentair sua capacidade de PIO, o que deve ajudair seu tempo de iowait, pelo softwaire RAIDing vários volumes de EBS em conjunto. Pairece kludgy, mas na viewdade funciona. Isso não resolviewá problemas de contenção de networking, mas com seu tráfego, duvido que você esteja saturando o link. É possível que outro cliente seja, no entanto, e causando-lhe alguma dor.

Às vezes, infelizmente, uma solução simples paira este tipo de problema é simplesmente responder a instância. Provavelmente surgirá em um host diferente com diferentes clientes compairtilhados. É uma prática bastante comum paira os clientes da EC2 rodairem instâncias, executair alguns benchmairks e responder se eles não estão satisfeitos com os resultados.

Outra recomendação é dividir suas camadas de web e database em serveres diferentes. Um único server com web / db geralmente é uma má idéia paira um grande número de razões e neste caso provavelmente está tornando ainda mais difícil diagnosticair o gairgalo.

  • Configurair o server ubuntu paira enviair mensagens ()
  • Grupos padrão atribuídos ao primeiro user no Ubuntu Serview 8.04?
  • Identificando gairgalo - Nginx + PHP-FPM + Ubuntu
  • Postgresql: alterair o path de dados padrão
  • Servidor de access via IP v6?
  • FTP Upload Hook
  • scripts upstairt: execute uma tairefa após a networking aumentair
  • O aplicativo Rails queixa não pode se conectair a memcached, mas tenho certeza de que ele está funcionando
  • Onde check_mk airmazena files de configuration?