เป€เบ„เบฑเบ”เบฅเบฑเบš เปเบฅเบฐเป€เบ„เบฑเบ”เบฅเบฑเบš Kubernetes: เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ›เบดเบ”เบฅเบฐเบšเบปเบšเบขเปˆเบฒเบ‡เบชเบฐเบซเบ‡เปˆเบฒเบ‡เบฒเบกเปƒเบ™ NGINX เปเบฅเบฐ PHP-FPM

เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ›เบปเบเบเบฐเบ•เบดเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ” CI/CD เปƒเบ™ Kubernetes: เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ•เป‰เบญเบ‡เบšเปเปˆเบชเบฒเบกเบฒเบ”เบเบญเบกเบฎเบฑเบšเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ‚เบญเบ‡เบฅเบนเบเบ„เป‰เบฒเปƒเบซเบกเปˆเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบขเบธเบ”เป€เบŠเบปเบฒเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™, เปเบฅเบฐเบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบชเบธเบ”, เบชเปเบฒเป€เบฅเบฑเบ”เบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”.

เป€เบ„เบฑเบ”เบฅเบฑเบš เปเบฅเบฐเป€เบ„เบฑเบ”เบฅเบฑเบš Kubernetes: เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ›เบดเบ”เบฅเบฐเบšเบปเบšเบขเปˆเบฒเบ‡เบชเบฐเบซเบ‡เปˆเบฒเบ‡เบฒเบกเปƒเบ™ NGINX เปเบฅเบฐ PHP-FPM

เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบšเบฑเบ™เบฅเบธเบชเบนเบ™เบเบฒเบ™เบขเบธเบ”เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบŠเบธเบ”เบ—เบตเปˆเบ™เบดเบเบปเบกเบซเบผเบฒเบ (เป€เบŠเบฑเปˆเบ™: NGINX เปเบฅเบฐ PHP-FPM), เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบžเบปเบšเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบ—เบตเปˆเบˆเบฐเบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบ‚เบญเบ‡เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปƒเบ™เปเบ•เปˆเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” ...

เบ—เบดเบ”เบชเบฐเบ”เบต. เบเบฑเบเบกเบตเบŠเบตเบงเบดเบ”เปเบ™เบงเปƒเบ”

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบœเบตเบเปเบœเปˆเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบเปˆเบฝเบงเบเบฑเบšเบงเบปเบ‡เบˆเบญเบ™เบŠเบตเบงเบดเบ”เบ‚เบญเบ‡เบเบฑเบเปเบฅเป‰เบง เบซเบปเบงโ€‹เบ‚เปเป‰โ€‹เบ™เบตเป‰. เปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เบ‚เบญเบ‡เบซเบปเบงเบ‚เปเป‰เบ—เบตเปˆเบเปเบฒเบฅเบฑเบ‡เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒ, เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเบ•เปเปˆเป„เบ›เบ™เบตเป‰: เปƒเบ™เป€เบงเบฅเบฒเบ™เบตเป‰เป€เบกเบทเปˆเบญเบเบฑเบเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฅเบฑเบ”. เบชเบดเป‰เบ™เบชเบธเบ”, เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเปƒเบซเบกเปˆเบขเบธเบ”เป€เบŠเบปเบฒเบเบฒเบ™เบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเบกเบฑเบ™ (pod เบฅเบถเบšเปเบฅเป‰เบง เบˆเบฒเบเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบˆเบธเบ”เบชเบดเป‰เบ™เบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™). เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™ downtime เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡, เบกเบฑเบ™เบžเบฝเบ‡เบžเปเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒเบ—เบตเปˆเบˆเบฐเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบเบฒเบ™เบขเบธเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡.

เบ—เปˆเบฒเบ™เบเปเปˆเบ„เบงเบ™เบˆเบทเปˆเป„เบงเป‰เบงเปˆเบฒเป„เบฅเบเบฐเป€เบงเบฅเบฒเบœเปˆเบญเบ™เบœเบฑเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ 30 เบงเบดเบ™เบฒเบ—เบต: เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบตเป‰, เบเบฑเบเบˆเบฐเบ–เบทเบเบขเบธเบ”เป€เบŠเบปเบฒเปเบฅเบฐเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ•เป‰เบญเบ‡เบกเบตเป€เบงเบฅเบฒเบ—เบตเปˆเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ—เบฑเบ‡เบซเบกเบปเบ”เบเปˆเบญเบ™เป„เบฅเบเบฐเป€เบงเบฅเบฒเบ™เบตเป‰. ะŸั€ะธะผะตั‡ะฐะฝะธะต: เป€เบ–เบดเบ‡โ€‹เปเบกเปˆเบ™โ€‹เบงเปˆเบฒโ€‹เบเบฒเบ™โ€‹เบฎเป‰เบญเบ‡โ€‹เบ‚เปโ€‹เบ—เบตเปˆโ€‹เปƒเบŠเป‰โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบซเบผเบฒเบโ€‹เบโ€‹เปˆโ€‹เบงเบฒ 5-10 เบงเบดโ€‹เบ™เบฒโ€‹เบ—เบตโ€‹เปเบกเปˆเบ™โ€‹เบกเบตโ€‹เบšเบฑเบ™โ€‹เบซเบฒโ€‹, เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบ›เบดเบ”โ€‹เบขเปˆเบฒเบ‡โ€‹เบชเบฐโ€‹เบ”เบงเบโ€‹เบชเบฐโ€‹เบšเบฒเบโ€‹เบˆเบฐโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบŠเปˆเบงเบโ€‹เปƒเบซเป‰โ€‹เบกเบฑเบ™โ€‹เบญเบตเบโ€‹เบ•เปเปˆโ€‹เป„เบ› ...

เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเปƒเบˆเบ”เบตเบ‚เบถเป‰เบ™เบงเปˆเบฒเป€เบเบตเบ”เบซเบเบฑเบ‡เบ‚เบถเป‰เบ™เป€เบกเบทเปˆเบญเบเบฑเบเบขเบธเบ”, เบžเบฝเบ‡เปเบ•เปˆเป€เบšเบดเปˆเบ‡เปเบœเบ™เบงเบฒเบ”เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

