Eu possuo um servidor de um jogo chamado minecraft, este jogo é constituído por vários blocos. Em meu servidor cada bloco colocado por um jogador as informações ficam armazenado no banco mysql localhost em um ssd. A cada determinado tempo (geralmente 15 minutos) o servidor gera um "lag" de aproximadamente 10 a 15 segundos, este lag aparentemente é causado pela conexão que chega a um limite e ela é forçada a fechar e reabrir e nesse tempo fica "lagado/travado (o servidor de minecraft)". O tempo entre minecraft para o mysql tem que ser instantâneo e por isso neste processo (de acordo com o phpmyadmin) o tempo sempre fica 0, mas quando da o travamento (a cada +-15min) o tempo fica em até 15 segundos que é o tempo que parece que abre e fecha o banco e nesse tempo que parece que está fechando e abrindo o banco de dados o servidor fica travado por +- 15 segundos.
Antes eu usava um banco em SQLITE3 (nunca travava) mas ele começou a ficar muito grande e quando chegou a uns 2 GB eu converti para MYSQL porque o servidor demorava muito tempo para ligar e desligar, agora usando MYSQL ele liga muito rápido porém da o lag/travamento de +-15sec a cada +-15minutos. Após colocar em MYSQL ele começou a travar atualmente ele tem 3,6GB no MYSQL (MyISAM usando o modo Compressed).
Eu já adicionei/alterei várias vezes e de formas diferente as configurações do my.cnf mas nunca teve exito sempre fica igual no caso o meu servidor é um dedicado com 32GB de RAM com o processador Xeon E3-1270 v2 (8M Cache, 3.50 GHz) e nele tem instalado o whm/cpanel.
Eu já usei no /etc/my.cnf
A configuração default,
esta:
[mysqld]
innodb_file_per_table=1
default-storage-engine=MyISAM
key_buffer_size=5G
max_allowed_packet=4M
sort_buffer_size=8M
read_buffer_size=8M
read_rnd_buffer_size=32M
myisam_sort_buffer_size=256M
esta aqui:
esta:
[mysqld]
innodb_file_per_table=1
default-storage-engine=MyISAM
key_buffer_size=5G
max_allowed_packet=4M
sort_buffer_size=8M
read_buffer_size=8M
read_rnd_buffer_size=32M
myisam_sort_buffer_size=256M
thread_cache_size=32
query_cache_size=128M
thread_concurrency=8
table_open_cache=5120
max_connections=300
open_files_limit=16384
long_query_time=30
query_cache_limit=6M
max_allowed_packet=64M
query_prealloc_size=262144
query_alloc_block_size=65536
e agora esta:
[mysqld]
innodb_file_per_table=1
default-storage-engine=MyISAM
key_buffer_size=5G
max_allowed_packet=12M
sort_buffer_size=16m
read_buffer_size=16M
read_rnd_buffer_size=2147483647
myisam_sort_buffer_size=16G
thread_cache_size=32
thread_concurrency=8
table_open_cache=524288
max_connections=500
open_files_limit=16384
long_query_time=30
max_allowed_packet=64M
query_prealloc_size=262144
query_alloc_block_size=65536
join_buffer_size=2M
tmp_table_size=128M
max_heap_table_size=128M
wait_timeout=86400
interactive_timeout=86400
myisam_use_mmap=1
query_cache_type=1
query_cache_size=512M
query_cache_limit=3M
1º Conclusão que eu tive: Eu li vários tópicos forums, manual do mysql e por isso eu conclui que o problema pode ser que chega a um limite a conexão e ela fecha e abre e o tempo de fechamento e abertura é de cerca de 15 sec e o limite chega em +-15minutos INDEPENDENTE da quantidade de jogador, se o servidor de minecraft tiver apenas 1 jogador colocando blocos e se ele colocar em um período que é de +-15 minutos o servidor de minecraft (porque a cada +-15 min o banco parece fechar e abrir ao mesmo tempo) irá travar.
2º Conclusão: As configurações do meu mysql são absurdas hehehe, agora eu alterei para isso mas o problema ainda persiste :(
[mysqld]
innodb_file_per_table=1
default-storage-engine=MyISAM
wait_timeout=86400
interactive_timeout=86400
key_buffer_size=5G
sort_buffer=1M
join_buffer=1M
max_join_size=2M
max_heap_table_size=128M
tmp_table_size=2G
query_cache_limit=1M
query_cache_size=512M
max_connections=500
max_user_connections=50
innodb_buffer_pool_size=128M
innodb_thread_concurrency=4
Eu gostaria de saber se essa suposição que eu tive de a cada +- 15 minutos o banco fecha e abre é verdade e se possível como que eu posso corrigi-la(observação: o meu servidor de minecraft faz cerca de 150 Queries/segundo no banco MYSQL, eu não sei se isso é alguma informações útil).
Eu não sei muito sobre mysql, o pouco que eu sei foi o que eu li de sites de discussão e do manual do MYSQL.