O MySQL continua travando no servidor do SO. Por favor, ajude a ajustar o my.ini!

1

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

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

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

Aqui estão 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 adicionais do phpMyAdmin:

Servidor: MYSERVER (host local via TCP / IP)
Versão do servidor: 5.0.90-community-nt
Versão do protocolo: 10
MySQL charset: UTF-8 Unicode (utf8)
Microsoft-IIS / 7.0
Versão do cliente MySQL: 5.0.90
Extensão do PHP: mysqli

Da minha pesquisa, parece-me que esse erro está dizendo que os limites codificados do sistema operacional continuam sendo atingidos e que eu deveria usar o arquivo .ini pesado 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 em que estou pensando em substituí-lo. Alguém pode me dizer o que isso significa 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?

[cliente]
porta = 3306
socket = /tmp/mysql.sock

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

back_log = 50
max_connections = 100
max_connection_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
servidor-id = 1
key_buffer_size = 32M
read_buffer_size = 2M
record_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
ignorar-federado
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]
não-auto-repetição

[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]
tempo limite interativo

[mysqld_safe]
open-files-limit = 8192

TruMan1
fonte
Qual é o erro? A primeira linha que você citou não é uma mensagem de erro. Então, o que há nos logs de eventos? Além disso, quando você diz "servidor", você quer dizer o sistema operacional, conforme indicado pelo título, ou o serviço MySQL?
John Gardeniers
Você está certo, a primeira linha que citei foi na verdade um "aviso" dos logs de eventos. Assim que essa mensagem é registrada, o servidor trava e reinicia. Não há erros além deste aviso.
TruMan1
E os logs do Windows? Nada aí?
John Gardeniers

Respostas:

2

Eu não acho que o MySQL deveria matar seu sistema operacional, mesmo que esteja se comportando mal. O que você descreve não é normal para um servidor íntegro. Na pior das hipóteses, a instância do MySQL deve morrer, não o servidor inteiro.

Você deve investigar possíveis problemas de hardware, como refrigeração insuficiente ou chips de RAM com defeito. Então você deve descartá-los primeiro.

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

  • melhorar o resfriamento. Talvez abra o gabinete do servidor e deixe-o em execução para provar a teoria.
  • gravar um CD ao vivo do memcheck e fazer uma verificação rápida da RAM. Isso requer uma reinicialização, mas acho que seu servidor está oferecendo oportunidades diárias, certo? ;-)

Boa sorte! - Yves

Yves Junqueira
fonte
0

Deve melhorar a resposta e o desempenho de todos os sites que usam um banco de dados innodb. Eles não param de funcionar por causa dessas alterações. Sugiro fazer o ajuste durante o horário de pico. A lista de configurações é um bom começo, mas, no final das contas, você precisará ajustá-las para melhor atender às suas necessidades. Eu fiz uso da página do phpmyadmin para ativar o servidor.

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

aduljr
fonte
Você acabou usando a configuração "socket = /tmp/mysql.sock"? Não sei o que é isso, mas não está nas minhas configurações atuais.
TruMan1
As funções de soquete estão claramente documentadas, bem como todas as outras configurações que você está pensando em alterar. É melhor saber o máximo possível sobre os sistemas que você está gerenciando, por isso recomendo dedicar algum tempo ao estudo antes de lançar várias alterações nas configurações que você não entende em um servidor de produção. Além disso, o que Yves disse acima: a reinicialização do sistema operacional do servidor inteiro não é um comportamento normal, e eu procuraria coisas fora do MySQL para a causa. Uma coisa que ele não mencionou é verificar o limite de arquivos abertos do seu sistema operacional. Se o MySQL estiver usando todos eles, o sistema operacional poderá falhar.
ryandenki
0

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ê receber avisos quando o sistema operacional estiver travando, com arquivos abertos sendo 2048.

Ryandenki
fonte