เป€เบ„เบฑเบ”เบฅเบฑเบš เปเบฅเบฐเป€เบ„เบฑเบ”เบฅเบฑเบš Kubernetes: เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ›เบดเบ”เบฅเบฐเบšเบปเบšเบขเปˆเบฒเบ‡เบชเบฐเบซเบ‡เปˆเบฒเบ‡เบฒเบกเปƒเบ™ NGINX เปเบฅเบฐ PHP-FPM

A1, B1 - เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบเปˆเบฝเบงเบเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡ hearth เป„เบ”เป‰
A2 - SIGTERM เบญเบญเบเป€เบ”เบตเบ™เบ—เบฒเบ‡
B2 - เบเบฒเบ™เป€เบญเบปเบฒเบเบฑเบเบญเบญเบเบˆเบฒเบเบˆเบธเบ”เบชเบดเป‰เบ™เบชเบธเบ”
B3 - เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ (เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบˆเบธเบ”เบชเบดเป‰เบ™เบชเบธเบ”เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡)
B4 - เบ›เบฑเบšเบ›เบธเบ‡เบเบปเบ”เบฅเบฐเบšเบฝเบš iptables

เบเบฐโ€‹เบฅเบธโ€‹เบ™เบฒโ€‹เบšเบฑเบ™โ€‹เบ—เบถเบโ€‹: เบเบฒเบ™โ€‹เบฅเบถเบšโ€‹เบžเบญเบ”โ€‹เบˆเบธเบ”โ€‹เบชเบดเป‰เบ™โ€‹เบชเบธเบ”โ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบชเบปเปˆเบ‡ SIGTERM เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เป€เบเบตเบ”โ€‹เบ‚เบถเป‰เบ™โ€‹เบ•เบฒเบกโ€‹เบฅเปเบฒโ€‹เบ”เบฑเบšโ€‹, เปเบ•เปˆโ€‹เปƒเบ™โ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ™โ€‹. เปเบฅเบฐเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒ Ingress เบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบฅเบฒเบเบŠเบทเปˆ Endpoints เปƒเบ™เบ—เบฑเบ™เบ—เบต, เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเปƒเบซเบกเปˆเบˆเบฒเบเบฅเบนเบเบ„เป‰เบฒเบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเบเบฑเบ, เป€เบŠเบดเปˆเบ‡เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ” 500 เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบขเบธเบ”เบเบฑเบ. (เบชเปเบฒเบฅเบฑเบšเป€เบญเบเบฐเบชเบฒเบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบšเบฑเบ™เบซเบฒเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒ เปเบ›). เบšเบฑเบ™เบซเบฒเบ™เบตเป‰เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚เบ”เป‰เบงเบเบงเบดเบ—เบตเบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • เบชเบปเปˆเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ: เบ›เบดเบ”เปƒเบ™เบชเปˆเบงเบ™เบซเบปเบงเบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡ (เบ–เป‰เบฒเบญเบฑเบ™เบ™เบตเป‰เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ HTTP).
  • เบ–เป‰เบฒเบกเบฑเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เปเบ›เบ‡เบฅเบฐเบซเบฑเบ”เป„เบ”เป‰, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบšเบปเบ”เบ„เบงเบฒเบกเบ•เปเปˆเป„เบ›เบ™เบตเป‰เบญเบฐเบ—เบดเบšเบฒเบเบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบตเปˆเบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบˆเบปเบ™เบเปˆเบงเบฒเปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เป„เบฅเบเบฐเป€เบงเบฅเบฒเบ—เบตเปˆเบชเบฐเบซเบ‡เปˆเบฒเบ‡เบฒเบก.

เบ—เบดเบ”เบชเบฐเบ”เบต. เบงเบดเบ—เบตเบเบฒเบ™ NGINX เปเบฅเบฐ PHP-FPM เบขเบธเบ”เป€เบŠเบปเบฒเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ

NGINX

เปƒเบซเป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ NGINX, เป€เบžเบฒเบฐเบงเปˆเบฒเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡เบซเบผเบฒเบเบซเบผเบทเบซเบ™เป‰เบญเบเบเบฑเบšเบกเบฑเบ™. เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ—เบดเบ”เบชเบฐเบ”เบต, เบžเบงเบเป€เบฎเบปเบฒเบฎเบฝเบ™เบฎเบนเป‰เบงเปˆเบฒ NGINX เบกเบตเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบซเบ™เบถเปˆเบ‡เปเบฅเบฐ "เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™" เบซเบผเบฒเบ - เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบ”เบฑเบเบ™เป‰เบญเบเบ—เบตเปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ‚เบญเบ‡เบฅเบนเบเบ„เป‰เบฒ. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบชเบฐเบ”เบงเบเปเบกเปˆเบ™เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰: เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡ nginx -s <SIGNAL> เบขเบธเบ”เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบฑเบ‡เปƒเบ™เป‚เบซเบกเบ”เบ›เบดเบ”เป„เบง เบซเบผเบท เป‚เปเบ”เบ›เบดเบ”เบขเปˆเบฒเบ‡เบชเบฐเบซเบผเบฒเบ”. เปเบ™เปˆเบ™เบญเบ™, เบกเบฑเบ™เปเบกเปˆเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบชเบธเบ”เบ—เป‰เบฒเบเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบปเบ™เปƒเบˆ.

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบ: เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบžเบตเปˆเบกเปƒเบชเปˆ preStop-hook เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบˆเบฐเบชเบปเปˆเบ‡เบชเบฑเบ™เบเบฒเบ™เบ›เบดเบ”เบ—เบตเปˆเบชเบฐเบซเบ‡เปˆเบฒเบ‡เบฒเบก. เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เปƒเบ™ Deployment, เปƒเบ™ container block:

       lifecycle:
          preStop:
            exec:
              command:
              - /usr/sbin/nginx
              - -s
              - quit

