MySQL fica travando servidor OS .. Por favor ajude ajustar my.ini!

1

Eu tenho o MySQL 5.0 instalado em uma máquina com Windows 2008 (3 GB de RAM). O meu servidor trava regularmente (quase uma vez por dia) sempre com este único erro:

Changed limits: max_open_files: 2048  max_connections: 800  table_cache: 619

Eu não usei o pesado arquivo .ini do InnoDB, embora eu esteja repensando que eu deveria ter? Estou preocupado que grandes alterações na configuração façam com que meus sites atuais parem de funcionar. O que devo fazer?

Aqui estão as minhas configurações atuais de ini:

default-character-set=latin1
default-storage-engine=INNODB
max_connections=800
query_cache_size=84M
table_cache=1520
tmp_table_size=30M
thread_cache_size=38
myisam_max_sort_file_size=100G
myisam_sort_buffer_size=30M
key_buffer_size=129M
read_buffer_size=64K
read_rnd_buffer_size=256K
sort_buffer_size=256K
innodb_additional_mem_pool_size=6M
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=3M
innodb_buffer_pool_size=250M
innodb_log_file_size=50M
innodb_thread_concurrency=10

Aqui estão algumas informações extras do phpMyAdmin:

Server: MYSERVER (localhost via TCP/IP)
Server version: 5.0.90-community-nt
Protocol version: 10
MySQL charset: UTF-8 Unicode (utf8)
Microsoft-IIS/7.0
MySQL client version: 5.0.90
PHP extension: mysqli

Da minha pesquisa, parece-me que esse erro está dizendo que os limites de código do sistema operacional continuam sendo atingidos e que eu deveria usar o arquivo pesado .ini do innoDB. No entanto, não sei quais serão as implicações para meus sites usando o MySQL. Abaixo estão as configurações pesadas do innoDB Eu estou pensando em substituí-lo, alguém pode me dizer o que isso vai significar para meus sites com bancos de dados existentes? Eles são todos InnoDB e até todas as suas tabelas são InnoDB. Estou no caminho certo?

[client]
port = 3306
socket = /tmp/mysql.sock

[mysqld]
port = 3306
socket = /tmp/mysql.sock

back_log = 50
max_connections = 100
max_connect_errors = 10
table_cache = 2048
max_allowed_packet = 16M
binlog_cache_size = 1M
max_heap_table_size = 64M
sort_buffer_size = 8M
join_buffer_size = 8M
thread_cache_size = 8
thread_concurrency = 8
query_cache_size = 64M
query_cache_limit = 2M
ft_min_word_len = 4
default_table_type = MYISAM
thread_stack = 192K
transaction_isolation = REPEATABLE-READ
tmp_table_size = 64M
log-bin=mysql-bin
log_slow_queries
long_query_time = 2
log_long_format
server-id = 1
key_buffer_size = 32M
read_buffer_size = 2M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_max_extra_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover
skip-federated
skip-bdb
innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 2G
innodb_data_file_path = ibdata1:10M:autoextend
innodb_file_io_threads = 4
innodb_thread_concurrency = 16
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size = 8M
innodb_log_file_size = 256M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120

[mysqldump]
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[isamchk]
key_buffer = 512M
sort_buffer_size = 512M
read_buffer = 8M
write_buffer = 8M

[myisamchk]
key_buffer = 512M
sort_buffer_size = 512M
read_buffer = 8M
write_buffer = 8M

[mysqlhotcopy]
interactive-timeout

[mysqld_safe]
open-files-limit = 8192

    
por TruMan1 19.04.2010 / 19:47

3 respostas

2

Eu não acho que o MySQL deva matar seu sistema operacional, mesmo que esteja se comportando mal. O que você está descrevendo não é normal para um servidor saudável. No pior dos casos, a instância do MySQL deve morrer, não o servidor inteiro.

Você deve investigar possíveis problemas de hardware, como resfriamento insuficiente ou chips de RAM ruins. Então você deveria descartá-los primeiro.

Se você concordar que isso pode realmente ser um problema de hardware, veja o que você poderia fazer:

  • melhore o resfriamento. Talvez abra o caso do servidor e deixe-o funcionando dessa maneira para provar a teoria.
  • grave um CD ao vivo do memcheck e faça uma verificação rápida da RAM. Isso requer uma reinicialização, mas eu acho que seu servidor está lhe dando oportunidades diárias, certo? ; -)

Boa sorte! - Yves

    
por 20.04.2010 / 02:08
0

Ele deve melhorar a resposta e o desempenho de todos os sites usando um banco de dados innodb. Eles não vão parar de trabalhar por causa dessas mudanças. Eu sugiro fazer a tunning durante as horas de pico. A lista de configuração é um bom começo, mas no final você terá que ajustá-la para atender melhor às suas necessidades. Eu fiz uso da página do phpmyadmin para ligar o servidor.

Eu mudaria o innodb_buffer_pool_size = 2G para 1GB já que você tem apenas 3GB de RAM e precisa do suficiente para o sistema ser executado

    
por 19.04.2010 / 22:47
0

Tenha cuidado ao alterar o arquivo INI.

O novo que você mostra não inclui algumas configurações importantes, como o conjunto de caracteres padrão; você está mostrando apenas a parte alterada?

Além disso, alterar o limite de arquivos abertos para 8192 parece estranho se você estiver recebendo avisos quando o sistema operacional estiver travando com arquivos abertos sendo 2048.

    
por 22.08.2011 / 04:26