Como ajustar o desempenho do MySQL

3

Estou enfrentando um problema real com a instância do MySQL para um serviço online. Usamos o hibernate e o c3p0 pool com essas configurações:

c3p0.max_size=200
c3p0.min_size=5
c3p0.timeout=60000
c3p0.max_statements=20
c3p0.idle_test_period=300
c3p0.acquire_increment=3
c3p0.unreturnedConnectionTimeout=70000

Eu notei que o serviço (web site) estava fora do ar, já que ele está recusando a conexão. Eu faço o login no console do MySQL e show processlist mostrou na lista 30 as conexões sleep (comando) para o banco de dados em questão. E isso me deixa preocupado. Nós esperávamos 200 conexões toda vez e permitimos que a conexão máxima do MySQL fosse 300. Aqui está o my. Cnf

key_buffer        = 16M
max_allowed_packet    = 16M
thread_stack        = 128K
thread_cache_size    = 8
max_connections        = 300
#table_cache            = 64
#thread_concurrency     = 10

Completamente my.cnf

Eu fiz uma pequena pesquisa e vejo que o tamanho do table_cache precisa ser atualizado de acordo. A máquina é uma máquina quad core rodando o ubuntu 9.10 server 4gb ram

cat / proc / cpuinfo

** Pergunta 1: ** Como forçar o c3p0 a liberar conexões inativas.

** Pergunta 2: ** Qual tache_cache e todos os outros parâmetros que preciso corrigir para permitir que o servidor use todo o seu potencial e não recusar conexões

** Pergunta 3: ** Depois que eu reiniciei o Tomcat, as conexões do MySQL caíram para 4. Eu preciso corrigir isso o mais rápido possível e preciso da sua experiência para isso. Mas gostaria de adquirir essa experiência também para o futuro. Qual livro possível você deveria recomendar de ajustes de desempenho para o MySQL para clustering.

    
por black sensei 27.05.2011 / 11:12

2 respostas

1

O ajuste do mysql pode ser feito com vários scripts.

Mysqltuner, mytop, mysqlreport, tuning-primer ... Esses scripts lhe darão informações detalhadas sobre o seu servidor ...

Por exemplo, verifique o próximo link

link

    
por 27.05.2011 / 13:07
0

A otimização é uma busca sem fim, mas aqui estão algumas coisas que podem ajudar:

  1. Aumentar max_connect_errors (eu uso 10, mas você pode tentar mais)
  2. Aumentar table_open_cache : 2048 é o que eu uso, mas isso depende do número de tabelas no seu aplicativo.
  3. Use todos os endereços IP em suas declarações de concessão e desative o DNS:     [mysqld]     skip-name-reslove = 1
  4. Aumente definitivamente query_cache_size (ou seja, 64 MB)
por 28.05.2011 / 02:01