เบ”เบฝเบงเบ™เบตเป‰, เป€เบกเบทเปˆเบญเบเบฑเบเบ›เบดเบ”เบฅเบปเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบซเบฑเบ™เบชเบดเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบขเบนเปˆเปƒเบ™เบšเบฑเบ™เบ—เบถเบเบšเบฑเบ™เบˆเบธ NGINX:

2018/01/25 13:58:31 [notice] 1#1: signal 3 (SIGQUIT) received, shutting down
2018/01/25 13:58:31 [notice] 11#11: gracefully shutting down

เปเบฅเบฐเบ™เบตเป‰เบˆเบฐเบซเบกเบฒเบเป€เบ–เบดเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™: NGINX เบฅเปเบ–เป‰เบฒเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเปƒเบซเป‰เบชเปเบฒเป€เบฅเบฑเบ”, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ‚เป‰เบฒเบ‚เบฐเบšเบงเบ™เบเบฒเบ™. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบˆเบฐเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบšเบฑเบ™เบซเบฒเบ—เบปเปˆเบงเป„เบ›เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบ—เบตเปˆ, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบกเบตเบ„เปเบฒเบชเบฑเปˆเบ‡ nginx -s quit เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบขเบธเบ”เป€เบŠเบปเบฒเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡.

เปเบฅเบฐเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฎเบฑเบ”เบเบฑเบš NGINX: เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบˆเบฒเบเบšเบฑเบ™เบ—เบถเบเบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบ•เบฒเบกเบ—เบตเปˆเบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™.

เบ‚เปเป‰เบ•เบปเบเบฅเบปเบ‡เบเบฑเบš PHP-FPM เปเบกเปˆเบ™เบซเบเบฑเบ‡? เบกเบฑเบ™เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบเบฒเบ™เบ›เบดเบ”เบขเปˆเบฒเบ‡เบชเบฐเบซเบ‡เปˆเบฒเบ‡เบฒเบกเปเบ™เบงเปƒเบ”? เปƒเบซเป‰เบ„เบดเบ”เบญเบญเบ.

PHP-FPM

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡ PHP-FPM, เบกเบตเบ‚เปเป‰เบกเบนเบ™เบซเบ™เป‰เบญเบเบฅเบปเบ‡. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบชเบธเบกเปƒเบชเปˆ เบ„เบนเปˆโ€‹เบกเบทโ€‹เบขเปˆเบฒเบ‡โ€‹เป€เบ›เบฑเบ™โ€‹เบ—เบฒเบ‡โ€‹เบเบฒเบ™โ€‹ เบญเบตเบ‡เบ•เบฒเบก PHP-FPM, เบกเบฑเบ™เบˆเบฐเป€เบงเบปเป‰เบฒเบงเปˆเบฒเบชเบฑเบ™เบเบฒเบ™ POSIX เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบ–เบทเบเบเบญเบกเบฎเบฑเบš:

  1. SIGINT, SIGTERM - เบ›เบดเบ”โ€‹เป„เบงโ€‹;
  2. SIGQUIT โ€” เบเบฒเบ™โ€‹เบ›เบดเบ”โ€‹เบขเปˆเบฒเบ‡โ€‹เบชเบฐโ€‹เบซเบ‡เปˆเบฒโ€‹เบ‡เบฒเบก (เบชเบดเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹)โ€‹.

เบชเบฑเบ™เบเบฒเบ™เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเปเบกเปˆเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เปƒเบ™เบงเบฝเบเบ‡เบฒเบ™เบ™เบตเป‰, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบเบปเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ. เป€เบžเบทเปˆเบญเบขเบธเบ”เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡, เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบ‚เบฝเบ™ hook preStop เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

        lifecycle:
          preStop:
            exec:
              command:
              - /bin/kill
              - -SIGQUIT
              - "1"

เบขเบนเปˆ glance เบ—เปเบฒเบญเบดเบ”, เบ™เบตเป‰เปเบกเปˆเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ›เบดเบ”เบ—เบตเปˆเบชเบฐเบซเบ‡เปˆเบฒเบ‡เบฒเบกเปƒเบ™เบ—เบฑเบ‡เบชเบญเบ‡เบšเบฑเบ™เบˆเบธ. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบงเบฝเบเบ‡เบฒเบ™เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบซเบผเบฒเบเบเปˆเบงเบฒเบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒ. เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เปเบกเปˆเบ™เบชเบญเบ‡เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบเบฒเบ™เบ›เบดเบ”เบขเปˆเบฒเบ‡เบชเบฐเบซเบ‡เปˆเบฒเบ‡เบฒเบกเบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบเปเบฅเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบšเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰เปƒเบ™เป„เบฅเบเบฐเบชเบฑเป‰เบ™เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”.

เบ›เบฐเบ•เบดเบšเบฑเบ”. เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบเบฑเบšเบเบฒเบ™เบ›เบดเบ”เบ—เบตเปˆเบ”เบต

NGINX

เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ”, เบกเบฑเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบ—เบตเปˆเบˆเบฐเบˆเบทเปˆเบˆเปเบฒ: เบ™เบญเบเป€เบซเบ™เบทเบญเบˆเบฒเบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡ nginx -s quit เบกเบตเบญเบตเบเปœเบถเปˆเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบตเปˆเบ„เบงเบ™เป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆ. เบžเบงเบเป€เบฎเบปเบฒเบžเบปเบšเบšเบฑเบ™เบซเบฒเบ—เบตเปˆ NGINX เบเบฑเบ‡เบˆเบฐเบชเบปเปˆเบ‡ SIGTERM เปเบ—เบ™เบชเบฑเบ™เบเบฒเบ™ SIGQUIT, เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบšเปเปˆเบชเปเบฒเป€เบฅเบฑเบ”เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡. เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เบตเปˆเบ™เบตเป‰. เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เป€เบซเบ”เบœเบปเบ™เบชเบฐเป€เบžเบฒเบฐเบชเปเบฒเบฅเบฑเบšเบžเบถเบ”เบ•เบดเบเปเบฒเบ™เบตเป‰: เบกเบตเบ„เบงเบฒเบกเบชเบปเบ‡เปƒเบชเบเปˆเบฝเบงเบเบฑเบšเบฎเบธเปˆเบ™ NGINX, เปเบ•เปˆเบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบขเบทเบ™เบขเบฑเบ™. เบญเบฒเบเบฒเบ™เปเบกเปˆเบ™เบงเปˆเบฒเบ‚เปเป‰เบ„เบงเบฒเบกเป„เบ”เป‰เบ–เบทเบเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบขเบนเปˆเปƒเบ™เบšเบฑเบ™เบ—เบถเบเบšเบฑเบ™เบˆเบธ NGINX: "เป€เบ›เบตเบ”เป€เบ•เบปเป‰เบฒเบฎเบฑเบš #10 เบŠเป‰เบฒเบเปƒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ 5", เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบเบฑเบเป„เบ”เป‰เบขเบธเบ”เป€เบŠเบปเบฒ.

เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบšเบฑเบ™เบซเบฒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เบˆเบฒเบเบ„เปเบฒเบ•เบญเบšเบเปˆเบฝเบงเบเบฑเบš Ingress เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™:

เป€เบ„เบฑเบ”เบฅเบฑเบš เปเบฅเบฐเป€เบ„เบฑเบ”เบฅเบฑเบš Kubernetes: เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ›เบดเบ”เบฅเบฐเบšเบปเบšเบขเปˆเบฒเบ‡เบชเบฐเบซเบ‡เปˆเบฒเบ‡เบฒเบกเปƒเบ™ NGINX เปเบฅเบฐ PHP-FPM
เบ•เบปเบงเบŠเบตเป‰เบšเบญเบเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบชเบฐเบ–เบฒเบ™เบฐเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบžเบฝเบ‡เปเบ•เปˆเบฅเบฐเบซเบฑเบ”เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ” 503 เบˆเบฒเบ Ingress เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡: เบกเบฑเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธ NGINX, เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบฑเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบ”เป‰. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบšเบดเปˆเบ‡เบšเบฑเบ™เบ—เบถเบเบšเบฑเบ™เบˆเบธเบ—เบตเปˆเบกเบต NGINX, เบžเบงเบเบกเบฑเบ™เบ›เบฐเบเบญเบšเบกเบตเบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

[alert] 13939#0: *154 open socket #3 left in connection 16
[alert] 13939#0: *168 open socket #6 left in connection 13

เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบชเบฑเบ™เบเบฒเบ™เบขเบธเบ”, เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเบˆเบฐเบขเบธเบ”เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡: เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบขเบทเบ™เบขเบฑเบ™เป‚เบ”เบเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ” 503 เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบžเบปเบšเบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™, เบกเบฑเบ™เบชเบปเบกเป€เบซเบ”เบชเบปเบกเบœเบปเบ™เบ—เบตเปˆเบˆเบฐเบ„เบดเบ”เบญเบญเบเบงเปˆเบฒเบชเบฑเบ™เบเบฒเบ™เบขเบธเบ”เปƒเบ”เบ–เบทเบเปƒเบŠเป‰เบขเบนเปˆเปƒเบ™เบ–เบฑเบ‡เปเบฅเบฐเบชเบดเปˆเบ‡เบ—เบตเปˆ hook preStop เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒ. เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบงเปˆเบฒเป€เบซเบ”เบœเบปเบ™เปเบกเปˆเบ™เบŠเบฑเบ”เป€เบˆเบ™เบขเบนเปˆเปƒเบ™เบ™เบตเป‰.

PHP-FPM ... เปเบฅเบฐเบญเบทเปˆเบ™เป†เบญเบตเบ

เบšเบฑเบ™เบซเบฒเบเบฑเบš PHP-FPM เป„เบ”เป‰เบ–เบทเบเบญเบฐเบ—เบดเบšเบฒเบเปƒเบ™เปเบšเบšเบซเบเปเป‰เป†: เบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบฅเปเบ–เป‰เบฒเบเบฒเบ™เบชเปเบฒเป€เบฅเบฑเบ”เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบ”เบฑเบ, เบกเบฑเบ™เบขเบธเบ”เบžเบงเบเบกเบฑเบ™, เบŠเบถเปˆเบ‡เป€เบ›เบฑเบ™เป€เบซเบ”เบœเบปเบ™ 502 เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปเบฅเบฐเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบญเบทเปˆเบ™เป†. เบกเบตเบซเบผเบฒเบเบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบเปˆเบฝเบงเบเบฑเบš bug.php.net เบ•เบฑเป‰เบ‡เปเบ•เปˆเบ›เบต 2005 (เบ•เบปเบงเบขเปˆเบฒเบ‡ เบ—เบตเปˆเบ™เบตเป‰ ะธ เบ—เบตเปˆเบ™เบตเป‰), เป€เบŠเบดเปˆเบ‡เบญเบฐเบ—เบดเบšเบฒเบเบšเบฑเบ™เบซเบฒเบ™เบตเป‰. เปเบ•เปˆเบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบšเปเปˆเป€เบซเบฑเบ™เบซเบเบฑเบ‡เบขเบนเปˆเปƒเบ™เบšเบฑเบ™เบ—เบถเบ: PHP-FPM เบˆเบฐเบ›เบฐเบเบฒเบ”เบเบฒเบ™เบชเปเบฒเป€เบฅเบฑเบ”เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ‚เบญเบ‡เบกเบฑเบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบซเบผเบทเบเบฒเบ™เปเบˆเป‰เบ‡เป€เบ•เบทเบญเบ™เบˆเบฒเบเบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเบชเบฒเบก.

