A maneira mais eficiente de configurar o MySQL no Ubuntu Server 10 LTS?

2

Esta questão foi originalmente em stackoverflow.com, mas me disseram que eu poderia obter uma resposta melhor neste site ...

Em breve, configurarei um servidor da Web para um cliente que tenha um site muito ocupado. Ele tem um fórum (executado no Simple Machines Forum SMF escrito em PHP) que realmente não pode ser alterado. Eu quero mover isso para um servidor privado virtual separado por conta própria, como é muito ocupado em cerca de 40.000 acessos por dia com mais de 400 posts por dia. Com a versão do SMF tem (a melhor e mais estável versão de produção 1.1) ele precisa do MySQL para rodar, então eu não posso mudar para o PostgreSQL (o que eu talvez 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. Eu estou querendo correr o mais rápido possível para manter os recursos baixos e garantir que possamos ficar abaixo do nosso limite de recursos para o servidor. Com um servidor privado virtual, eu tenho a opção de mudar os recursos em um flash, mas estou querendo garantir que o MySQL Server seja configurado da forma mais eficiente possível, já que 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, dicas, links, conhecimento sobre o assunto?

    
por littlejim84 11.08.2010 / 09:52

2 respostas

2

Primeiro de tudo; Janne está correto: 40 mil leituras e 400 gravações por dia são de 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 isso beneficia muito dos mecanismos de cache, já que utiliza APC.

Minha configuração (que eu recomendo para você):

  • Nginx
  • MySQL (com a conversão InnoDB da maioria das tabelas do SMF)
  • PHP-FPM (extremamente escalável, pode usar muito poucos recursos se você disser para começar com poucos spawns)
  • cache APC
por 11.08.2010 / 12:06
1

Primeiro de tudo, 40.000 acessos por dia e mais de 400 posts por dia não soam como algo que faria o MySQL suar. 40.000 acessos por dia é de cerca de 2 acessos por segundo, se espalhados durante o dia, e mais de 400 postagens significa que há um novo post a cada três minutos.

E isso não é muito. Realmente.

Você não mencionou qual mecanismo de armazenamento está em uso. Com as tabelas MyISAM, você precisa ajustar especialmente os valores key_buffer e table_cache . Com tabelas InnoDB innodb_buffer_pool_size é o mais importante.

O key_buffer = 16k no 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 decente de memória, então pode ser muito mais. Por favor, esteja ciente de que muitas variáveis do MySQL são conexão específicas e não globais, então se o seu servidor carregar milhares de conexões MySQL simultâneas, então você precisará ajustar os valores para baixo, mas se você tipicamente tem apenas um punhado de conexões, mas grandes conjuntos de dados, então você precisa ajustar os valores.

    
por 11.08.2010 / 10:13