A resposta de Markdorison é basicamente o método aceito para atacar esse problema. Vou levar um pouco mais longe.
Quando você tiver o Pressflow para D6 ou Drupal para D7, o Memcached e o Varnish funcionando bem juntos, precisará codificar o seu arquivo VCL de maneira personalizada . Existem gratuitos disponíveis que dão pontos de partida, mas você sempre precisa brincar com eles.
Para que o Varnish funcione de maneira ideal, inicie-o com -s malloc xG em vez do padrão -s file / path / to / file. Além disso, com o Varnish, os itens estáticos do cache do Varnish podem ser mantidos pelo maior tempo possível.
Se você tiver mais de um servidor Web, remova o ETag do cabeçalho enviado ao Varnish no VCL. Também removo o Expira e simplesmente confio na Idade e na idade máxima nos cabeçalhos para que os navegadores voltem ao site.
A versão 1.5 (a partir de 3 de março de 2011) ainda é a versão mais rápida do módulo Memcached do Drupal.org. Normalmente, implanto-o usando uma única bandeja por servidor para reduzir o tráfego tcp para conexões com várias caixas em grande escala)
Configure o armazenamento em cache em "Desempenho" como externo e defina uma idade máxima que enviará os cabeçalhos corretos para um proxy de armazenamento em cache, como o Varnish.
Se você não conseguir que determinadas páginas sejam armazenadas em cache corretamente no Varnish, verifique as postagens do blog na Web que detalham como inspecionar as solicitações. Aqui está um exemplo de um post que escrevi há algum tempo: O que está impedindo o Varnish e o Drupal Pressflow de armazenar em cache visualizações de páginas de usuários anônimos
Você deve escolher o InnoDB (ou um dos outros nomes de outros provedores como o XtraDB) para MySQL e mover todas as tabelas para ele. Em seguida, confira esta postagem do blog para obter conselhos básicos de ajuste http://www.mysqlperformanceblog.com/2007/11/01/innodb-performance-optimization-basics/
Ter um grande conjunto de buffers é fundamentalmente importante. Ao carregar o teste, o site ative o log de consultas lentas. Você provavelmente deseja capturar consultas com duração superior a 50 ms e, em seguida, ajustá-las e reduzir repetidamente o tempo lento de captura de log até que a maioria das consultas seja executada usando índices e executada rapidamente.
Outros princípios básicos envolvem ter o APC no PHP. Se você optar por CGI rápido, em vez de mod_php, gaste algum tempo tentando tornar o cache da APC compartilhado entre as instâncias php, configurando um bom script de wrapper. Verifique também se o cache da APC está em um arquivo mapeado na memória para extrair todo o bit do PHP.
Eu recomendaria começar com o Pressflow (se estiver usando o Drupal 6), Memcache , Varnish e alguma forma de CDN (Content Distribution Network), como a Akamai. O resultado final deve ser o menor número possível de usuários, atingindo o servidor de origem.
Se você possui partes da página que não conseguem armazenar em cache para usuários não anônimos (itens específicos para esse usuário, "Bem-vindo usuárioX" etc.), você pode explorar opções para preencher essas partes da página, como assíncronas retornos de chamada ou margem inclui.
Se você tiver um grupo menor de usuários internos (como um grupo de editores) que precisem visualizar uma versão não armazenada em cache do site, recomendo expor uma versão não armazenada em cache do site em um URL diferente (protegido por uma VPN ou equivalente, se possível).
fonte
2500 ocorrências por segundo em um dia - se, por "ocorrência", você quer dizer "página entregue", isso representa 216 milhões de páginas por dia. Deixe-me dizer uma coisa: você não tem 216 milhões de páginas por dia. Eu amo esses clientes ...
Dito isto, um dado de tráfego bruto não diz nada. Embora os conselhos neste tópico sejam sólidos sobre o Varnish / CDN, se tudo o que você tem é tráfego anônimo, mas se o tráfego foi registrado, você está enfrentando um desafio. Mas antes de gastar uma quantidade absurda de tempo e esforço para resolver um problema, verifique se você tem um problema. 2500 batidas por segundo, o Bing fica menos que isso, você percebe isso, certo?
fonte
Lado do servidor
Code Side
Base de dados
fonte
Eu também ouvia este podcast da Lullabot sobre como eles criaram o site do Grammys.com para uma explosão de tráfego ao longo de uma semana. Foi uma explicação bastante educacional.
http://www.lullabot.com/podcasts/podcast-92-grammycom
fonte
Embora seja muito difícil prever padrões, se você tiver uma boa idéia dos níveis de tráfego. Carregue teste sua solução. Existem várias opções diferentes e muito não será possível prever até que você tenha tráfego ao vivo, mas se você carregar o teste o máximo possível, pelo menos, terá um grau razoável de confiança de que sua configuração pode lidar com o tráfego.
Toda a sintonia do mundo não ajudará se você não testá-lo primeiro.
Esta foi uma apresentação na DC SF sobre como o economista fez isso. http://sf2010.drupal.org/conference/sessions/performance-testing-economist-online-using-grinder
fonte
Para sites de alto tráfego, você deve usar vários servidores e balanceador de carga ou simplesmente CDN. Também é muito importante armazenar em cache o máximo possível para minimizar a carga nos servidores da web.
O uso da CDN (Content Delivery Network ) ajuda a distribuir os recursos por vários domínios (compartilhamento de domínio), o que reduz a carga no servidor da web.
O uso da CDN ajuda no cache distribuído e na aceleração remota, também ajuda a mitigar os ataques DDoS , devido a vários pontos de extremidade. Ajuda na segurança, porque o conteúdo em cache é mais difícil de explorar.
Fornecedores de exemplo: Rapidamente , Rackspace , Akamai , Azure, CloudFlare, Amazon, MaxCDN, Verizon.
Aqui estão mais algumas sugestões:
ab
JMeter para TTFB , teste de carga e estresse em seu aplicativo da web.Portanto, sua arquitetura da web, do ponto de vista do usuário, pode se parecer com:
Para sugestões de otimização do Drupal, verifique: Como você melhora o desempenho do Drupal?
fonte
Habilite duas extensões:
Seu desempenho funcionará melhor.
Se você deseja alterar o Zend OPcache e o Wincache no Microsoft Azure, primeiro crie um nome de pasta '
ini
' em 'D:\home\site\
'. Além disso, crie 2 arquivos '.user.ini
' e 'settings.ini
'Adicione a seguinte configuração em cada arquivo:
.user.ini
setting.ini
Além disso, adicione uma configuração de aplicativo ao seu aplicativo da Web com a chave
PHP_INI_SCAN_DIR
e o valord:\home\site\ini
Após alterar o PHP_INI_SYSTEM, reinicie seu aplicativo da web. Se quiser saber mais sobre a configuração de twigging, consulte a documentação da Microsoft .
Após a configuração acima, meu site Drupal (Drupal 8.3) é carregado em 3 segundos.
fonte
Você também pode examinar a redistribuição da carga em vários servidores com o auxílio de uma solução de balanceamento de carga baseada em DNS ou de software / hardware. Isso também prejudicaria a tolerância a falhas.
fonte