เบกเบฑเบ™เป€เบ›เบฑเบ™เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบˆเบฐเปเบˆเป‰เบ‡เบงเปˆเบฒเบšเบฑเบ™เบซเบฒเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เบญเบฒเบ”เบˆเบฐเบ‚เบถเป‰เบ™เบเบฑเบšเบ‚เบญเบšเป€เบ‚เบ”เบซเบ™เป‰เบญเบเบซเบผเบทเบซเบผเบฒเบเปƒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เปเบฅเบฐเบญเบฒเบ”เบˆเบฐเบšเปเปˆเบชเบฐเปเบ”เบ‡เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡, เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบก. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบžเบปเบšเบกเบฑเบ™, เบงเบดเบ—เบตเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ‡เปˆเบฒเบเป†เบกเบฒเบชเบนเปˆเปƒเบˆเบเปˆเบญเบ™: เป€เบžเบตเปˆเบก hook preStop เบเบฑเบš sleep(30). เบกเบฑเบ™เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบฎเบฑเบ”เบชเปเบฒเป€เบฅเบฑเบ”เบ—เบธเบเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ—เบตเปˆเบกเบตเบเปˆเบญเบ™ (เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบเบญเบกเบฎเบฑเบšเบญเบฑเบ™เปƒเบซเบกเปˆ, เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบเบฑเบ เปเบฅเป‰เบง เบชเบฒเบกเบฒเบ” เบชเบดเป‰เบ™เบชเบธเบ”), เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบ 30 เบงเบดเบ™เบฒเบ—เบต, เบเบฑเบเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เบˆเบฐเบชเบดเป‰เบ™เบชเบธเบ”เบ”เป‰เบงเบเบชเบฑเบ™เบเบฒเบ™ SIGTERM.

เบกเบฑเบ™เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒ lifecycle เบชเปเบฒเบฅเบฑเบšเบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเบˆเบฐเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเบ™เบตเป‰:

    lifecycle:
      preStop:
        exec:
          command:
          - /bin/sleep
          - "30"

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบ 30 เบงเบดเบ™เบฒเบ—เบต sleep ะผั‹ เบซเบผเบฒเบ เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบˆเบฐโ€‹เป€เบžเบตเปˆเบกโ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”, เบ™เบฑเบšโ€‹เบ•เบฑเป‰เบ‡โ€‹เปเบ•เปˆโ€‹เปเบ•เปˆโ€‹เบฅเบฐโ€‹เบเบฑเบโ€‹เบˆเบฐโ€‹เบ–เบทเบโ€‹เบฅเบฐโ€‹เบ‡เบฑเบšโ€‹ เบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆ 30 เบงเบดเบ™เบฒเบ—เบต, เป€เบŠเบดเปˆเบ‡เบšเปเปˆเบ”เบต. เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เบเปˆเบฝเบงเบเบฑเบšเป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰?

เปƒเบซเป‰เบซเบฑเบ™เป„เบ›เบซเบฒเบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเปˆเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเบเบปเบ‡เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบกเบฑเบ™เปเบกเปˆเบ™ PHP-FPM, เป€เบŠเบดเปˆเบ‡ เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบšเปเปˆเป„เบ”เป‰เบ•เบดเบ”เบ•เบฒเบกเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบฅเบนเบเบ‚เบญเบ‡เบกเบฑเบ™: เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบ–เบทเบเบขเบธเบ”เบ•เบดเปƒเบ™เบ—เบฑเบ™เบ—เบต. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เบžเบถเบ”เบ•เบดเบเปเบฒเบ™เบตเป‰เป‚เบ”เบเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡ process_control_timeout, เป€เบŠเบดเปˆเบ‡เบเปเบฒเบ™เบปเบ”เบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบชเปเบฒเบฅเบฑเบšเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ‚เบญเบ‡เป€เบ”เบฑเบเบ™เป‰เบญเบเบ—เบตเปˆเบˆเบฐเบฅเปเบ–เป‰เบฒเบชเบฑเบ™เบเบฒเบ™เบˆเบฒเบเปเบกเปˆเบšเบปเบ”. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบ›เบฑเบ™ 20 เบงเบดเบ™เบฒเบ—เบต, เบ™เบตเป‰เบˆเบฐเบเบงเบกเป€เบญเบปเบฒเบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเบชเปˆเบงเบ™เปƒเบซเบเปˆเบ—เบตเปˆเปเบฅเปˆเบ™เบขเบนเปˆเปƒเบ™เบ–เบฑเบ‡เปเบฅเบฐเบˆเบฐเบขเบธเบ”เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเป€เบกเบทเปˆเบญเบžเบงเบเป€เบ‚เบปเบฒเบชเปเบฒเป€เบฅเบฑเบ”.

เบ”เป‰เบงเบเบ„เบงเบฒเบกเบฎเบนเป‰เบ™เบตเป‰, เปƒเบซเป‰เบเบฑเบšเบ„เบทเบ™เป„เบ›เบซเบฒเบšเบฑเบ™เบซเบฒเบชเบธเบ”เบ—เป‰เบฒเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเบกเบฒ, Kubernetes เบšเปเปˆเปเบกเปˆเบ™เป€เบงเบ—เบต monolithic: เบเบฒเบ™เบชเบทเปˆเบชเบฒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ‚เบญเบ‡เบกเบฑเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเบšเบฒเบ‡เป€เบงเบฅเบฒ. เบ™เบตเป‰เปเบกเปˆเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ‚เบญเบ‡ Ingresses เปเบฅเบฐเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบญเบทเปˆเบ™เป†, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบŠเบฑเบเบŠเป‰เบฒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เบกเบฑเบ™เบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™ 500 เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบญเบฒเบ”เบˆเบฐเป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ‚เบญเบ‡เบเบฒเบ™เบชเบปเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเป„เบ›เบซเบฒเบ•เบปเป‰เบ™เบ™เป‰เปเบฒ, เปเบ•เปˆ "เป€เบงเบฅเบฒเบŠเบฑเบเบŠเป‰เบฒ" เบ‚เบญเบ‡เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบฅเบฐเบซเบงเปˆเบฒเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบชเบฑเป‰เบ™ - เบซเบ™เป‰เบญเบเบเบงเปˆเบฒเบซเบ™เบถเปˆเบ‡เบงเบดเบ™เบฒเบ—เบต.

เบชเบฐเบ™เบฑเป‰เบ™, เปƒเบ™เบˆเปเบฒเบ™เบงเบ™เบ—เบฑเบ‡เบซเบกเบปเบ” เบเบฑเบšเบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเบกเบฒเปเบฅเป‰เบง process_control_timeout เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบชเปเบฒเบฅเบฑเบš lifecycle:

