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.

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.


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.


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.


Eu realmente gosto do eAccelerator. Dá o melhor desempenho para meus sites.
TheHippo
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.