Meu servidor Apache leva muito tempo para processar a solicitação. Eu anexei strace a ele e posso ver os dois atrasos seguintes:
1) Muito crítico (143 segundos para processar)
1335 0.000037 write(16, "5line from strace
1335 0.000328 socket(PF_LOCAL, SOCK_STREAM, 0) = 16
pidof mysqld
15393
lsof -p 15393
mysqld 15393 mysql 12u IPv4 26913133 0t0 TCP *:mysql (LISTEN)
1335 0.000040 poll([{fd=14, events=POLLIN}], 1, 5000) = 0 (Timeout)
1335 5.005295 gettimeofday({1403675502, 686212}, NULL) = 0
INSERT INTO 'br_anonymous_user_tokens' ('dtExpires', 'nmToken', 'dtCreated') VALUES ('2014-08-25', '46e35dc39a41e836b806f48d21621b066ea182a9', '2014-06-25')", 161) = 161
1335 0.000111 read(16, "\t1335 0.000037 write(16, "5line from strace
1335 0.000328 socket(PF_LOCAL, SOCK_STREAM, 0) = 16
pidof mysqld
15393
lsof -p 15393
mysqld 15393 mysql 12u IPv4 26913133 0t0 TCP *:mysql (LISTEN)
1335 0.000040 poll([{fd=14, events=POLLIN}], 1, 5000) = 0 (Timeout)
1335 5.005295 gettimeofday({1403675502, 686212}, NULL) = 0
INSERT INTO 'br_anonymous_user_tokens' ('dtExpires', 'nmToken', 'dtCreated') VALUES ('2014-08-25', '46e35dc39a41e836b806f48d21621b066ea182a9', '2014-06-25')", 161) = 161
1335 0.000111 read(16, "\t%pre%%pre%%pre%42\n%pre%%pre%%pre%", 16384) = 13
1335 143.588134 gettimeofday({1403675497, 653337}, NULL) = 0
%pre%%pre%42\n%pre%%pre%%pre%", 16384) = 13
1335 143.588134 gettimeofday({1403675497, 653337}, NULL) = 0
O descritor de arquivos # 16 parece ser o soquete mysql:
%pre%
E aqui
%pre%
Portanto, parece que o Apache está esperando que o mysql execute a consulta que foi gravada no soquete da linha anterior. Estou certo? Isso significa que eu preciso entender por que o MySQL demora tanto para executar consultas simples?
2) Muito longo
%pre%
Aqui, tentei localizar o descritor de arquivo nº 14 para descobrir de onde vem o tempo limite. Eu usei técnicas descritas aqui , mas nenhuma delas mostrou o descritor em questão. Como posso descobrir de onde vem o tempo limite?