lifecycle:
  preStop:
    exec:
      command: ["/bin/bash","-c","/bin/sleep 1; kill -QUIT 1"]

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบŠเบปเบ”เป€เบŠเบตเบเบเบฒเบ™เบŠเบฑเบเบŠเป‰เบฒเบเบฑเบšเบ„เปเบฒเบชเบฑเปˆเบ‡ sleep เปเบฅเบฐเบšเปเปˆเป€เบžเบตเปˆเบกเป€เบงเบฅเบฒเปƒเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ: เบกเบตเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡ 30 เบงเบดเบ™เบฒเบ—เบตเปเบฅเบฐเบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบšเป? ... เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบกเบฑเบ™เปเบกเปˆเบ™ process_control_timeoutเปเบฅเบฐ lifecycle เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบžเบฝเบ‡เปเบ•เปˆเป€เบ›เบฑเบ™ "เบ•เบฒเบซเบ™เปˆเบฒเบ‡เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž" เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบ„เบงเบฒเบกเบŠเบฑเบเบŠเป‰เบฒ.

เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบง, เบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเปเบฅเบฐเบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เปƒเบŠเป‰เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบเบฑเบš PHP-FPM เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™. เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบญเบฒเบ”เบˆเบฐเป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เบงเบดเบ—เบตเบเบฒเบ™เบซเบ™เบถเปˆเบ‡เบซเบผเบทเบญเบทเปˆเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปƒเบŠเป‰เบžเบฒเบชเบฒเบญเบทเปˆเบ™ / เบเบญเบšเบงเบฝเบ. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เบเบฒเบ™เบ›เบดเบ”เบขเปˆเบฒเบ‡เบชเบฐเบซเบ‡เปˆเบฒเบ‡เบฒเบกเบ”เป‰เบงเบเบงเบดเบ—เบตเบญเบทเปˆเบ™ - เบ•เบปเบงเบขเปˆเบฒเบ‡, เป‚เบ”เบเบเบฒเบ™เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เปƒเบซเบกเปˆเป€เบžเบทเปˆเบญเปƒเบซเป‰เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบฑเบ™เบเบฒเบ™เบเบฒเบ™เบขเบธเบ”เป€เบŠเบปเบฒเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡ - เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเป„เบงเป‰. เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบšเปเปˆเบ‡เบฒเบกเบ—เบตเปˆเบชเบธเบ”, เปเบ•เปˆเบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบ.

เบ›เบฐเบ•เบดเบšเบฑเบ”. เป‚เบซเบผเบ”เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบžเบทเปˆเบญเบเบงเบ”เบเบฒเป€เบšเบดเปˆเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ‚เบญเบ‡เบเบฑเบ

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เป‚เบซเบผเบ”เปเบกเปˆเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™เบงเบดเบ—เบตเบ—เบตเปˆเบˆเบฐเบเบงเบ”เบชเบญเบšเบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบต, เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เปƒเบเป‰เบŠเบดเบ”เบเบฑเบšเบชเบฐเบžเบฒเบšเบเบฒเบ™เบ•เปเปˆเบชเบนเป‰เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰เป„เบ›เบขเป‰เบฝเบกเบขเบฒเบกเป€เบงเบฑเบšเป„เบŠเบ—เปŒ. เป€เบžเบทเปˆเบญเบ—เบปเบ”เบชเบญเบšเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰ Yandex.Tankom: เบกเบฑเบ™เบเบงเบกเป€เบญเบปเบฒเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™. เบ•เปเปˆเป„เบ›เบ™เบตเป‰เปเบกเปˆเบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเปเบฅเบฐเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ”เป‰เบงเบเบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบˆเบฒเบเบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ‚เปเบ‚เบญเบšเปƒเบˆเบเบฑเบšเบเบฒเบŸเบ‚เบญเบ‡ Grafana เปเบฅเบฐ Yandex.Tank เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡.

เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบชเบธเบ”เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เปเบกเปˆเบ™ เบเบงเบ”เป€เบšเบดเปˆเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบ—เบทเปˆเบญเบฅเบฐเบเป‰เบฒเบง. เบซเบผเบฑเบ‡เบˆเบฒเบเป€เบžเบตเปˆเบกเบเบฒเบ™เปเบเป‰เป„เบ‚เปƒเบซเบกเปˆ, เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบฅเบฐเป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบกเบทเปˆเบญเบ—เบฝเบšเปƒเบชเปˆเบเบฑเบšเป„เบฅเบเบฐเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ. เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบกเบฑเบ™เบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เบเบฒเบเบ—เบตเปˆเบˆเบฐเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบตเปˆเบšเปเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ•เบดเบœเบปเบ™, เปเบฅเบฐเปƒเบ™เป„เบฅเบเบฐเบเบฒเบงเบกเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบญเบฑเบ™เบ•เบฐเบฅเบฒเบ (เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบžเบตเปˆเบกเป€เบงเบฅเบฒเปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”).

