Isso realmente depende da sua carga de trabalho.
-
para a parte L
- consiga muita memória,
- se você puder ultrapassar 4 GB, vá para 64 bits.
- para partições onde seu conteúdo, logs e dados do MySQL são opções de montagem: noatime, nodiratime.
- use drives físicos / conjuntos de raids separados, o ideal é manter os dados, logs e conteúdo do SQL que você veicula - cada um em um eixo separado.
-
para a parte A da sua pilha - bem, talvez você queira substituí-la completamente por nginx ou lighthttpd , ou talvez apenas deixe o Apache para conteúdo dinâmico e tenha um servidor separado (como esses dois ou mathopd ) para conteúdo estático. Dê uma olhada aqui para mais opções. Se você for executar o Apache e outro servidor na mesma caixa, um segundo endereço IP será útil. Para diminuir a latência do usuário final, use http / 1.1 com keep-alive. Considere usar um CDN para conteúdo estático.
-
para a parte M da sua lâmpada - dê uma olhada em mysqlperformanceblog . do alto da minha cabeça:
- faça log de consultas lentas,
- dê memória suficiente,
- considere o uso do innodb.
- se você tem muito texto para pesquisar - use sphinx e tenha um trabalho em lote que reconstrua o índice.
- considere a eliminação de consultas que duram mais que XYZ segundos. É melhor incomodar 1% dos usuários do que derrubar todo o site no horário de pico. Mas isso realmente depende se você processar transações em dinheiro ou mostrar fotos legais.
- use memcached se puder, para armazenar em cache o resultado de consultas SQL mais caras. Lembre-se de invalidar o cache quando você alterar o conteúdo do SQL. Por outro lado, eu tenho poucos sites onde todos os dados se encaixam confortavelmente na memória e, para isso, o MySQL é muito rápido e não há necessidade de cache adicional.
-
para P
- definir o tempo limite de execução dos scripts.
- considere o uso de algum acelerador de PHP / cache de opcode. Fiquei bastante satisfeito com o xcache , mas não o uso agora.
- se você tiver processamento intensivo da CPU - armazene os resultados em cache e armazene-os em SQL ou memcached
Não é realmente uma dica de desempenho, mas faça backups externos. Realmente.