liberar tabelas no estado bloqueado

liberar tabelas no estado bloqueado

Tenho várias tabelas no estado Bloqueado o tempo todo. Um exemplo:

| 14442 | dbtable1 | localhost | dbname | Query   | 1291 | Locked       | SELECT  * FROM table1 WHERE topic_s='hooks-and-variables'                                   |
| 14443 | dbtable1  | localhost |           | Sleep   | 1291 |              |                                                                                                      |
| 14461 | dbtable1 | localhost | dbname | Query   | 1283 | Locked       | SELECT  table3.forum_id, forum_name, forum_slug, table4.topic_id, topic_name, topic_slug |

Quando tenho muitos desses processos, todos os sites começam a gerar erros de conexão com o banco de dados e tenho que reiniciar o servidor MySQL para fazê-los funcionar novamente.

Eu uso o mecanismo MyISAM para meus bancos de dados, CentOS 5.7, WordPress e MySQL 5.1, se for importante.

Eu sei o que você provavelmente sugere: mudar para o InnoDB ou otimizar o código. Infelizmente, está além do meu escopo. Tenho que trabalhar com a configuração que tenho.

Então, a pergunta para você. Como posso liberar essas consultas periodicamente? Tenho certeza de que ajudará pelo menos a evitar a sobrecarga do servidor.

Eu tentei flush_time=300sem sorte. Você precisa do my.cnf aqui ou de outras configurações?

Obrigado a todos.

ATUALIZAÇÃO 1. meu.cnf

[mysqld]
default-character-set=utf8
max_connections=100
set-variable        = long_query_time=10
query_cache_limit   = 32M
query_cache_size    = 128M
query_cache_type    = 1
table_cache=8K
key_buffer_size=100M
thread_cache_size=128
join_buffer_size = 1M
innodb_buffer_pool_size = 100M
join_buffer_size=4M
tmp_table_size=32M
max_heap_table_size=32M
flush_time=200

ATUALIZAÇÃO 2. primeiras consultas na lista de processos antes dos bloqueios

 | Id  | User | Host | db | Command | Time | State  | Info                                                                            
 | 1515 | dbtable1 | localhost | dbname | Query  | 2511 | Sending data | SELECT  table1.forum_id, forum_slug, forum_name, forum_status, group_id, topic_count, forum_ic |
 | 1571 | dbtable1 | localhost | dbname | Query  | 2478 | Sending data | SELECT  table1.forum_id, forum_slug, forum_name, forum_status, group_id, topic_count, forum_ic |

Responder1

Você pode usar pt-killo Percona Toolkit (http://www.percona.com/software/percona-toolkit/) para eliminar consultas que correspondam a um critério especificado. Você pode configurar um cron job para ser executado a cada 300 segundos para pt-kill --busy-time 300eliminar consultas que executam mais de 300 segundos.

informação relacionada