Nossos servidores web escrevem algumas informações de rastreamento em um banco de dados MySQL (usando INSERT DELAYED na tabela MyISAM). Quando uma grande consulta SELECT é executada nesta tabela ou quando está bloqueada por outro motivo, o servidor Web processa (com INSERT DELAYED) aguardando o banco de dados e, em alguns casos, o limite MaxServer é atingido no Apaches, portanto eles deixarão de atender solicitações .
Usamos INSERT DELAYED porque
The DELAYED option for the INSERT statement is a MySQL extension to standard SQL that is very useful if you have clients that cannot or need not wait for the INSERT to complete. This is a common situation when you use MySQL for logging and you also periodically run SELECT and UPDATE statements that take a long time to complete.
Cite a documentação do MySQL .
Estou me perguntando por que os processos do Apache estão aguardando a conclusão do INSERT DELAYED. E o que posso fazer para apenas enviar os dados e esquecê-los. (Como isso é o registro de dados, não me importo se perdermos algumas entradas.) Mesmo quando a tabela está bloqueada, o script PHP deve simplesmente continuar e não deve esperar por uma resposta do MySQL.
(Não queremos configurar o mestre-escravo para esta tabela, mas estamos pensando em mover esses dados para algum banco de dados NoSQL. Mas, por enquanto, gostaria de saber por que o INSERT DELAYED não está funcionando como esperado.)