Lentidão

1. Lentidão

Geraldo Augusto de Oliveira Quites
geraldoquites

(usa Suse)

Enviado em 09/05/2012 - 09:44h

Tenho dois servidores, um server2003 e um outro opensuse 11.4. Em ambos tenho o mysql, estou fazendo a migração dos dados do server2003 para o opensuse e me deparei com um grande problema. Quando executo um determinado programa usando a base de dados do server2003 eu tenho a resposta em 6 segundos, quando uso o mesmo programa no linux a minha resposta passa a ser de 39 segundos, ou seja uma diferença enorme. Deixo claro que a máquina do linux é superior á máquina do server2003.
Usando o Health do administrar do mysql, observei que no server2003 tem uma abertura máxima de 365 query já no linux a quantidade máxima foi de 143 query, ou seja, no server2003 ele resolve mais query em menor tempo.
Outro detalhe importante, observei que no servidor linux a requisição no HD é altíssima.

O que pode estar acontecendo?
Se alguém passou por este problema e obteve solução, agradeço ajuda.

Segue meu my.cnf


[client]
port = 3306datadir = /var/lib/mysql
socket = /var/run/mysql/mysql.sock


[mysqld]
port = 3306
socket = /var/run/mysql/mysql.sock

skip-locking
key_buffer_size = 312M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
myisam_max_sort_file_size = 100G
myisam_max_extra_sort_file_size = 100G
innodb_additional_mem_pool_size = 2M
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size = 1M
innodb_buffer_pool_size = 15M
innodb_log_file_size = 5M
innodb_thread_concurrency = 8
query_cache_size=8M
table_cache=510
tmp_table_size=13M
thread_cache_size=12
lower_case_table_names=1
default-character-set=latin1
max_connections=255
language=portuguese

log-bin=mysql-bin
binlog_format=mixed
server-id = 1

[safe_mysqld]
log-error = /var/log/mysql/mysqld.log
socket = /var/run/mysql/mysql.sock

!include_dir /etc/mysql

[mysqldump]
socket = /var/run/mysql/mysql.sock
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash


[myisamchk]
key_buffer_size = 100M #20M
sort_buffer_size = 100M #20M
read_buffer = 50M #2M
write_buffer = 50M #2M

[mysqlhotcopy]
interactive-timeout

[mysqld_multi]
mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
log = /var/log/mysqld_multi.log


[mysqladmin]
character-sets-dir=/usr/share/mysql/charsets
#default-character-set=utf8
default-character-set=latin1

[mysqlcheck]
character-sets-dir=/usr/share/mysql/charsets
#default-character-set=utf8
default-character-set=latin1

[mysqldump]
character-sets-dir=/usr/share/mysql/charsets
#default-character-set=utf8
default-character-set=latin1

[mysqlimport]
character-sets-dir=/usr/share/mysql/charsets
#default-character-set=utf8
default-character-set=latin1

[mysqlshow]
character-sets-dir=/usr/share/mysql/charsets
#default-character-set=utf8
default-character-set=latin1




  


2. Re: Lentidão

Perfil removido
removido

(usa Nenhuma)

Enviado em 09/05/2012 - 09:56h

Roda o mysqltuner, para fazer teste para ti!

http://www.techerator.com/2011/08/optimize-your-mysql-server-with-the-mysql-tuner-script/

É bom rodar ele em sobrecarga! Execute as consultas e rode o mysqltuner.

Trabalhar com innodb é muito bom também!

Otimize o seu server também.

Aumenta seu query_cache_size(tamanho da cache). O meu está em 256M

query_cache_size = 256M
query_cache_type = 1


Veja a questão de resolução de nomes também. Pode deixar lento!


3. Re: Lentidão

Geraldo Augusto de Oliveira Quites
geraldoquites

(usa Suse)

Enviado em 12/05/2012 - 13:03h

Amarildo, você tocou num assunto muito importante e que eu já venho observando mo mysql lento quando uso servidor linux, a resolução de nomes.

Qual a relação do muysql, uso internto, com o DNS?

Como devo configurar o DNS nesse caso, sendo que a máquina é só de uso interno e o programa chama o mysql pelo ip e não pelo nome?

Aguardo seu comentário e desde já agradeço.

Geraldo.

Ps.. rodei o mysqltuner e está tudo legal...


4. Re: Lentidão

Perfil removido
removido

(usa Nenhuma)

Enviado em 12/05/2012 - 16:42h

Como o MySQL Utiliza o DNS

Quando um novo cliente conecta ao mysqld, o mysqld extende uma nova thread para lidar com o pedido. Esta thread primeiro confere se o nome da máquina está no cache de nomes de máquinas. Se não, a thread tenta resolver o nome da máquina.
Se o sistema operacional suporta as chamadas seguras com thread gethostbyaddr_r() e gethostbyname_r(), a thread as utiliza para fazer a resolução do nome máquina.
Se o sistema operacional não suporta as chamadas de threads seguras, a thread trava um mutex e chama gethostbyaddr() e gethostbyname(). Perceba que neste caso nenhuma outra thread pode resolver outros nomes de máquinas que não existam no cache de nomes de máquina até que a primeira thread esteja destrave o mutex.
Você pode desabilitar a procura de nomes de máquinas no DNS iniciando o mysqld com a opção --skip-name-resolve. No entanto, neste caso você só pode usar números IP nas tabelas de privilégio do MySQL.
Se você possuir um DNS muito lento e várias máquinas, pode obter mais desempenho desligando a procura de nomes de máquinas usando a opção --skip-name-resolve ou aumentando HOST_CACHE_SIZE (valor padrão: 128) e recompilar mysqld.
Você pode desabilitar o cache de nomes de máquinas iniciando o servidor com a opção --skip-host-cache. Para limpar a cache do nome de máquinas, envie uma instrução FLUSH HOSTS ou execute o comando mysqladmin flush-hosts.
Se você deseja disabilitar as conexões TCP/IP totalmente, inicie o mysqld com a opção --skip-networking.

Referência: http://xoops.net.br/docs/mysql/manual/ch05s05.php#.T666P6QjUVk

Para configurar o bind para resolver nomes internos pode usar esse artigo:
http://granito2.cirp.usp.br/DNS.Dicas-L/dns_server.html


5. Re: Lentidão

Perfil removido
removido

(usa Nenhuma)

Enviado em 12/05/2012 - 16:46h

Os índices nas tabelas do banco em Linux estão iguais aos do Windows?






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts