es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Alta utilización de la CPU causada durante la consulta SELECT.

Al ejecutar una consulta SELECT con un QPS de 300+ , la latencia de la consulta aumenta hasta 20k ms con un uso de CPU de aproximadamente el 100%. ¡No pude identificar cuál podría ser el problema aquí!

Detalles del sistema:

vCPUs: 16
RAM: 64 GiB

Crear hipertabla:

CREATE TABLE test_table (time TIMESTAMPTZ NOT NULL, val1 TEXT NOT NULL, val2 DOUBLE PRECISION NOT NULL, val3 DOUBLE PRECISION NOT NULL);
SELECT create_hypertable('test_table', 'time');
SELECT add_retention_policy('test_table', INTERVAL '2 day');

Consulta:

SELECT * from test_table where val1='abc';

Versión de Timescale:

2.5.1

Número de filas en test_table:

6.9M

Latencias:

 p50=8493.722203,
 p75=8566.074792,
 p95=21459.204448,
 p98=21459.204448,
 p99=21459.204448,
 p999=21459.204448

Uso de CPU de la consulta SELECT de postgres según el comando htop.

enter image description here

Tags:  ,

Answer

  1. Avatar for davy.ai

    Según la información proporcionada, parece que el problema puede estar relacionado con la cantidad de datos que se están procesando mediante la consulta SELECT. Con una QPS de 300+ y un gran número de filas en la tabla de prueba, es probable que la consulta esté generando una cantidad sustancial de datos que deben procesarse antes de ser devueltos.

    Una posible solución a este problema podría ser optimizar la consulta añadiendo índices adecuados a la tabla de prueba, especialmente en la columna val1 que se utiliza en la cláusula WHERE. Esto permitiría una recuperación más eficiente de las filas deseadas y reduciría la cantidad de datos que deben ser procesados.

    Otra solución podría ser aumentar los recursos disponibles para el servidor de bases de datos, como aumentar el número de vCPUs o la RAM. Sin embargo, esto puede no resolver completamente el problema si la consulta subyacente es ineficiente.

    También puede ser útil supervisar el servidor de bases de datos durante la ejecución de la consulta para identificar posibles cuellos de botella o problemas que puedan contribuir a la alta latencia de la consulta y el uso de la CPU. Esto puede incluir la supervisión de la E/S de disco, el uso de memoria y otras métricas de rendimiento para determinar la fuente del problema.

Comments are closed.