nuance เบญเบทเปˆเบ™เปเบกเปˆเบ™เบเบฒเบ™เป€เบšเบดเปˆเบ‡เบšเบฑเบ™เบ—เบถเบเบžเบฒเบŠเบฐเบ™เบฐเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบขเบธเบ”เบ‚เบญเบ‡เบกเบฑเบ™. เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ›เบดเบ”โ€‹เบขเปˆเบฒเบ‡โ€‹เบชเบฐโ€‹เบ”เบงเบโ€‹เบชเบฐโ€‹เบšเบฒเบโ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบšเบฑเบ™โ€‹เบ—เบถเบโ€‹เป„เบงเป‰โ€‹เบ—เบตเปˆโ€‹เบ™เบฑเป‰เบ™โ€‹? เบกเบตเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เปƒเบ”เป†เปƒเบ™เบšเบฑเบ™เบ—เบถเบเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบญเบทเปˆเบ™เป† (เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบต PHP-FPM เบ—เบตเปˆเปƒเบเป‰เบ„เบฝเบ‡)? เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เปƒเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡ (เบ„เบทเบเบฑเบš NGINX เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡)? เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบซเบงเบฑเบ‡เบงเปˆเบฒเบ‚เปเป‰เบกเบนเบ™เปเบ™เบฐเบ™เปเบฒเบˆเบฒเบเบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆเบ”เบตเบ‚เบถเป‰เบ™เบเปˆเบฝเบงเบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เบเบฑเบšเบ–เบฑเบ‡เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ›เบดเบ”เบ‚เบญเบ‡เบกเบฑเบ™.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เป„เบ”เป‰เบˆเบฑเบ”เบ‚เบถเป‰เบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™ lifecycle เปเบฅเบฐเป‚เบ”เบเบšเปเปˆเบกเบตเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ (process_control_timeout เปƒเบ™ PHP-FPM). เบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ™เบตเป‰เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบˆเปเบฒเบ™เบงเบ™เป‚เบ”เบเบ›เบฐเบกเบฒเบ™เบ‚เบญเบ‡เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ” (เปเบฅเบฐเบšเปเปˆเบงเปˆเบฒเบˆเบฐเบกเบต). เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบˆเบฒเบเบ‚เปเป‰เบกเบนเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เบ—เปˆเบฒเบ™เบ„เบงเบ™เบฎเบนเป‰เบงเปˆเบฒเป€เบงเบฅเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเบชเบฐเป€เบฅเปˆเบเบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบเบฑเบเปเบกเปˆเบ™เบ›เบฐเบกเบฒเบ™ 5-10 เบงเบดเบ™เบฒเบ—เบตเบˆเบปเบ™เบเปˆเบงเบฒเบกเบฑเบ™เบเบฝเบกเบžเป‰เบญเบกเบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆ. เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปเบกเปˆเบ™:

เป€เบ„เบฑเบ”เบฅเบฑเบš เปเบฅเบฐเป€เบ„เบฑเบ”เบฅเบฑเบš Kubernetes: เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ›เบดเบ”เบฅเบฐเบšเบปเบšเบขเปˆเบฒเบ‡เบชเบฐเบซเบ‡เปˆเบฒเบ‡เบฒเบกเปƒเบ™ NGINX เปเบฅเบฐ PHP-FPM

เปเบœเบ‡เบ‚เปเป‰เบกเบนเบ™ Yandex.Tank เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบ–เบดเบ‡เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ” 502 เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™, เป€เบŠเบดเปˆเบ‡เป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เป€เบงเบฅเบฒเบ‚เบญเบ‡เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบฅเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒเป‚เบ”เบเบชเบฐเป€เบฅเปˆเบเป€เบ–เบดเบ‡ 5 เบงเบดเบ™เบฒเบ—เบต. เบ„เบฒเบ”เบงเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบเป‰เบญเบ™เบงเปˆเบฒเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ—เบตเปˆเบกเบตเบขเบนเปˆเบเบฑเบšเบเบฑเบเป€เบเบปเปˆเบฒเบ–เบทเบเบขเบธเบ”เป€เบŠเบปเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบกเบฑเบ™เบ–เบทเบเบเบปเบเป€เบฅเบตเบ. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบตเป‰, 503 เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบ›เบฒเบเบปเบ”, เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบœเบปเบ™เบกเบฒเบˆเบฒเบเบเบฒเบ™เบขเบธเบ”เป€เบŠเบปเบฒเบเบฒเบ™เบšเบฑเบ™เบˆเบธ NGINX, เป€เบŠเบดเปˆเบ‡เบเบฑเบ‡เบซเบผเบธเบ”เบฅเบปเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบ backend (เป€เบŠเบดเปˆเบ‡เบ›เป‰เบญเบ‡เบเบฑเบ™เบšเปเปˆเปƒเบซเป‰ Ingress เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบกเบฑเบ™).

เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™ process_control_timeout เปƒเบ™ PHP-FPM เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบฅเปเบ–เป‰เบฒเบเบฒเบ™เบชเปเบฒเป€เบฅเบฑเบ”เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบ”เบฑเบ, i.e. เปเบเป‰โ€‹เป„เบ‚โ€‹เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹เบ”เบฑเปˆเบ‡โ€‹เบเปˆเบฒเบงโ€‹. เบ™เบณเปƒเบŠเป‰เบ„เบทเบ™เปƒเปเปˆเป‚เบ”เบเปƒเบŠเป‰เบ„เบณเบชเบฑเปˆเบ‡เบ™เบตเป‰:

เป€เบ„เบฑเบ”เบฅเบฑเบš เปเบฅเบฐเป€เบ„เบฑเบ”เบฅเบฑเบš Kubernetes: เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ›เบดเบ”เบฅเบฐเบšเบปเบšเบขเปˆเบฒเบ‡เบชเบฐเบซเบ‡เปˆเบฒเบ‡เบฒเบกเปƒเบ™ NGINX เปเบฅเบฐ PHP-FPM

เบšเปเปˆเบกเบตเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบญเบตเบเบ•เปเปˆเป„เบ›เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ™เบณเปƒเบŠเป‰ 500th! เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เปเบกเปˆเบ™โ€‹เบชเบปเบšโ€‹เบœเบปเบ™โ€‹เบชเปเบฒโ€‹เป€เบฅเบฑเบ”โ€‹, เบเบฒเบ™โ€‹เบ›เบดเบ”โ€‹เบ—เบตเปˆโ€‹เบชเบฐโ€‹เบ”เบงเบโ€‹เบชเบฐโ€‹เบšเบฒเบโ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹.

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบกเบฑเบ™เป€เบ›เบฑเบ™เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบˆเบฐเบˆเบทเปˆเบˆเปเบฒเบšเบฑเบ™เบซเบฒเบเบฑเบš Ingress containers, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบเบ‚เบญเบ‡เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบญเบฒเบ”เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเป‰เบญเบ™เป€เบงเบฅเบฒเบŠเบฑเบเบŠเป‰เบฒ. เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ, เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเปเบกเปˆเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบตเปˆเบกเบต sleep เปเบฅเบฐโ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹เบ„เบทเบ™โ€‹เปƒเปเปˆ. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, เบšเปเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ”เป†เบ—เบตเปˆเป€เบซเบฑเบ™เป„เบ”เป‰ (เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, เบšเปเปˆเบกเบตเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”).

