
Esta pergunta estava originalmente em stackoverflow.com, mas me disseram que posso obter uma resposta melhor neste site...
Muito em breve irei configurar um servidor web para um cliente que tem um site muito movimentado. Ele tem um fórum (corre emFórum de Máquinas SimplesSMF escrito em PHP) que realmente não pode ser alterado. Quero migrar isso para um servidor virtual privado separado, pois está muito ocupado com cerca de 40.000 acessos por dia e mais de 400 postagens por dia. Com a versão do SMF que possui (a melhor e mais estável versão de produção 1.1), ele precisa do MySQL para rodar, então não posso alterá-lo para PostgreSQL (que talvez eu prefira)
Ao instalar o MySQL Server no Ubuntu Server 10 LTS, estou curioso para saber se há algo que eu possa fazer para garantir que seja o mais eficiente possível. Quero correr o mais rápido possível para manter os recursos baixos e garantir que possamos permanecer abaixo do limite de recursos do servidor. Com um servidor virtual privado, tenho a opção de alternar os recursos rapidamente, mas quero garantir que o MySQL Server seja configurado da maneira mais eficiente possível, pois não sou exatamente um especialista nesse tipo de coisa.
Eu estava fazendo algumas pesquisas e encontrei um artigo que sugere fazer isso para garantir que seja eficiente:
# open mysql conf and set these settings:
# key_buffer = 16k
# max_allowed_packet = 1M
# thread_stack = 64K
nano /etc/mysql/my.cnf
# restart mysql
/etc/init.d/mysql restart
Alguém pode me fornecer algumas dicas, sugestões, links, conhecimentos sobre esse assunto?
Responder1
Em primeiro lugar; Janne está correto: 40 mil leituras e 400 gravações por dia são carga zero. Você não deve ter absolutamente nenhuma desvantagem de desempenho com quase qualquer tipo de configuração.
Estou executando uma configuração semelhante em um VPS com SMF. Descobri que ele se beneficia muito com mecanismos de cache, pois utiliza APC.
Minha configuração (que eu recomendo para você):
- Nginx
- MySQL (com conversão InnoDB da maioria das tabelas SMF)
- PHP-FPM (extremamente escalável, pode usar poucos recursos se você disser para começar com poucos spawns)
- Cache APC
Responder2
Primeiro de tudo, 40.000 acessos por dia e mais de 400 posts por dia não parece algo que faria o MySQL suar. 40.000 acessos por dia equivalem a cerca de 2 acessos por segundo se distribuídos ao longo do dia, e mais de 400 postagens significam que há uma nova postagem a cada três minutos.
E isso não é muito. Realmente.
Você não mencionou qual mecanismo de armazenamento está em uso. Com tabelas MyISAM você precisa ajustar especialmente okey_bufferetabela_cachevalores. Com tabelas InnoDBinnodb_buffer_pool_sizeé o mais importante.
Okey_buffer = 16kno seu exemplo parece estranho. Um key_buffer de 16 kilobytes? De jeito nenhum, faça pelo menos 16M (megabytes), ou se o seu servidor tiver uma quantidade razoável de memória, pode ser muito mais. Por favor, esteja ciente de que muitas variáveis do MySQL sãoconexãovalores específicos e não globais, portanto, se a carga do seu servidor significa milhares de conexões MySQL simultâneas, você precisará ajustar os valores, mas se normalmente tiver apenas algumas conexões, mas grandes conjuntos de dados, será necessário ajustar os valores.