рдУрдбрд┐рд╕реА: рд╡рд╛рд╕реНрддреБрдХрд▓рд╛, рд╡рд┐рдиреНрдпрд╛рд╕, рдирд┐рдЧрд░рд╛рдиреАред рдПрдВрдбреНрд░реЗ рдмреЛрд░реЛрдбрд┐рди

рдореИрдВ рдЖрдВрджреНрд░реЗрдИ рдмреЛрд░реЛрдбрд┐рди "рдУрдбрд┐рд╕реА: рд╡рд╛рд╕реНрддреБрдХрд▓рд╛, рд╡рд┐рдиреНрдпрд╛рд╕, рдирд┐рдЧрд░рд╛рдиреА" рджреНрд╡рд╛рд░рд╛ 2020 рдХреА рд╢реБрд░реБрдЖрдд рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдкреНрд░рддрд┐рд▓реЗрдЦ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд░рдЦрддрд╛ рд╣реВрдВред


рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рд╣рдордиреЗ рдЕрдкрдиреЗ рдЦреАрдВрдЪрдиреЗ рд╡рд╛рд▓реЗ рдХрдиреЗрдХреНрд╢рди рдУрдбрд┐рд╕реА рдХреЗ рд╕рдВрд╕реНрдХрд░рдг 1.0 рдХреЛ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рд╣реИ ред рдпрд╣ рдЕрддреНрдпрдзрд┐рдХ рд▓реЛрдб рдХрд┐рдП рдЧрдП PostgreSQL рдкреНрд░рддрд┐рд╖реНрдард╛рдиреЛрдВ рдХреЗ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИред рдЗрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ, рдореИрдВ рдУрдбрд┐рд╕реА рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдФрд░ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред 1.0rc рдФрд░ 1.0 рдХреЗ рдмреАрдЪ рдХрд╛рдлреА рд▓рдВрдмреЗ рд╕рдВрдХреНрд░рдордг рдореЗрдВ рд╣рд▓ рдХреА рдЧрдИ рд╕рдорд╕реНрдпрд╛рдПрдВ рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрдВрдЧреАред



рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рдореИрдВ рдпрд╛рдВрдбреЗрдХреНрд╕ рдореЗрдВ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдХрд░рддрд╛ рд╣реВрдВред рдФрд░ рдкрд┐рдЫрд▓реЗ рдПрдХ-рдбреЗрдврд╝ рд╕рд╛рд▓ рдореЗрдВ рдореИрдВ рдХрдиреЗрдХреНрд╢рди рдкреНрд░рдмрдВрдзрди рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд░рд╛рд╕реНрддреЗ рдореЗрдВ рд╣реИред рд░реВрд╕реА рдореЗрдВ рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ "рдУрдбрд┐рд╕реАред"



Connection pooler. . , . connection pooler . . тАУ , . , connection pooler , . Connection pooler . , .



Postgres . , Postgres ., - PostrgresтАЩ. . . .


., Postgres. , , , 1 .


. , Postgres. , , Odyssey .



? , . Postgres , , тАУ , .


, .



, Postgres . . - . , procArray.



  • , , Application-side pooling.
  • тАУ Proxy pooler.
  • -, , pooler.
  • , .


Application-side pooling тАУ , , .



, , instances , .



, . , , .


, , .



instance Postgres. , . , . , - тАУ .


Application-side pooling . , ?



pooler, . .


Pgpool II. , . . . - , , .


Crunchy-Proxy. Crunchy Data Proxy pooler. Go, - .


PgBouncer. pooler , pooling. . , , .


- PgBouncer.



.


PgBouncer . PgBouncer , . . , - , , , : , , . , PgBouncer .


, , , , Bouncer .



, , PgBouncer . . CPU 97 % . , , Bouncer .



, . , PgBouncer PgBouncer. PgBouncer, . reuseport. .



PgBouncer, Bouncer, - .


PgBouncer, connection pool PgBouncer. , .


- PgBouncer, , c PgBouncer - .


PgBouncer TLS-. TLS- тАУ , , . . . , , . TLS handshake . PgBouncer, , TLS , . , . . , , .



, , , Odyssey тАУ , PgBouncer .


- , PgBouncer , . . pull request. . . , PgBouncer .


Odyssey PgBouncer . .



connection pooler, Odyssey.



Odyssey . Odyssey. Kiwi, Machinarium.



Kiwi Postgres. Postgres Proto3. Kiwi , , . libpq Postgres, , . connection pooler PostgresтАЩ .



Machinarium тАУ , .


Machinarium . тАУ , , thread . . тАУ , . , , .


, . Machinarium. тАУ , , , . sleep. , csw_worker MashinariumтАЩ, - 0 .


Machinarium - , .


, , PgBouncer. PgBouncer libevent, Machinarium тАУ libevent, connection pooling, .



Odyssey . main-, . . main-, , . . TCP-, , . - , , , .


, router, wait_read sleep, , . -. . , . . . . , , , , , . , , . , .


, , , , PgBouncer PgBouncer. . . , show stats, show clients, show pulls .



Odyssey production instances Postgres. . , PgBouncer, , . PgBouncer .



, . Odyssey production- , Postgres profession Odyssey. , production , . . , , .



. Odyssey, Odyssey TLS-. TLS- . .


Odyssey , , . connection pooler , , TLS-, , connection pooler, , TLS-.


, , .