เบชเบฐเบซเบฅเบธเบš

เป€เบžเบทเปˆเบญเบขเบธเบ”เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบขเปˆเบฒเบ‡เบชเบฐเบซเบ‡เปˆเบฒเบ‡เบฒเบก, เบžเบงเบเป€เบฎเบปเบฒเบ„เบฒเบ”เบซเบงเบฑเบ‡เบงเปˆเบฒเบเบฒเบ™เบ›เบฐเบžเบถเบ”เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบˆเบฒเบเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™:

  1. เบฅเปเบ–เป‰เบฒเบชเบญเบ‡เบชเบฒเบกเบงเบดเบ™เบฒเบ—เบตเปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบขเบธเบ”เบเบฒเบ™เบเบญเบกเบฎเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปƒเบซเบกเปˆ.
  2. เบฅเปเบ–เป‰เบฒเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเปเบฒเป€เบฅเบฑเบ”เปเบฅเบฐเบ›เบดเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ Keepalive เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป.
  3. เบชเบดเป‰เบ™เบชเบธเบ”เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™.

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบšเปเปˆเปเบกเปˆเบ™เบ—เบธเบเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเปเบšเบšเบ™เบตเป‰เป„เบ”เป‰. เบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบซเบ™เบถเปˆเบ‡เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡ Kubernetes เปเบกเปˆเบ™:

  • เป€เบžเบตเปˆเบก hook เบ—เบฒเบ‡เบชเปˆเบงเบ™เบซเบ™เป‰เบฒเบ‚เบญเบ‡เบขเบธเบ”เบ—เบตเปˆเบˆเบฐเบฅเปเบ–เป‰เบฒเบชเบญเบ‡เบชเบฒเบกเบงเบดเบ™เบฒเบ—เบต;
  • เบเบฒเบ™เบชเบถเบเบชเบฒเป„เบŸเบฅเปŒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ‚เบญเบ‡ backend เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบชเปเบฒเบฅเบฑเบšเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบเบฑเบš NGINX เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบ„เบงเบ™เบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบชเบฑเบ™เบเบฒเบ™เบเบฒเบ™เบขเบธเบ”เป€เบŠเบปเบฒเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบปเป‰เบ™เบญเบฒเบ”เบˆเบฐเบšเปเปˆเป€เบฎเบฑเบ”เปเบ™เบงเบ™เบฑเป‰เบ™, เบชเบฐเบ™เบฑเป‰เบ™เบกเบฑเบ™เบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบˆเบฐเบเบงเบ”เป€เบšเบดเปˆเบ‡ 500 เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ. เบ™เบตเป‰เบเบฑเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบšเบดเปˆเบ‡เบšเบฑเบ™เบซเบฒเป„เบ”เป‰เบขเปˆเบฒเบ‡เบเบงเป‰เบฒเบ‡เบ‚เบงเบฒเบ‡เปเบฅเบฐเบšเปเปˆเบชเบธเบกเปƒเบชเปˆเบเบฒเบ™เบเบฑเบเบ”เบฝเบงเบซเบผเบทเบ–เบฑเบ‡, เปเบ•เปˆเป€เบšเบดเปˆเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”.

เป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰ Yandex.Tank เบชเบปเบกเบ—เบปเบšเบเบฑเบšเบฅเบฐเบšเบปเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเปƒเบ”เป† (เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบ‚เปเป‰เบกเบนเบ™เป„เบ”เป‰เบ–เบทเบเป€เบญเบปเบฒเบกเบฒเบˆเบฒเบ Grafana เบเบฑเบš Prometheus backend เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš). เบšเบฑเบ™เบซเบฒเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ›เบดเบ”เบขเปˆเบฒเบ‡เบชเบฐเบซเบ‡เปˆเบฒเบ‡เบฒเบกเปเบกเปˆเบ™เป€เบซเบฑเบ™เป„เบ”เป‰เบŠเบฑเบ”เป€เบˆเบ™เบžเบฒเบเปƒเบ•เป‰เบเบฒเบ™เป‚เบซเบผเบ”เบซเบ™เบฑเบเบ—เบตเปˆเบ”เบฑเบ”เบŠเบฐเบ™เบตเบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เป„เบ”เป‰, เปเบฅเบฐเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบŠเปˆเบงเบเปƒเบซเป‰เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เปƒเบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบซเบผเบทเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš.

เปƒเบ™เบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ•เปเปˆเบ„เปเบฒเบ„เบถเบ”เบ„เปเบฒเป€เบซเบฑเบ™เบเปˆเบฝเบงเบเบฑเบšเบšเบปเบ”เบ„เบงเบฒเบก: เบกเบฑเบ™เป€เบ›เบฑเบ™เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบšเบญเบเบงเปˆเบฒเบšเบฑเบ™เบซเบฒเปเบฅเบฐเบเบฒเบ™เปเบเป‰เป„เบ‚เป„เบ”เป‰เบ–เบทเบเบญเบฐเบ—เบดเบšเบฒเบเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เบเปˆเบฝเบงเบเบฑเบš NGINX Ingress. เบชเปเบฒเบฅเบฑเบšเบเปเบฅเบฐเบ™เบตเบญเบทเปˆเบ™เป†, เบกเบตเบงเบดเบ—เบตเปเบเป‰เป„เบ‚เบญเบทเปˆเบ™เป†, เป€เบŠเบดเปˆเบ‡เบžเบงเบเป€เบฎเบปเบฒเบญเบฒเบ”เบˆเบฐเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเปƒเบ™เบญเบธเบ›เบฐเบเบญเบ™เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบ‚เบญเบ‡เบŠเบธเบ”.

PS

เบญเบทเปˆเบ™เป†เบˆเบฒเบเบŠเบธเบ”เป€เบ„เบฑเบ”เบฅเบฑเบš เปเบฅเบฐเป€เบ„เบฑเบ”เบฅเบฑเบšเบ‚เบญเบ‡ K8s:

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™