Andrey Borodin æ°ã®è¬æŒã§ã¯ãæ¥ç¶ããŒã©ãŒãèšèšããéã« PgBouncer ã®ã¹ã±ãŒãªã³ã°ã®çµéšãã©ã®ããã«èæ
®ãããã«ã€ããŠèª¬æããŸãã
ãããªïŒ
ããã«ã¡ã¯ãã¿ããªïŒ ç§ã®ååã¯ã¢ã³ããªã¥ãŒã§ãã
Yandex ã§ã¯ããªãŒãã³ãœãŒã¹ ããŒã¿ããŒã¹ãéçºããŠããŸãã ãããŠä»æ¥ã¯ãæ¥ç¶ããŒã©ãŒæ¥ç¶ã«é¢ãããããã¯ããããŸãã
ãã·ã¢èªã§æ¥ç¶ããŒã©ãŒãåŒã³åºãæ¹æ³ãç¥ã£ãŠããå Žåã¯ãæããŠãã ããã æè¡æç®ã«å®çãã¹ãé©åãªå°éçšèªãæ¢ããããšæã£ãŠããŸãã
å€ãã®ããŒã¿ããŒã¹ã«ã¯æ¥ç¶ããŒã©ãŒãçµã¿èŸŒãŸããŠãããããã«ã€ããŠç¥ãå¿ èŠãããªãããããã®ãããã¯ã¯éåžžã«è€éã§ãã ãã¡ãããäžéšã®èšå®ã¯ã©ãã«ã§ããããŸãããPostgres ã§ã¯ããã¯æ©èœããŸããã ãããŠäžŠè¡ã㊠(HighLoad++ 2019 ã§)ãPostgres ã§ã®ã¯ãšãªã®èšå®ã«é¢ãã Nikolai Samokhvalov ã«ããã¬ããŒãããããŸãã ãããŠããã§ã«ãªã¯ãšã¹ããå®ç§ã«æ§æããŠãã人ã ãããã«æ¥ãŠããããããã¯ãŒã¯ããªãœãŒã¹äœ¿çšçã«é¢é£ãããŸããªã·ã¹ãã åé¡ã«çŽé¢ããŠãã人ã ã§ããããšãç§ã¯ç解ããŠããŸãã ãŸããå Žæã«ãã£ãŠã¯ãåé¡ãæããã§ã¯ãªããšããæå³ã§ãéåžžã«å°é£ãªå ŽåããããŸãã
Yandex ã«ã¯ Postgres ãæèŒãããŠããŸãã å€ãã® Yandex ãµãŒãã¹ã¯ Yandex.Cloud ã«ååšããŸãã ãŸããPostgres ã«ã¯ XNUMX ç§ãããå°ãªããšã XNUMX äžä»¶ã®ãªã¯ãšã¹ããçæããæ°ãã¿ãã€ãã®ããŒã¿ããããŸãã
ãããŠããã¹ãŠã®ãµãŒãã¹ã«å¯ŸããŠéåžžã«å žåçãªã¯ã©ã¹ã¿ãŒãæäŸããŸããããã¯ãããŒãã®ã¡ã€ã³ã®ãã©ã€ã㪠ããŒããéåžžã® XNUMX ã€ã®ã¬ããªã« (åæããã³éåæ)ãããã¯ã¢ãããã¬ããªã«äžã®èªã¿åããªã¯ãšã¹ãã®ã¹ã±ãŒãªã³ã°ã§ãã
åã¯ã©ã¹ã¿ãŒ ããŒã㯠Postgres ã§ãããPostgres ãšç£èŠã·ã¹ãã ã«å ããŠãæ¥ç¶ããŒã©ãŒãã€ã³ã¹ããŒã«ãããŸãã æ¥ç¶ããŒã©ãŒã¯ããã§ã³ã·ã³ã°ãšãã®äž»ãªç®çã«äœ¿çšãããŸãã
æ¥ç¶ããŒã©ãŒã®äž»ãªç®çã¯äœã§ãã?
Postgres ã¯ãããŒã¿ããŒã¹ãæäœããããã«ããã»ã¹ ã¢ãã«ãæ¡çšããŠããŸãã ããã¯ãXNUMX ã€ã®æ¥ç¶ã XNUMX ã€ã®ããã»ã¹ãXNUMX ã€ã® Postgres ããã¯ãšã³ãã§ããããšãæå³ããŸãã ãŸãããã®ããã¯ãšã³ãã«ã¯ããŸããŸãªãã£ãã·ã¥ãå€æ°ãããæ¥ç¶ããšã«ç°ãªããã£ãã·ã¥ãäœæããã«ã¯éåžžã«ã³ã¹ããããããŸãã
ãŸããPostgres ã³ãŒãã«ã¯ procArray ãšåŒã°ããé åããããŸãã ãããã¯ãŒã¯æ¥ç¶ã«é¢ããåºæ¬çãªããŒã¿ãå«ãŸããŠããŸãã ãŸããã»ãŒãã¹ãŠã® procArray åŠçã¢ã«ãŽãªãºã ã¯ç·åœ¢ã®è€éããæã£ãŠããããããã¯ãŒã¯æ¥ç¶ã®é åå šäœãéããŠå®è¡ãããŸãã ããã¯éåžžã«éããµã€ã¯ã«ã§ãããåä¿¡ãããã¯ãŒã¯æ¥ç¶ãå¢ãããšãã³ã¹ããå°ãé«ããªããŸãã ããã«ãå°ãé«äŸ¡ã«ãªããšãå€æ°ã®ãããã¯ãŒã¯æ¥ç¶ã«å¯ŸããŠéåžžã«é«ãæéãæ¯æãããšã«ãªããŸãã
èããããã¢ãããŒã㯠3 ã€ãããŸãã
- ã¢ããªã±ãŒã·ã§ã³åŽã
- ããŒã¿ããŒã¹åŽã
- ãããŠããã®éãã€ãŸããã¹ãŠã®å¯èœãªçµã¿åããã
æ®å¿µãªãããçµã¿èŸŒã¿ã®ããŒã©ãŒã¯çŸåšéçºäžã§ãã PostgreSQL Professional ã®å人ãã¡ã¯äž»ã«ãããè¡ã£ãŠããŸãã ããããã€çŸããããäºæž¬ããããšã¯å°é£ã§ãã ãããŠå®éã建ç¯å®¶ã®éžæã«ã¯ XNUMX ã€ã®è§£æ±ºçããããŸãã ãããã¯ãã¢ããªã±ãŒã·ã§ã³åŽããŒã«ãšãããã· ããŒã«ã§ãã
ã¢ããªã±ãŒã·ã§ã³åŽã®ããŒã«ãæãç°¡åãªæ¹æ³ã§ãã ãããŠãã»ãšãã©ãã¹ãŠã®ã¯ã©ã€ã¢ã³ã ãã©ã€ããŒã¯ãã³ãŒãå ã§æ°çŸäžã®æ¥ç¶ãããŒã¿ããŒã¹ãžã®æ°åã®æ¥ç¶ãšããŠè¡šçŸããæ¹æ³ãæäŸããŸãã
ããæç¹ã§ããã¯ãšã³ããæ¡åŒµãããããå€ãã®ä»®æ³ãã·ã³ã«ãããã€ããå¿ èŠããããšããäºå®ã«ã¯åé¡ããããŸãã
ãã®åŸããããã«ããã€ãã®ã¢ãã€ã©ããªã㣠ãŸãŒã³ãè€æ°ã®ããŒã¿ ã»ã³ã¿ãŒãããããšã«æ°ä»ããŸãã ãããŠãã¯ã©ã€ã¢ã³ãåŽã®ããŒãªã³ã°ã¢ãããŒãã¯å€§ããªæ°åã«ã€ãªãããŸãã 倧ãããã®ã§ã¯çŽ 10 æ¥ç¶ã«ãªããŸãã ããã¯ããŸãæ©èœãããšããžã§ãã
ãããã· ããŒã©ãŒã«ã€ããŠè©±ãå Žåãå€ãã®ããšãå®è¡ã§ãã XNUMX ã€ã®ããŒã©ãŒããããŸãã 圌ãã¯åãªãè³é調éè
ã§ã¯ãããŸããã ãããã¯ããŒã©ãŒ + ããåªããæ©èœã§ãã ãã
ããããæ®å¿µãªããã誰ãããã®è¿œå æ©èœãå¿ èŠãšããããã§ã¯ãããŸããã ãããŠãããã¯ããŒã©ãŒãã»ãã·ã§ã³ ããŒãªã³ã°ã®ã¿ãã€ãŸãããŒã¿ããŒã¹ãžã® XNUMX ã€ã®åä¿¡ã¯ã©ã€ã¢ã³ããš XNUMX ã€ã®éä¿¡ã¯ã©ã€ã¢ã³ãã®ã¿ããµããŒããããšããäºå®ã«ã€ãªãããŸãã
ããã¯ç§ãã¡ã®ã¿ã¹ã¯ã«ã¯ããŸãé©ããŠããªãããããã©ã³ã¶ã¯ã·ã§ã³ ããŒãªã³ã°ãå®è£ ãã PgBouncer ã䜿çšããŸããã€ãŸãããµãŒããŒæ¥ç¶ã¯ãã©ã³ã¶ã¯ã·ã§ã³æéäžã®ã¿ã¯ã©ã€ã¢ã³ãæ¥ç¶ã«ããããããŸãã
ãããŠç§ãã¡ã®è² è·ã«é¢ããŠã¯ãããã¯æ¬åœã§ãã ããããããã€ãåé¡ããããŸã.
ãã¹ãŠã®åä¿¡æ¥ç¶ã¯ããŒã«ã«ã§ãããããã»ãã·ã§ã³ã蚺æãããšãã«åé¡ãçºçããŸãã å šå¡ãã«ãŒãããã¯ã§æ¥ãŠãããã©ããããããã»ãã·ã§ã³ã远跡ããã®ãå°é£ã«ãªããŸãã
ãã¡ãããapplication_name_add_host ã䜿çšããããšãã§ããŸãã ããã¯ãIP ã¢ãã¬ã¹ã application_name ã«è¿œå ããããŠã³ãµãŒåŽã®æ¹æ³ã§ãã ãã ããapplication_name ã¯è¿œå ã®æ¥ç¶ã«ãã£ãŠèšå®ãããŸãã
ãã®ã°ã©ãã§ã¯ãé»è²ã®ç·ãå®éã®ãªã¯ãšã¹ãã§ãããéã®ç·ãããŒã¿ããŒã¹ã«é£ã³èŸŒããªã¯ãšã¹ãã§ãã ãããŠããã®éãã¯æ£ç¢ºã«ã¯ application_name ã®èšå®ã§ãããããã¯ãã¬ãŒã¹ã«ã®ã¿å¿ èŠã§ããããŸã£ããç¡æã§ã¯ãããŸããã
ããã«ãBouncer 㯠XNUMX ã€ã®ããŒã«ãã€ãŸããŠãŒã¶ãŒããšãããŒã¿ããŒã¹ããšã®ããŒã¿ããŒã¹æ¥ç¶æ°ãå¶éã§ããŸããã
ããã¯äœãããããã®ã§ãããã? C++ ã§æžãããããŒãããããµãŒãã¹ãšããã®è¿ãã®ããŒãäžã®å°ããªãµãŒãã¹ããããããŒã¹ã«ã¯äœã®åé¡ããããŸãããããã®ãã©ã€ããŒããããããªããŸãã 20 åã®æ¥ç¶ãéãããæ®ãã¯ãã¹ãŠåŸ æ©ããŸãã ã³ãŒããæ£ããã§ãã
ãã¡ããããã®èšå®ãè¿œå ãããã€ãŸãã¯ã©ã€ã¢ã³ããããŒã«ã«å¶éãããBouncer çšã®å°ããªããããäœæããŸããã
ããã Postgres åŽã§è¡ãããšãã€ãŸãããŒã¿ããŒã¹å ã®ããŒã«ãæ¥ç¶æ°ã«å¶éããããšã¯å¯èœã§ãã
ãããããã®åŸããµãŒããŒã«æ¥ç¶ã§ããªãçç±ãç解ã§ããªããªããŸãã PgBouncer ã¯æ¥ç¶ãšã©ãŒãã¹ããŒãããåžžã«åãæ å ±ãè¿ããŸãã ãããŠãããªãã¯ç解ã§ããŸããããã¹ã¯ãŒããå€æŽãããã®ãããããªããããŒã¿ããŒã¹ãããŠã³ããã ããããããªããäœããééã£ãŠããã®ãããããŸããã ãããã蚺æã¯ãããŸããã ã»ãã·ã§ã³ã確ç«ã§ããªãå Žåããªãã»ãã·ã§ã³ã確ç«ã§ããªãã®ãããããŸããã
ããæç¹ã§ãã¢ããªã±ãŒã·ã§ã³ã®ã°ã©ããèŠããšãã¢ããªã±ãŒã·ã§ã³ãåäœããŠããªãããšãããããŸãã
äžéšãèŠããšãBouncer ãã·ã³ã°ã«ã¹ã¬ããã§ããããšãããããŸãã ããã¯ãµãŒãã¹ã®äººçã«ããã転æç¹ã§ãã ããªãã¯ãXNUMX 幎å以å ã«ããŒã¿ããŒã¹ãæ¡åŒµããæºåãããŠãããããŒã©ãŒãæ¡åŒµããå¿ èŠãããããšãç解ããŠããŸãã
ç§ãã¡ã¯ãããã«å€ãã® PgBouncer ãå¿ èŠã§ãããšããçµè«ã«éããŸããã
ããŠã³ãµãŒã«ã¯ãããã«ããããé©çšãããŠããŸãã
ãããŠãTCP ããŒããåå©çšããŠè€æ°ã®ããŠã³ãµãŒãç«ã¡äžããããšãã§ããããã«ããŸããã ãããŠããªãã¬ãŒãã£ã³ã° ã·ã¹ãã ã¯ãã§ã«ãåä¿¡ TCP æ¥ç¶ãã©ãŠã³ãããã³ãªã ã«ãã£ãŠãããã®éã§èªåçã«è»¢éããŸãã
ããã¯ã¯ã©ã€ã¢ã³ãã«å¯ŸããŠééçã§ããã€ãŸããããŠã³ãµãŒã XNUMX ã€ããããã«èŠããŸãããå®è¡äžã®ããŠã³ãµãŒéã§ã¢ã€ãã«ç¶æ ã®æ¥ç¶ãæçåããŠããŸãã
ãããŠããæç¹ã§ãããã 3 人ã®ããŠã³ãµãŒãããããã³ã¢ã 100% é£ã¹ãŠããããšã«æ°ã¥ããããããŸããã ããªãã®æ°ã®çšå¿æ£ãå¿ èŠã§ãã ãªãïŒ
TLSãããããã§ãã æå·åãããæ¥ç¶ããããŸãã ãŸããTLS ã䜿çšããå Žåãšäœ¿çšããªãå Žå㧠Postgres ã®ãã³ãããŒã¯ãè¡ããšãTLS ãã³ãã·ã§ã€ã¯ã CPU ãªãœãŒã¹ãæ¶è²»ãããããæå·åãæå¹ã«ãããšç¢ºç«ãããæ¥ç¶ã®æ°ãã»ãŒ XNUMX æ¡æžå°ããããšãããããŸãã
ãããŠäžéšã«ã¯ãçä¿¡æ¥ç¶ã®æ³¢äžã«å®è¡ãããããªãã®æ°ã®æå·åé¢æ°ã衚瀺ãããŸãã ãã©ã€ããªã¯ã¢ãã€ã©ããªã㣠ãŸãŒã³éã§åãæ¿ããããšãã§ãããããçä¿¡æ¥ç¶ã®æ³¢ã¯éåžžã«äžè¬çãªç¶æ³ã§ãã ã€ãŸããäœããã®çç±ã§å€ããã©ã€ããªãå©çšã§ããªããªããè² è·å šäœãå¥ã®ããŒã¿ ã»ã³ã¿ãŒã«éä¿¡ãããŸããã 圌ãã¯å šå¡åæã« TLS ã«æšæ¶ã«æ¥ãŸãã
ãããŠã倧éã® TLS ãã³ãã·ã§ã€ã¯ã¯ãã§ã«çšå¿æ£ãæè¿ãããåãå§è¿«ãããããããŸããã ã¿ã€ã ã¢ãŠãã«ãããåä¿¡æ¥ç¶ã®æ³¢ãæå¶ãããªããªãå¯èœæ§ããããŸãã ææ°ããã¯ãªããªãã§ããŒã¹ãžã®åè©Šè¡ãããå Žåãã³ããŒã¬ã³ããªæ³¢ã§äœåºŠãæ»ã£ãŠããããšã¯ãããŸããã
以äžã¯ã16 ã³ã¢ã 16% ã§ããŒããã 100 åã® PgBouncer ã®äŸã§ãã
ã«ã¹ã±ãŒã PgBouncer ã«å°çããŸããã ããã¯ãBouncer ããŒãã§éæã§ããæè¯ã®æ§æã§ãã å€éšæ¥ç¶ãå€§å¹ ã«æçåããªãããã«ãå€éšããŠã³ãµãŒã¯ TCP ãã³ãã·ã§ã€ã¯ã«äœ¿çšãããå éšããŠã³ãµãŒã¯å®éã®ããŒãªã³ã°ã«äœ¿çšãããŸãã
ãã®æ§æã§ã¯ããœããåèµ·åãå¯èœã§ãã ããã 18 人ã®ããŠã³ãµãŒããã¹ãŠ XNUMX ã€ãã€åèµ·åã§ããŸãã ãããããã®ãããªæ§æãç¶æããã®ã¯éåžžã«å°é£ã§ãã ã·ã¹ãã 管çè ãDevOpsãããã³ãã®ãµãŒããŒã«å®éã«è²¬ä»»ãè² ã人ã ã¯ããã®ã¹ããŒã ã«ããŸãæºè¶³ããŠããªãã§ãããã
ãã¹ãŠã®æ¹åã¯ãªãŒãã³ãœãŒã¹ã§æšé²ã§ããããã«èŠããŸãããBouncer ã¯ããŸãé©åã«ãµããŒãããŠããŸããã ããšãã°ãåãããŒãã§è€æ°ã® PgBouncer ãå®è¡ããæ©èœã¯ XNUMX ãæåã«ã³ããããããŸããã ãã®æ©èœã«é¢ãããã«ãªã¯ãšã¹ãã¯æ°å¹Žåã«ãããŸããã
ãŸãã¯ããã XNUMX ã€ã®äŸã§ãã Postgres ã§ã¯ãè¿œå ã®èªèšŒãè¡ããã«ã·ãŒã¯ã¬ãããå¥ã®æ¥ç¶ã«éä¿¡ããããšã§ãå®è¡äžã®ãªã¯ãšã¹ãããã£ã³ã»ã«ã§ããŸãã ããããäžéšã®ã¯ã©ã€ã¢ã³ãã¯åçŽã« TCP ãªã»ãããéä¿¡ããŸããã€ãŸãããããã¯ãŒã¯æ¥ç¶ãåæããŸãã ããŠã³ãµãŒã¯ãããã©ãããã®ã§ããããïŒ åœŒã¯äœãããŸããã ãªã¯ãšã¹ãã®å®è¡ã¯ç¶è¡ãããŸãã å°ããªãªã¯ãšã¹ãã§åºç€ãç¯ããèšå€§ãªæ°ã®æ¥ç¶ãåä¿¡ããå ŽåãããŠã³ãµãŒããæ¥ç¶ãåæããã ãã§ã¯ååã§ã¯ãªããããŒã¿ããŒã¹å ã§å®è¡ãããŠãããªã¯ãšã¹ããå®äºããå¿ èŠããããŸãã
ããã¯ããããé©çšãããŸãããããã®åé¡ã¯ãŸã Bouncer ã®ã¢ããã¹ããªãŒã ã«ããŒãžãããŠããŸããã
ããã§ç§ãã¡ã¯ãç¬èªã®æ¥ç¶ããŒã©ãŒãå¿ èŠã§ãããšããçµè«ã«éããŸãããããã¯éçºãããããããé©çšãããåé¡ãããã«ä¿®æ£ã§ããããã«ãªãããã¡ãããã«ãã¹ã¬ããã§ããå¿ èŠããããŸãã
ãã«ãã¹ã¬ãããã¡ã€ã³ã¿ã¹ã¯ãšããŠèšå®ããŸãã çä¿¡ TLS æ¥ç¶ã®æ³¢ãé©åã«åŠçã§ããå¿ èŠããããŸãã
ãããè¡ãã«ã¯ããããã¯ãŒã¯æ¥ç¶ã®ãã·ã³ç¶æ ãã·ãªã¢ã« ã³ãŒããšããŠèšè¿°ããããã«èšèšããããMachinarium ãšåŒã°ããå¥åã®ã©ã€ãã©ãªãéçºããå¿ èŠããããŸããã libpq ãœãŒã¹ ã³ãŒããèŠããšãçµæãè¿ããŠãå°ãåŸã§é»è©±ããŠãã ããã çŸæç¹ã§ã¯ IO ã¯å®è¡ãããŠããŸãããIO ãçµéãããšããã»ããµã«è² è·ãããããŸãã ãããŠãããã¯ãã«ãã¬ãã«ã®ã¹ããŒã ã§ãã ãããã¯ãŒã¯ã®çžäºäœçšã¯éåžžãã¹ããŒã ãã·ã³ã«ãã£ãŠèšè¿°ãããŸãã ã以åã«ãµã€ãº N ã®ãã±ãã ããããŒãåä¿¡ããå Žåãä»åºŠã¯ N ãã€ããåŸ æ©ãããããSYNC ãã±ãããéä¿¡ããå Žåãä»åºŠã¯çµæã¡ã¿ããŒã¿ãå«ããã±ãããåŸ æ©ããããªã©ã®å€ãã®ã«ãŒã«ããããŸãã ããããè¿·è·¯ãã©ã€ã³ã¹ãã£ã³ã«å€æãããã®ãããªãããªãå°é£ã§çŽæã«åããã³ãŒããåŸãããŸãã ã¹ããŒã ãã·ã³ã®ä»£ããã«ãããã°ã©ããéåžžã®åœä»€ã³ãŒãã®åœ¢åŒã§äž»èŠãªå¯Ÿè©±ãã¹ãèšè¿°ããããã«ããŸããã ãã®åœä»€åã³ãŒãã§ã¯ããããã¯ãŒã¯ããã®ããŒã¿ãåŸ æ©ããŠå®è¡ã·ãŒã±ã³ã¹ãäžæããå®è¡ã³ã³ããã¹ããå¥ã®ã³ã«ãŒãã³ (ã°ãªãŒã³ ã¹ã¬ãã) ã«æž¡ãå¿ èŠãããå Žæãæ¿å ¥ããå¿ èŠããããŸãã ãã®ã¢ãããŒãã¯ãè¿·è·¯å ã§æãäºæ³ãããéãé£ç¶ããŠæžãçããŠãããã«åå²ãè¿œå ãããšããäºå®ã«äŒŒãŠããŸãã
ãã®çµæãTCP ã« TPC æ¥ç¶ãåãå ¥ããããã©ãŠã³ãããã³ã§å€ãã®ã¯ãŒã«ãŒã« TPC æ¥ç¶ãæž¡ã XNUMX ã€ã®ã¹ã¬ãããã§ããŸããã
ãã®å Žåãåã¯ã©ã€ã¢ã³ãæ¥ç¶ã¯åžžã« XNUMX ã€ã®ããã»ããµäžã§å®è¡ãããŸãã ããã«ããããã£ãã·ã¥ãã¬ã³ããªãŒã«ããããšãã§ããŸãã
ããã«ãã·ã¹ãã ã® TCP ã¹ã¿ãã¯ããªãããŒãããããã«ãå°ããªãã±ããã XNUMX ã€ã®å€§ããªãã±ããã«åéããæ¹æ³ãè¥å¹²æ¹åãããŸããã
ããã«ãOdyssey ãèšå®ãããŠããå Žåããããã¯ãŒã¯æ¥ç¶é害ãçºçããå Žåã« CANCEL ãš ROLLBACK ãéä¿¡ã§ãããšããæå³ã§ããã©ã³ã¶ã¯ã·ã§ã³ ããŒãªã³ã°ãæ¹åãããŸãããã€ãŸãããªã¯ãšã¹ããåŸ ã£ãŠãã人ãããªãå ŽåãOdyssey ã¯ããŒã¿ããŒã¹ã«ãªã¯ãšã¹ããå®è¡ããªãããã«æ瀺ããŸãã貎éãªãªãœãŒã¹ãç¡é§ã«ããå¯èœæ§ã®ãããªã¯ãšã¹ãã
ãããŠå¯èœãªéããåãã¯ã©ã€ã¢ã³ããžã®æ¥ç¶ãç¶æããŸãã ããã«ãããapplication_name_add_host ãåã€ã³ã¹ããŒã«ããå¿ èŠããªããªããŸãã å¯èœã§ããã°ã蚺æã«å¿ èŠãªãã©ã¡ãŒã¿ãè¿œå ã§ãªã»ããããå¿ èŠã¯ãããŸããã
ç§ãã¡ã¯ Yandex.Cloud ã®å©çã®ããã«æŽ»åããŸãã ãŸãããããŒãžã PostgreSQL ã䜿çšããŠããŠãæ¥ç¶ããŒã©ãŒãã€ã³ã¹ããŒã«ãããŠããå Žåã¯ãè«çã¬ããªã±ãŒã·ã§ã³ã䜿çšããŠãå€éšãžã®è«çã¬ããªã±ãŒã·ã§ã³ãäœæã§ããŸããã€ãŸããå¿ èŠã«å¿ããŠä»»ããŠãã ããã è«çã¬ããªã±ãŒã·ã§ã³ã®ãããŒå€ã®ããŠã³ãµãŒã¯æäŸããŸããã
ããã¯è«çã¬ããªã±ãŒã·ã§ã³ã®èšå®äŸã§ãã
ããã«ãå€éšãžã®ç©çã¬ããªã±ãŒã·ã§ã³ããµããŒãããŠããŸãã ã¯ã©ãŠãã§ã¯ããã¡ããããã¯äžå¯èœã§ãããªããªãããã®å Žåãã¯ã©ã¹ã¿ãŒãããèªäœã«é¢ããæ å ±ãéå°ã«æäŸããŠããŸãããã§ãã ãã ããã€ã³ã¹ããŒã«ç°å¢ã§ãOdyssey ã®æ¥ç¶ããŒã©ãŒãä»ããç©çã¬ããªã±ãŒã·ã§ã³ãå¿ èŠãªå Žåã¯ããããå¯èœã§ãã
Odyssey 㯠PgBouncer ãšå®å šãªäºææ§ã®ããã¢ãã¿ãªã³ã°ãåããŠããŸãã ã»ãŒãã¹ãŠã®åãã³ãã³ããå®è¡ããåãã³ã³ãœãŒã«ããããŸãã äœããäžè¶³ããŠããå Žåã¯ããã« ãªã¯ãšã¹ããéä¿¡ããããå°ãªããšã GitHub äžã§åé¡ãéä¿¡ããŠãã ãããå¿ èŠãªã³ãã³ããå®äºããŸãã ãã ããPgBouncer ã³ã³ãœãŒã«ã®äž»èŠãªæ©èœã¯ãã§ã«çšæãããŠããŸãã
ãã¡ããããšã©ãŒè»¢éããããŸãã ããŒã¹ããå ±åããããšã©ãŒãè¿ããŸãã ããªããåºå°ã«ããªããšããããšã ãã§ãªãããªãåºå°ã«ããªãã®ããšããæ å ±ãåŸãããŸãã
PgBouncer ãšã® 100% ã®äºææ§ãå¿ èŠãªå Žåããã®æ©èœã¯ç¡å¹ã«ãªã£ãŠããŸãã äžãäžã«åããŠãçšå¿æ£ã®ããã«æ¯ãèãããšãã§ããŸãã
éçº
Odyssey ã®ãœãŒã¹ ã³ãŒãã«ã€ããŠå°ã説æããŸãã
ããšãã°ããäžæåæ¢/åéãã³ãã³ãããããŸãã ãããã¯éåžžãããŒã¿ããŒã¹ãæŽæ°ããããã«äœ¿çšãããŸãã Postgres ãã¢ããã°ã¬ãŒãããå¿ èŠãããå Žåã¯ãæ¥ç¶ããŒã©ãŒã§ Postgres ãäžæåæ¢ããpg_upgrade ãå®è¡ããŠããåéããŸãã ãããŠã¯ã©ã€ã¢ã³ãåŽããèŠããšãããŒã¿ããŒã¹ã®é床ãäœäžããŠããããã«èŠããŸãã ãã®æ©èœã¯ã³ãã¥ããã£ã®äººã ã«ãã£ãŠæäŸãããŸããã 圌女ã¯ãŸã æ»ãã§ããŸããããéããªããã¹ãŠãæ»ã¬ã§ãããã ïŒãã§ã«æ»ãã§ïŒ
ããã«ãPgBouncer ã®æ°æ©èœã® XNUMX ã€ã¯ SCRAM èªèšŒãµããŒãã§ããããã Yandex.Cloud ã§åããŠããªã人ã«ãã£ãŠæäŸãããŸããã ã©ã¡ããè€éãªæ©èœã§ãããéèŠã§ãã
ãããã£ãŠãããããã³ãŒããæžããããšæã£ãŠãã人ã®ããã«ãOdyssey ãäœã§ã§ããŠãããã説æããããšæããŸãã
ãªãªãžãã«ã® Odyssey ããŒã¹ãããã3 ã€ã®äž»èŠãªã©ã€ãã©ãªã«äŸåããŠããŸãã Kiwi ã©ã€ãã©ãªã¯ãPostgres ã¡ãã»ãŒãž ãããã³ã«ã®å®è£ ã§ãã ã€ãŸããPostgres ã®ãã€ãã£ã ããã XNUMX ã¯ãããã³ããšã³ããšããã¯ãšã³ãã亀æã§ããæšæºã¡ãã»ãŒãžã§ãã ããã㯠Kiwi ã©ã€ãã©ãªã«å®è£ ãããŠããŸãã
machinarium ã©ã€ãã©ãªã¯ã¹ã¬ããå®è£ ã©ã€ãã©ãªã§ãã ãã®ãã·ããªãŠã ã®å°ããªæçã¯ã¢ã»ã³ãã©ã§æžãããŠããŸãã ãã ããå¿é ããªãã§ãã ãããè¡æ°ã¯ 15 è¡ã ãã§ãã
ãªããã»ã€ã®å»ºç¯ã ã³ã«ãŒãã³ãå®è¡ããã¡ã€ã³ãã·ã³ããããŸãã ãã®ãã·ã³ã¯ãåä¿¡ TCP æ¥ç¶ã®åãå ¥ããšã¯ãŒã«ãŒéã§ã®åæ£ãå®è£ ããŸãã
XNUMX ã€ã®ã¯ãŒã«ãŒå ã§ãè€æ°ã®ã¯ã©ã€ã¢ã³ãã®ãã³ãã©ãŒãåäœã§ããŸãã ãŸããã¡ã€ã³ã¹ã¬ããã§ã¯ãã³ã³ãœãŒã«ãšãããŒã«å ã§äžèŠã«ãªã£ãæ¥ç¶ãåé€ããã¯ããŒã³ ã¿ã¹ã¯ã®åŠçãå転ããŠããŸãã
Odyssey ã¯ãæšæºã® Postgres ãã¹ã ã¹ã€ãŒãã䜿çšããŠãã¹ããããŸãã Bouncer ãš Odyssey ãéã㊠install-check ãå®è¡ããã ãã§ãnull div ãåŸãããŸãã æ¥ä»ã®æžåŒèšå®ã«é¢é£ãããã¹ããããã€ããããBouncer ãš Odyssey ã§ã¯ãŸã£ããåãããã«å€±æããŸãã
ããã«ãç¬èªã®ãã¹ããè¡ã£ãŠãããã©ã€ããŒãå€æ°ããŸãã ãããŠãç§ãã¡ã¯åœŒãã®ãã¹ãã䜿çšã㊠Odyssey ããã¹ãããŸãã
ãŸããã«ã¹ã±ãŒãæ§æã®ãããOdyssey ãã«ã¹ã±ãŒãå ã®ããããã®éšåã«å«ãŸããŠããŠãæåŸ ã©ããã«åäœããããšã確èªããããã«ãPostgres + OdysseyãPgBouncer + OdysseyãOdyssey + Odyssey ãªã©ã®ããŸããŸãªãã³ãã«ããã¹ãããå¿ èŠããããŸãã ã
ããã
æ¬çªç°å¢ã§ã¯ Odyssey ã䜿çšããŠããŸãã ãããŠããã¹ãŠãããŸããããšèšã£ããäžå ¬å¹³ã§ãããã ããããã€ãŸãã¯ãã§ãããåžžã«ãããšã¯éããŸããã ããšãã°ãéçšç°å¢ã§ã¯ãã¹ãŠãæ£åžžã«åäœããŠããŸããããPostgreSQL Professional ã®å人ããã£ãŠæ¥ãŠãã¡ã¢ãª ãªãŒã¯ãçºçããŠãããšèšããŸããã ãããã¯æ¬åœã«ããã§ãããç§ãã¡ã¯ããããä¿®æ£ããŸããã ããããããã¯åçŽã§ããã
次ã«ãæ¥ç¶ããŒã©ãŒã«åä¿¡ TLS æ¥ç¶ãšéä¿¡ TLS æ¥ç¶ãããããšãããããŸããã ãŸããæ¥ç¶ã«ã¯ã¯ã©ã€ã¢ã³ã蚌ææžãšãµãŒããŒèšŒææžãå¿ èŠã§ãã
Bouncer ãš Odyssey ã®ãµãŒããŒèšŒææžã¯ pcache ã«ãã£ãŠåèªã¿åããããŸãããã¹ã±ãŒã©ãã«ãª Odyssey ã¯æçµçã«ãã®èšŒææžã®èªã¿åãã®ã·ã¹ãã ããã©ãŒãã³ã¹ã«äŸåãããããã¯ã©ã€ã¢ã³ã蚌ææžã¯ pcache ããåèªã¿åããããå¿ èŠã¯ãããŸããã 圌ã¯ããã«ã¯äŒãŸãªãã£ãã®ã§ãããã¯ç§ãã¡ã«ãšã£ãŠé©ãã§ããã æåã¯çŽç·çã«æ¡å€§ããŠããŸãããã20 件ã®åææ¥ç¶ãåä¿¡ããåŸããã®åé¡ãé¡åšåããŸããã
Pluggable Authentication Method ã¯ãçµã¿èŸŒã¿ã® Luunux ããŒã«ã䜿çšããŠèªèšŒããæ©èœã§ãã PgBouncer ã§ã¯ãPAM ããã®å¿çãåŸ æ©ããå¥ã®ã¹ã¬ãããååšããçŸåšã®æ¥ç¶ãæäŸã㊠PAM ã¹ã¬ããå ã§åç¶ããããã«èŠæ±ã§ããã¡ã€ã³ã® PgBouncer ã¹ã¬ãããååšããããã«å®è£ ãããŠããŸãã
ãããå®è£ ããªãã£ãçç±ã¯ XNUMX ã€ãããŸãã ããããã®ã¹ããªãŒã ããããŸãã ãªããããå¿ èŠãªã®ã§ãããã?
ãã®çµæãPAM èªèšŒãšé PAM èªèšŒãããå ŽåãPAM èªèšŒã倧èŠæš¡ã«çºçãããšãé PAM èªèšŒãå€§å¹ ã«é 延ããå¯èœæ§ããããšããåé¡ãçºçããå¯èœæ§ããããŸãã ããã¯ç§ãã¡ããŸã ä¿®æ£ããŠããªãåé¡ã® XNUMX ã€ã§ãã ãããããããä¿®æ£ãããå Žåã¯ããããè¡ãããšãã§ããŸãã
ãã XNUMX ã€ã®åé¡ã¯ããã¹ãŠã®åä¿¡æ¥ç¶ãåãå ¥ãã XNUMX ã€ã®ã¹ã¬ããããããšããäºå®ã§ãã ãã®åŸããããã¯ã¯ãŒã«ãŒ ããŒã«ã«è»¢éããããã㧠TLS ãã³ãã·ã§ã€ã¯ãè¡ãããŸãã
ãã®çµæã20 ã®ãããã¯ãŒã¯æ¥ç¶ã®ã³ããŒã¬ã³ããªæ³¢ãããå Žåããããã¯ãã¹ãŠåãå ¥ããããŸãã ãããŠã¯ã©ã€ã¢ã³ãåŽã§ã¯ãlibpq ãã¿ã€ã ã¢ãŠãã®å ±åãéå§ããŸãã ããã©ã«ãã§ã¯ 000 ç§çšåºŠã§ãã
ãã¹ãŠãåæã«ããŒã¹ã«å ¥ãããšãã§ããªãå Žåãããããã¹ãŠã¯éææ°é¢æ°çãªåè©Šè¡ã§ã«ããŒã§ãããããããŒã¹ã«å ¥ãããšãã§ããŸããã
æçµçã« PgBouncer ã¹ããŒã ãããã«ã³ããŒããŠãåãå ¥ãã TCP æ¥ç¶ã®æ°ã調æŽããŸããã
æ¥ç¶ãåãå ¥ããŠãããã®ã®ãæçµçã«ãã³ãã·ã§ã€ã¯ããæéããªãå Žåã¯ãCPU ãªãœãŒã¹ãæ¶è²»ããªãããã«æ¥ç¶ããã¥ãŒã«å ¥ããŸãã ããã«ãããå°çãããã¹ãŠã®æ¥ç¶ã«å¯ŸããŠåæãã³ãã·ã§ã€ã¯ãå®è¡ãããªãå¯èœæ§ããããŸãã ããããããšãè² è·ãååã«åŒ·ãã£ããšããŠããå°ãªããšã誰ããããŒã¿ããŒã¹ã«äŸµå ¥ããã§ãããã
ããŒãããã
ãªããã»ã€ã§å°æ¥ã©ããªããšãèŠãŠã¿ããã§ããïŒ ç§ãã¡ã¯èªåèªèº«ãæé·ãããæºåãã§ããŠããŸããããããŠã³ãã¥ããã£ã«äœãæåŸ ããŠããŸãã?
2019幎XNUMXæåã
XNUMX æã®ãªããã»ã€ã®ããŒããããã¯æ¬¡ã®ãšããã§ãã
- SCRAM ãš PAM èªèšŒãå¿ èŠã§ããã
- èªã¿åããªã¯ãšã¹ããã¹ã¿ã³ãã€ã«è»¢éããããšèããŠããŸããã
- ãªã³ã©ã€ã³åèµ·åããé¡ãããŸãã
- ãããŠãµãŒããŒäžã§äžæåæ¢ããæ©èœã
ãã®ããŒããããã®ååã¯ç§ãã¡ã«ãã£ãŠå®äºãããã®ã§ã¯ãããŸããã ãããŠãããã¯è¯ãããšã§ãã ããã§ã¯ãæ®ã£ãŠãããã®ã«ã€ããŠè©±ãåããããã«è¿œå ããŸãããã
Postgresã§ã¯åå10以éãæ¥ç¶æã«session_attrsãæå®ã§ããããã«ãªããŸããã æ¥ç¶å ã®ãã¹ãŠã®ããŒã¿ããŒã¹ ãã¹ãããªã¹ãããããŒã¿ããŒã¹ã«ã¢ã¯ã»ã¹ããçç± (æžã蟌ã¿å°çšãèªã¿åãå°çšã) ã瀺ãããšãã§ããŸãã ãããŠãã©ã€ããŒèªäœã¯ãsession_attrs ã®èŠä»¶ãæºãããªã¹ãã®æåã®ãã¹ããéžæããŸãã
ãããããã®ã¢ãããŒãã®åé¡ã¯ãã¬ããªã±ãŒã·ã§ã³ã®é 延ãå¶åŸ¡ã§ããªãããšã§ãã ãµãŒãã¹ã蚱容ã§ããªãæéãŸã§é 延ããŠããäœããã®ã¬ããªã«ãããå¯èœæ§ããããŸãã å®éãã¬ããªã«äžã§èªã¿åããªã¯ãšã¹ãããã«æ©èœã§å®è¡ããã«ã¯ãèªã¿åããäžå¯èœãªå Žåã«ã¯åäœããªãæ©èœã Odyssey ã§ãµããŒãããå¿ èŠããããŸãã
Odyssey ã¯ãæã ããŒã¿ããŒã¹ã«ã¢ã¯ã»ã¹ããŠããã©ã€ããªããã®ã¬ããªã±ãŒã·ã§ã³è·é¢ãåãåãããå¿ èŠããããŸãã ãŸããå¶éã«éããå Žåã¯ãæ°ãããªã¯ãšã¹ããããŒã¿ããŒã¹ã«å ¥ãããæ¥ç¶ãåéå§ããå¿ èŠãããããšãã¯ã©ã€ã¢ã³ãã«äŒããå Žåã«ãã£ãŠã¯ãªã¯ãšã¹ããå®è¡ããå¥ã®ãã¹ããéžæããŸãã ããã«ãããããŒã¿ããŒã¹ã¯ã¬ããªã±ãŒã·ã§ã³ ã©ã°ãè¿ éã«å埩ããã¯ãšãªã«å¿çããããã«åã³æ»ãããšãã§ããŸãã
ãªãŒãã³ãœãŒã¹ã§ãããããå®è£ æ¥ãç¹å®ããã®ã¯å°é£ã§ãã ããããPgBouncer ã®ååã®ããã« 2,5 幎åãç¶ããªãããšãé¡ã£ãŠããŸãã ããã¯ãªããã»ã€ã«æ¬²ããæ©èœã§ãã
ãã ããproto3 ã«ã¯ã¡ãã»ãŒãž ãããã³ã« ã¬ãã«ã§æºåãããã¹ããŒãã¡ã³ãããããŸãã ãããŠãããã¯ãæºåãããã¹ããŒãã¡ã³ããäœæãããŠãããšããæ å ±ãæ§é åããã圢åŒã§æäŸãããå Žæã§ãã ãŸãããµãŒããŒæ¥ç¶ã«ãã£ãŠã¯ãã¯ã©ã€ã¢ã³ããããªãã¢ã ã¹ããŒãã¡ã³ãã®äœæãèŠæ±ãããšããç解ããµããŒãã§ããŸãã ãŸãããã©ã³ã¶ã¯ã·ã§ã³ãçµäºããå Žåã§ãããµãŒããŒãšã¯ã©ã€ã¢ã³ãã®æ¥ç¶ãç¶æããå¿ èŠããããŸãã
ããããããã§ãã€ã¢ãã°ã«ççŸãçããŸããã¯ã©ã€ã¢ã³ããã©ã®ããªãã¢ãã¹ããŒãã¡ã³ããäœæããããç解ãããã®ãµãŒããŒæ¥ç¶ãäœæãããã¹ãŠã®ã¯ã©ã€ã¢ã³ãéã§ãµãŒããŒæ¥ç¶ãå ±æããå¿ èŠããããã€ãŸã誰ããã®ãããªããªãã¢ãã¹ããŒãã¡ã³ããäœæããããç解ããå¿ èŠããããšèª°ããèšãããã§ãã
Andres Freund æ°ã¯ãå¥ã®ãµãŒããŒæ¥ç¶ã§ãã®ãããªããªãã¢ã ã¹ããŒãã¡ã³ãããã§ã«äœæããŠããã¯ã©ã€ã¢ã³ããããªãã®ãšããã«æ¥ãå Žåã¯ããã®ã¯ã©ã€ã¢ã³ãã«ä»£ãã£ãŠäœæããŠãã ãããšè¿°ã¹ãŸããã ããããã¯ã©ã€ã¢ã³ãã§ã¯ãªãããŒã¿ããŒã¹ã§ã¯ãšãªãå®è¡ããã®ã¯å°ãééã£ãŠããããã«æããŸãããããŒã¿ããŒã¹ãšå¯Ÿè©±ããããã®ãããã³ã«ãäœæããéçºè ã®èŠ³ç¹ãããããšãåçŽã«ãããã¯ãŒã¯æ¥ç¶ãäžããããã°äŸ¿å©ã§ãããããã®ãããªæºåããããªã¯ãšã¹ãããããŸãã
ãããŠå®è£ ããå¿ èŠãããæ©èœããã XNUMX ã€ãããŸãã PgBouncer ãšäºææ§ã®ããã¢ãã¿ãªã³ã°ãã§ããããã«ãªããŸããã å¹³åã¯ãšãªå®è¡æéãè¿ãããšãã§ããŸãã ããããå¹³åæéã¯ç é¢å ã®å¹³åæ°æž©ã§ãã誰ããå¯ããŠã誰ããæãããå¹³åããŠèª°ããå¥åº·ã§ãã ããã¯æ¬åœã§ã¯ãªãã
ããŒã»ã³ã¿ã€ã«ã®ãµããŒããå®è£ ããå¿ èŠããããŸããããã¯ããªãœãŒã¹ãæ¶è²»ããé ããªã¯ãšã¹ããããããšã瀺ããç£èŠãããåãå ¥ããããããŸãã
æãéèŠãªããšã¯ãããŒãžã§ã³ 1.0 ãå¿ èŠã§ãããšããããšã§ã (ããŒãžã§ã³ 1.1 ã¯ãã§ã«ãªãªãŒã¹ãããŠããŸã)ã å®éã®ãšãããOdyssey ã¯çŸåšããŒãžã§ã³ 1.0rcãã€ãŸããªãªãŒã¹åè£çã§ãã ãããŠãç§ããªã¹ããããã¹ãŠã® rake ã¯ãã¡ã¢ãª ãªãŒã¯ãé€ããŠãåãããŒãžã§ã³ã§ãŸã£ããä¿®æ£ãããŸããã
ããŒãžã§ã³ 1.0 ã¯ç§ãã¡ã«ãšã£ãŠäœãæå³ããŸãã? ãªããã»ã€ãæ ç¹ã«å±éããŠããŸãã ãã§ã«ããŒã¿ããŒã¹äžã§å®è¡ãããŠããŸããã1 ç§ããã 000 ãªã¯ãšã¹ãã®ãã€ã³ãã«éãããšãããããªãªãŒã¹ ããŒãžã§ã³ã§ããã000 ãšåŒã¹ãããŒãžã§ã³ã«ãªããšèšããŸãã
ã³ãã¥ããã£ã®äœäººãã®äººããããŒãžã§ã³ 1.0 ã§ã®äžæåæ¢ãš SCRAM ã®è¿œå ãæ±ããŠããŸãã ãã ããSCRAM ãäžæåæ¢ããŸã ããŒãžãããŠããªãããã次ã®ããŒãžã§ã³ãå®çšŒåç°å¢ã«ããŒã«ã¢ãŠãããå¿ èŠãããããšãæå³ããŸãã ããããããããããã®åé¡ã¯ããã«è§£æ±ºãããã§ãããã
ãã«ãªã¯ãšã¹ãããåŸ ã¡ããŠããŸãã ãŸããããŠã³ãµãŒã«é¢ããŠã©ã®ãããªåé¡ãããã®ãââãèãããã§ãã ãããã«ã€ããŠè©±ãåããŸãããã ãããããããå¿ èŠãªæ©èœãå®è£ ã§ãããããããŸããã
ç§ã®ã»ãã¯ããã§çµãããŸãã®ã§ããããããé¡ãããããŸãã ããããšãïŒ
質å
ç¬èªã® application_name ãå ¥åããå ŽåãOdyssey ã®ãã©ã³ã¶ã¯ã·ã§ã³ ããŒãªã³ã°ãå«ããŠãæ£ããã¹ããŒãããŸãã?
ãªããã»ã€ãšãããŠã³ãµãŒãšãïŒ
ãªããã»ã€ã§ã ããŠã³ãµãŒãæããããŸãã
ã»ãããäœããŸãã
ãŸããå®éã®æ¥ç¶ãä»ã®æ¥ç¶ãé£ã³è¶ããå Žåãããã¯éä¿¡ãããŸãã?
ãªã¹ããããŠãããã¹ãŠã®ãã©ã¡ãŒã¿ãŒã®ã»ãããäœæããŸãã application_name ããã®ãªã¹ãã«ãããã©ããã¯ããããŸããã ããã§èŠãããããã§ãã ãã¹ãŠåããã©ã¡ãŒã¿ãèšå®ããŸãã XNUMX åã®ãªã¯ãšã¹ãã§ãã»ããã¯èµ·åæã«ã¯ã©ã€ã¢ã³ãã«ãã£ãŠã€ã³ã¹ããŒã«ããããã¹ãŠã®ããšãå®è¡ããŸãã
ã¢ã³ãã¬ã€ãããå ±åããŠãããŠããããšãïŒ è¯ãå ±åã§ãïŒ Odyssey ã®éçºãå»ã ãšå éããŠããããšãå¬ããæããŸãã ãããããåãããã«ç¶ããŠãããããšæããŸãã Odyssey ãåæã«ç°ãªãããŒã¿ããŒã¹ (ã€ãŸãã¹ã¬ãŒã ãã¹ã¿ãŒ) ã«æ¥ç¶ãããã§ã€ã«ãªãŒããŒåŸã«æ°ãããã¹ã¿ãŒã«èªåçã«æ¥ç¶ã§ããããã«ããã«ã ããŒã¿ ãœãŒã¹æ¥ç¶ãè¡ãããã«ãã§ã«ãé¡ãããŸããã
ã¯ãããã®è°è«ãæãåºããããã§ãã çŸåšãããã€ãã®ã¹ãã¬ãŒãžããããŸãã ãã ãããããã®éã®åãæ¿ãã¯ãããŸããã ç§ãã¡ã®åŽã§ã¯ããµãŒããŒããŸã çããŠããããšãã¯ãšãªãããã§ã€ã«ãªãŒããŒãçºçããããšãç解ããå¿ èŠããããŸãããµãŒããŒã¯ pg_recovery ãåŒã³åºããŸãã ç§ãã¡ã¯ãã¹ã¿ãŒã®ãšããã«æ¥ãŠããªãããšãç解ããæšæºçãªæ¹æ³ãæã£ãŠããŸãã ãããŠãç§ãã¡ã¯ééãããäœããã®æ¹æ³ã§ç解ããå¿ èŠããããŸããïŒ ã€ãŸãããã®ã¢ã€ãã¢ã¯èå³æ·±ããã®ã§ãããè°è«ãããŠããŸãã ãã£ãšã³ã¡ã³ããæžããŠãã ããã Cèšèªãç¥ã£ãŠããå®å家ã§ããã°ãããã¯äžè¬çã«çŽ æŽãããããšã§ãã
ç§ãã¡ã¯ãã¢ããªã±ãŒã·ã§ã³éçºè ã«ãšã£ãŠã¬ããªã±ãŒããããã¯ã©ã¹ã¿ãŒã®å°å ¥ãã§ããã ãç°¡åã«ããããšèããŠãããããã¬ããªã«éã®ã¹ã±ãŒãªã³ã°ã®åé¡ã«ãé¢å¿ãæã£ãŠããŸãã ããããããã§ã¯ããããã©ã®ããã«è¡ãããã©ã®ããã«ããŸãè¡ãããšãããããå€ãã®ã³ã¡ã³ãã欲ããã§ãã
ã¬ããªã«ã«ã€ããŠã質åã§ãã ãã¹ã¿ãŒãšè€æ°ã®ã¬ããªã«ãããããšãããããŸããã ãŸããéããããå¯èœæ§ããããããæ¥ç¶ã®ããã«ãã¹ã¿ãŒãããã¬ããªã«ã«ã¢ã¯ã»ã¹ããé »åºŠãäœãããšã¯æããã§ãã ããŒã¿ã®éããããªãã®ããžãã¹ãæºè¶³ãããªãã»ã©ã§ããããããè€è£œããããŸã§ããã«ã¯è¡ããªããããããªããšããªãã¯èšããŸããã åæã«ãé·ãéããã«è¡ããªãã£ããããã®åŸéãå§ããå Žåãå¿ èŠãªããŒã¿ã¯ããã«ã¯å©çšã§ããªããªããŸãã ã€ãŸããåžžã«ãã¹ã¿ãŒã«ã¢ã¯ã»ã¹ãããšããã£ãã·ã¥ã¯ããã§ãŠã©ãŒã ã¢ããããããã£ãã·ã¥ã¯ã¬ããªã«ã«å°ãé ããŸãã
ã¯ããããã¯æ¬åœã ã PCãã£ãã·ã¥ã«ã¯å¿ èŠãªããŒã¿ãããã¯ã¯ååšãããå®éã®ãã£ãã·ã¥ã«ã¯å¿ èŠãªããŒãã«ã«é¢ããæ å ±ã¯ååšããããã©ã³ã«ã¯è§£æãããã¯ãšãªã¯ååšããããŸã£ããååšããŸããã
ãããŠãããçš®ã®ã¯ã©ã¹ã¿ãŒããããããã«æ°ããã¬ããªã«ãè¿œå ãããšãã¯ã©ã¹ã¿ãŒã®èµ·åäžã«ãã¹ãŠãäžè¯ã«ãªããŸããã€ãŸãããã£ãã·ã¥ãå¢å€§ããŸãã
ã¢ã€ãã¢ãåãããŸããã æ£ããã¢ãããŒãã¯ãæåã«ã¬ããªã«ã«å¯ŸããŠå°æ°ã®ã¯ãšãªãå®è¡ãããã£ãã·ã¥ããŠã©ãŒã ã¢ããããããšã§ãã ãã£ããèšããšããã¹ã¿ãŒãã10ç§ä»¥äžé ããŠã¯ãããªããšããæ¡ä»¶ããããŸãã ãããŠããã®ç¶æ ã¯XNUMXã€ã®æ³¢ã«å«ãŸããã¹ãã§ã¯ãªããäžéšã®ã¯ã©ã€ã¢ã³ãã«ãšã£ãŠã¯ã¹ã ãŒãºã«å«ãŸããã¹ãã§ãã
ã¯ããäœéãå¢ãããŸãã
ããã¯è¯ãã¢ã€ãã¢ã§ããã ãã ããæåã«ãã®ã·ã£ããããŠã³ãå®è£ ããå¿ èŠããããŸãã ãŸãé»æºããªãã«ããå¿ èŠãããã次ã«é»æºããªã³ã«ããæ¹æ³ãèããŸãã ã¹ã ãŒãºã«é»æºãå ¥ããããšãã§ããåªããæ©èœã§ãã
nginxã«ã¯ãã®ãªãã·ã§ã³ããããŸã slowly start
ãµãŒããŒã®ã¯ã©ã¹ã¿ãŒå
ã ãããŠåŸã
ã«è² è·ãå¢ãããŠãããŸãã
ã¯ããçŽ æŽãããã¢ã€ãã¢ã§ããæãã€ãããè©ŠããŠã¿ãŸãã
åºæïŒ habr.com