Pregunta Consultas de tiempo en Redis-Cli?


Esto parece que debería ser trivial, pero quiero ejecutar una consulta a través de redis-cli, y luego volver a ver cuánto tiempo tomó el servidor, junto con los resultados. Esto es solo para fines de depuración, para resolver problemas con la biblioteca o latencia de mi cliente. ¿Hay alguna forma de hacer esto?


5
2017-08-08 19:11


origen


Respuestas:


Puede hacer esto envolviendo el comando redis que está investigando en un MULTI/EXEC bloque, donde el TIME el comando se usa a la derecha antes de y derecho después tu comando Por ejemplo:

Usando la biblioteca de nodos:

var multi = redis.multi();
multi.time(); // start time
multi.sunionstore(['fast_food_joints', 'pizza_hut', 'taco_bell']); // this is the command I'm investigating
multi.time(); // end time
multi.exec(function(err, responses){
    var response = responses[1]; // the response i care about
    var start = (parseInt(responses[0][0]) * 1000) + (parseInt(responses[0][1]) / 1000);
    var end   = (parseInt(responses[2][0]) * 1000) + (parseInt(responses[2][1]) / 1000);            
    var execution_time = end - start; // in milliseconds
});

O ... usando la línea de comando (que es lo que pidió en su pregunta):

192.168.1.1:6379> MULTI
OK
192.168.1.1:6379> TIME
QUEUED
192.168.1.1:6379> SUNIONSTORE fast_food_joints pizza_hut taco_bell
QUEUED
192.168.1.1:6379> TIME
QUEUED
192.168.1.1:6379> EXEC
1) 1) "1450818240"
   2) "666636"
2) (integer) 48886
3) 1) "1450818240"
   2) "666639"

Y luego haz las matemáticas tú mismo. El ejemplo anterior tomó 3 microsegundos.


8
2017-12-22 21:20



Puede configurar el registro lento en 0 (cero). Si lo hace, se registrará cada comando.

El tiempo que verá será en microsegundos, y de la documentación esta vez significa:

El tiempo de ejecución no incluye las operaciones de E / S como hablar   con el cliente, enviando la respuesta y así sucesivamente, pero justo el momento   necesario para ejecutar realmente el comando (esta es la única etapa de   ejecución del comando donde el hilo está bloqueado y no puede servir a otro   peticiones mientras tanto)

Para tener en cuenta el rendimiento de la red, es posible que tenga que piratear la biblioteca de su cliente, iniciando sesión justo antes y después de la comunicación con redis, omitiendo cualquier transformación que pueda hacer su biblioteca.


0
2017-08-13 14:59