Dicas de desempenho do servidor LAMP [fechado]

11

Quais dicas de desempenho podem ser oferecidas a alguém executando um servidor LAMP?

No caso em que algo é específico da Distribuição, estou direcionando o Debian.

Unkwntech
fonte

Respostas:

26

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.

pQd
fonte
1
se posso adicionar isso, escrevi recentemente sobre backups seguros com estratégias push e pull via amazon s3. não é viável para dados bancários, mas tudo em que você confiará na amzon deve ficar bem. logaholic.de/2009/05/21/…
Karsten
Na verdade, eu notei esse post antes de você comentar; -]. agradável de qualquer maneira. você sempre pode criptografar seu backup para torná-lo mais seguro.
pQd
3

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.

Antoine Benkemoun
fonte
bom ponto. Só posso especular que seu gargalo poderia ter sido a resposta do subsistema / unidade de E / S. talvez então separar dados em duas unidades diferentes / ter um controlador de disco fino também possa funcionar. de qualquer maneira, mais memória e mais cpus sempre são bons, mas você também obtém mais pontos possíveis de falha.
pQd
Bem, não tenho tanta certeza de que foram E / Ss de disco porque a maioria (digamos 90%) dos hits do SQL foram armazenados em cache. Eu estava pensando em alternar o contexto da CPU, mas não sei se isso pode realmente desempenhar um papel significativo.
Antoine Benkemoun
1

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.

Karsten
fonte
Eu realmente gosto do eAccelerator. Dá o melhor desempenho para meus sites.
TheHippo