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
fonte
Respostas:
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:
Boa sorte! - Yves
fonte
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
fonte
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.
fonte