Pavel Trukhanov. Seguimiento de Postgres por USE y RED. Descifrado con PGConf.Russia

Pavel Trukhanov, "Monitoreo de Postgres por USE y RED"



Hay dos metodologías de monitoreo del desempeño: USE (Utilización, Saturación, Errores) de Brendan Gregg y RED (Solicitudes, Errores, Duraciones) de Tom Wilkie. En mi charla, quiero hablar sobre cómo nos enfocamos en ellos y continuamos navegando cuando implementamos el monitoreo de Postgres en okmeter.io.





. Okmeter. , , Postgres , . , , , , , USE RED , Postgres.





, . , .





, , , , . - . performance - , , , , .





, , , Postgres – , , . , - , , , . - , . - , , .





USE. , . , , . , , saturation , .





, ? , pg_stat_activity . ? , . , - , . , , . - , - , , .





? «», CPU Usage, , iostat – . , . , , . , , . .





, , , Postgres. , Postgres . . , , . Data Egret. , .





- ?





. . , Postgres , connection connection .





. . , . – - . , , . , , , .



: « ?». , SpinLock - , , , . CPU usage , .



– . , , , , - , , , , - .



? , capacity. 100 %, , , . .



. , . , . . , . , . . .



. - , capacity. , capacity ? . . saturation, . , . , .



Postgres.





pg_stat_activity. - . , . . : 300 connection . , - . , , - .





, . , , . - , , capacity , . . , Postgres max connections.





, state connection, , , idle, . . connection , . - idle in transaction. , , . active, - .





, , . , . ? . , - , . – pool connections, – , , , , . – , . - : locks - .





, , , .





- , , active 5 % connections. 95 % . . , .





, . , connections .



?





, . ? 100 connections, max connections , setting’, . , . , 100 %. , – . - . , . - , - .





saturation, util ? Saturation , utilization 100 % . , , , utilization 100? , .



, , CPU usage , load avarage . , 100 %, saturation . Load avarage — saturation, - . runnable , . . , , , .



, CPU usage . ? . load avarage. Load avarage , . , - . . response .





. - – idle in transaction.





. . - , . saturation .





idle. max connections, . , . -.





, select’ pg_stat_activity connections, waiting try. . . active state, - , -. waiting.



, . utilization connection pool 100 %.





, .





waiting ? . , - saturation , . . stack Postgres, , - - . .





– locks. , lock. , locks - , , connections. , locks.





. . . - lock , .





lock – space , – . , , lock . , , connections, locks, — saturation lock.





Postgres , connection . TCP-. TCP-. Post master . , , , «reset». time wait .



? , connections .





connections .





, connection pool . , , , , . ? - . ? -, . connections 5 000. Postgres . ? - connections. , , .





TCP . time wait, , - Postgres - , .





, connect? postmaster , connections backlog list . , search, backlog 100. . 100 %. – , - – saturation. – .





, backlog , reset.





, . Postgres , TCP «».





RED, USE? DBA, , , , - . , - . - , . . , Postgres .





RED, , , , :



  • ,
  • ,
  • .




Postgres. , . , - . . - , .





rollbacks, , 6 , , , , , search , . . , - .



, RED . , . ? , . , , . , .





queries . - - . 8 , .





, - . . select , .





. , - , . . - . . - . , . . . : « , », , .





, . pg_stat_statements , . . , , . . , . – . . , , - , , . .





slow log. Slow log – durations . , . . , , - , .





, . , - , .





. , - . . , , . – , .





. - .





, , - . - , .





, . , . , , . .





, . USE, RED, ad-hoc , ad-hoc tools - , , , , .



.





Postgres, USE, RED ? . . .



Okmeter, . , - , . , , , , . , - , USE, RED. , . , , , saturation . , , , saturation . , . , - . , , , . , , .



! ! , 4- .



4 – USE RED. , USE, durations. errors . RED , requests durations. - , USE RED . . . - . , , .



– instance.



, ? – . – , requests . .



, !



! . – , - , , . , , . .? . . ?



, . , . , . . , , , , , USE . , , , , , selects, , , requests . , requests .



, , , , ?



. , . , , . , . . , . . . , . - , , . . , queries . - . , .



, , Postgres . , . , .



! , instance Postgres - . , ? , BD .



. – . , , , , , . , , - . , . .



La segunda forma en que luchamos es la optimización. Optimizamos lo que hacemos. Efectivamente, Okmeter realiza solicitudes a estas vistas con regularidad, pero muy raramente, una vez por minuto.



Es decir, ¿no es tiempo real?



Es una pregunta difícil, qué es el tiempo real. Analicemos esto por separado. Pero la carga está limitada por la cantidad de solicitudes que realice. Estas solicitudes no son muy pesadas en absoluto. Hay varias docenas de ellos. E incluso si los hace en un sentido más tiempo real que una vez por minuto, esta carga sigue siendo bastante limitada. A continuación, se muestra un ejemplo de cuántas consultas se envían a la base de datos. Hay varios miles de ellos. En consecuencia, incluso si estas varias docenas son encuestadas una vez por segundo, sigue siendo una fracción.



¡Gracias!




All Articles