, , , 20 000-30 000 TLS-, pooler TLS- . TLS handshake . - TLS handshake, , 3 30 000 TLS handshake, .


accept , . . , -, , , handshake -.



, , , Postgres , GSSAPI.


, Postgres , -, TLS-, GSSAPI.


PSQL GSSAPI. PgBouncer, Odyssey 12 Postgres . , , . .



Pooler , GSSAPI, , . TLS-.


Odyssey . 1.0 storages, , storage . . , . , walsender, : ┬л ?┬╗. : ┬л, basebackup┬╗ ┬л, , walsender ┬╗.


, break inEnhaced. 1.1, , , , , . . . , . , .



тАУ connection pooler. Connection pooler . . poolerтАЩ , 1 000 .


Odyssey , , 1 000 , 1 000 , . , . PgBouncer , , OLTP-. pooler , .


, , . , , , , 4- . , PgBouncer, .



, тАУ ML. PgBouncer, Odyssey тАУ . , . .


pooler , . - . . ML-, . , .



, , . , , , .


, , , . , connection pooler, . , Python - . , , . .


PgBouncer , тАУ , . TLS handshake, 15 , PgBouncer . . , 1.0. , , .



client_max_routing TLS handshakes. , TLS-.



, , .



Odyssey , , TLS-. listen.


Odyssey тАУ , . , , .


Listen , .



Storage тАУ . , remote, local. Local тАУ , . . , PgBouncer PgBouncer.



, тАУ database user, , . , , . .


, Postgres тАУ client_fwd_error. ┬лno┬╗, Bouncer. . . - , , Bouncer. ┬лyes┬╗, , Postgres.


Pool_cancel pool_rollback тАУ , , , , cancel .


Application_name_add_host тАУ Bouncer, , ip- application_name .


, , quantiles quantiles .



? Bouncer . , . 10 % , , , - . 10 % .


тАУ , . 0,99 , 99 % 1,273 . , - , - - , - cron-. . , , тАУ .



Odyssey. PgBouncer.


Utilization тАУ Odyssey. 4 , , Odyssey 4- . 400 %, , , .


Saturation Errors тАУ , Odyssey, , . . - , .



Odyssey , online restart. PgBouncer PgBouncer тАУ PgBouncer. , , Odyssey .


reload Odyssey , , Odyssey , . , reload , restart , .


Odyssey , , тАУ IPv4 IPv6 - PgBouncer Odyssey PgBouncer , Odyssey IPv6. , , IPv4 , . , , . , IPv4 , , .



Odyssey Open Source . . . , PgBouncer source-port, , - , . - , .


, SCRAM .


merge pause resume. , . . , . - pooler. , . , 11 12, 13 Postgres.




! . . Odyssey? . . hba , Postgres pg_hba.conf . .? GitHub , , .


, .


ip, hostname . ., . . , .


iptables .


, iptables тАУ , . Odyssey тАУ Bouncer, , , pg_hba .


. Issue GitHub.


, .


-. , .


, !


! metrics endpoint, Prometheus .


, Prometheus. , . : , . , , . тАУ , . . Prometheus - , ? .


, Prometheus - , , , . endpoints metrics , PrometheusтАЩ. , , .


?


Zabbix . , , , , Bouncer , . endpoint .


. . Odyssey http-?


-, . , Bouncer.


. .


?


тАУ , . .


. - Prometheus, , , , ?


тАУ Odyssey , - , , , . , , . - ? , .


. тАУ , . , . . . - , , . , , . , .


, , ┬лconnection pooler┬╗. - . , . .


, .


, .


, . , , , , , , . , pooler, . , . ? 2 . pooler? , pooler .


.


.


! . , - Prometheus, . , , - , , Prometheus, Cloudwatch, , ?


Odyssey?


call Odyssey. , . , , , . , , .


show stats. ?


- , .


, exporter Prometheus.


exporter ?


Exporter, .


. . , Postgres Odyssey : ┬л ?┬╗. Odyssey , . exporter - http . , Odyssey. Postgres CentOS . , . Exporter тАУ . . , , C, - , , Go. . ?


! ? ?


? , . . open source. , . -, . GitHub. . , .


, ?


GCC Clang.


. ?


C99.


, - ? ? , ?


20 000 . 10 000 тАУ . . . - , , , , , - .


? 500 MB , - , - . , , .


10 000 , ?


, , . . . 10 000 , тАУ ? . . TLS handshake тАУ 100 . 100 , 10 . . 10 , 100 . , - . 100 тАУ . 10 . TLS handshake тАУ .


Odyssey.conf max clients. ? , instance Odyssey per_worker? ? . . user1 , , 50 Odyssey, user2 , , 100. ?


, . . , TLS handshake, , . . . , . TLS - , , . max clients тАУ . , .


max clients 20 000 20 000 TCP . 20 001- , : ┬л┬╗ TLS handshake. pool size. pool size ┬л1┬╗, , , , , - . , 5300: too many clients for this pool, . . sorry, .


. . wait - pool size?


Database. database user. user pool size. Postgres. Postgres : ┬лtoo many clients┬╗. Odyssey . , round trip postmaster. Postmaster , . , , pool size. pool size.


! . Bouncer : MD5 hash. , MD5 hash?


.


. . ?


, . . include .


, ?


, . Storage , listen , . . GitHub : ┬л , . . - , ┬╗. , . , - . , , . .


All Articles