Pavel Trukhanov. Suivi Postgres par USE et RED. Décryptage avec PGConf.Russia

Pavel Trukhanov, "Monitoring Postgres by USE and RED"



Il existe deux méthodologies de suivi des performances: USE (utilisation, saturation, erreurs) par Brendan Gregg et RED (requêtes, erreurs, durées) par Tom Wilkie. Dans la conférence, je veux parler de la façon dont nous avons été guidés par eux et que nous continuons à être guidés lorsque nous implémentons la surveillance Postgres dans 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 deuxième façon de lutter est l'optimisation. Nous optimisons ce que nous faisons. Effectivement, Okmeter fait des demandes à ces vues régulièrement, mais assez rarement, une fois par minute.



Autrement dit, ce n'est pas le temps réel?



C'est une question difficile, qu'est-ce que le temps réel. Discutons-en séparément. Mais la charge est limitée par le nombre de demandes que vous faites. Ces demandes ne sont pas du tout très lourdes. Il y en a plusieurs dizaines. Et même si vous les faites en un sens plus en temps réel qu'une fois par minute, cette charge est encore assez limitée. Voici un exemple du nombre de requêtes envoyées à la base de données. Il y en a plusieurs milliers. En conséquence, même si ces plusieurs dizaines sont interrogées une fois par seconde, c'est encore une fraction.



Je l'ai Merci!




All Articles