Infelizmente, você não sabe o que consertar antes de ir ao vivo. É muito difícil colocar dinheiro no lugar certo sem ter alguns dados para respaldar suas decisões. Eu recomendo A arte do planejamento de capacidade para ter uma ideia de quais coisas você deve fazer para planejar sua capacidade . A regra geral, porém, é monitorar tudo. Você quer gráficos em abundância. Se você não consegue ver onde as coisas estão tendo problemas, você não tem chance de consertá-lo. Não deixe o monitoramento para o último minuto. Eu não posso enfatizar o suficiente o quão importante é ter uma idéia de como o seu site está funcionando atualmente e como ele tem se apresentado no último dia, mês ou ano. Usamos o munin para nossos gráficos, pois é muito rápido de se pôr em funcionamento. Outras pessoas usam o Ganglia e o Cacti com grande efeito.
No entanto, existem várias coisas que você pode fazer para melhorar suas chances de sobreviver.
1) Duplique tudo. Grande quantidade. Você quer adicionar mais hardware a lugares em que você está com problemas. Você não quer comprar hardware maior para substituir o hardware que é muito lento. Veja o balanceamento de carga de seus servidores de aplicativos. Olhe para usar uma configuração de banco de dados mestre / escravo, onde as leituras vêm de seus escravos e as gravações são feitas para o seu mestre. Você disse que está armazenando a maioria da mídia em um CDN. Boa.
2) Evite armazenar qualquer coisa que transiente em seu banco de dados. Os bancos de dados são muito lentos para dados temporários e você os quer servindo outras solicitações.
3) Evite o estado do lado do servidor, se possível. Com o estado do lado do servidor, você terá que ter algum tipo de replicação de sessão compartilhada entre servidores web, limitando sua capacidade de adicionar mais hardware, ou você precisará usar sessões persistentes, que funcionarão, mas podem causar carga desigual e sessões morrendo se seu servidor morre.
4) Cache tudo. Use o memcached para armazenar dados em cache entre seu banco de dados e seu aplicativo. É mais eficaz se você armazenar dados resultantes de várias consultas. Use um cache na frente da sua camada da web. Algo como o mod_cache ou o squid do apache em um modo de proxy reverso.
5) Faça o perfil do seu site. Encontre onde está lento.
6) Faça o perfil do seu html. Uma grande parte da lentidão percebida pelo usuário na Web está no front end. Sites de alto desempenho tem muitas técnicas úteis. A extensão do YSlow firefox do Yahoo também é útil.
Eu posso recomendar Construindo sites escaláveis e Alta escalabilidade blog.