Realmente depende da sua carga de trabalho.
para a parte L
- ter muita memória,
- se você pode ultrapassar 4 GB, vá para 64 bits.
- para partições em que seu conteúdo, logs e dados do MySQL são utilizados, use as opções de montagem: noatime, nodiratime.
- use unidades físicas / conjuntos de ataques separados, mantenha idealmente dados, logs e conteúdo SQL que você atende - cada um em um eixo separado.
para a parte A da sua pilha - bem, talvez você queira substituí-lo completamente por nginx ou lighthttpd , ou talvez deixe o Apache para conteúdo dinâmico e tenha um servidor separado (como os dois ou mathopd ) para conteúdo estático. Dê uma olhada aqui para mais opções. Se você estiver executando o Apache e outro servidor na mesma caixa, um segundo endereço IP será útil. Para diminuir a latência para o usuário final, use http / 1.1 com keep-alive. Considere usar uma CDN para conteúdo estático.
para a parte M da sua lâmpada - dê uma olhada no mysqlperformanceblog . do alto da minha cabeça:
- registrar consultas lentas,
- dê memória suficiente,
- considere usar o innodb.
- se você tiver muito texto para pesquisar - use sphinx e tenha um trabalho em lotes que reconstrói o índice.
- considere matar consultas com mais de 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 boas fotos.
- use memcached, se possível, para armazenar em cache o resultado de consultas SQL mais 'caras'. Lembre-se de invalidar o cache ao alterar o conteúdo do SQL. Por outro lado, tenho poucos sites em que todos os dados cabem confortavelmente na memória e, por isso, o MySQL está em alta velocidade e não há necessidade de cache adicional.
para P
- defina o tempo limite de execução para scripts.
- considere usar algum cache de acelerador / código de código PHP . Fiquei bastante satisfeito com o xcache , mas não o uso agora.
- se você tiver processamento intensivo da CPU - armazene em cache os resultados e os armazene em SQL ou em cache de memc
Não é realmente uma dica de desempenho, mas faça backups externos. Realmente.
Eu realmente sugiro separar o MySQL e o Apache / PHP em duas máquinas diferentes.
Por exemplo, eu tinha uma máquina (C2D E6600) que sempre aumentava para 2,0 e acima da média de carga. Coloquei o MySQL em uma segunda máquina (P4C 3Ghz) e depois disso as duas médias de carga não ultrapassaram 0,2-0,3. Então, eu fui de um site muito lento para um site rápido, com dois servidores com muita margem de desempenho.
fonte
Para a parte P, você pode considerar o cache de opcode com a APC . Pode-se também considerar mod_fastcgi com php em vez do mod_php padrão.
fonte