Kubernetes рдорд╛ CI/CD рд▓рд╛рдЧреВ рдЧрд░реНрджрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЕрд╡рд╕реНрдерд╛: рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рд░реЛрдХрд┐рдиреБ рдЕрдШрд┐ рдирдпрд╛рдБ рдЧреНрд░рд╛рд╣рдХ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рд╕реНрд╡реАрдХрд╛рд░ рдирдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреБрдкрд░реНрдЫ, рд░ рд╕рдмреИрднрдиреНрджрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд░реВрдкрдорд╛, рдЕрд╡рд╕реНрдерд┐рддрд╣рд░реВрд▓рд╛рдИ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
рдпрд╕ рд╕рд░реНрддрдХреЛ рдЕрдиреБрдкрд╛рд▓рдирд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рддреИрдирд╛рддреАрдХреЛ рд╕рдордпрдорд╛ рд╢реВрдиреНрдп рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдпрджреНрдпрдкрд┐, рдзреЗрд░реИ рд▓реЛрдХрдкреНрд░рд┐рдп рдмрдиреНрдбрд▓рд╣рд░реВ (рдЬрд╕реНрддреИ NGINX рд░ PHP-FPM) рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛ рдкрдирд┐, рддрдкрд╛рдИрдВрд▓реЗ рдХрдард┐рдирд╛рдЗрд╣рд░реВрдХреЛ рд╕рд╛рдордирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдЬрд╕рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯрдорд╛ рддреНрд░реБрдЯрд┐рд╣рд░реВрдХреЛ рд╡реГрджреНрдзрд┐ рдирд┐рдореНрддреНрдпрд╛рдЙрдиреЗрдЫред
рд╕рд┐рджреНрдзрд╛рдиреНрддред рдкреЛрдб рдХрд╕рд░реА рдмрд╛рдБрдЪреНрдЫ
рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рдкреЛрдбрдХреЛ рдЬреАрд╡рди рдЪрдХреНрд░рдХреЛ рдмрд╛рд░реЗрдорд╛ рд╡рд┐рд╕реНрддреГрдд рд░реВрдкрдорд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░рд┐рд╕рдХреЗрдХрд╛ рдЫреМрдВ
рддрдкрд╛рдИрдВрд▓реЗ рдпреЛ рдкрдирд┐ рдпрд╛рдж рдЧрд░реНрдиреБрдкрд░реНрдЫ рдХрд┐ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЕрдиреБрдЧреНрд░рд╣ рдЕрд╡рдзрд┐ рд╣реЛ
рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдмреБрдЭреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдХреЗ рд╣реБрдиреНрдЫ рдЬрдм рдкреЛрдб рд╕рдорд╛рдкреНрдд рд╣реБрдиреНрдЫ, рдХреЗрд╡рд▓ рдирд┐рдореНрди рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН:
A1, B1 - рдЪреВрд▓реНрд╣рд╛рдХреЛ рдЕрд╡рд╕реНрдерд╛ рдмрд╛рд░реЗ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджреИ
A2 - рдкреНрд░рд╕реНрдерд╛рди SIGTERM
B2 - рдЕрдиреНрддрд┐рдо рдмрд┐рдиреНрджреБрд╣рд░реВрдмрд╛рдЯ рдкреЛрдб рд╣рдЯрд╛рдЙрдБрджреИ
B3 - рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджреИ (рдЕрдиреНрддрдмрд┐рдиреНрджреБрд╣рд░реВрдХреЛ рд╕реВрдЪреА рдкрд░рд┐рд╡рд░реНрддрди рднрдПрдХреЛ рдЫ)
B4 - iptables рдирд┐рдпрдорд╣рд░реВ рдЕрдкрдбреЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН: рдЕрдиреНрддрд┐рдо рдмрд┐рдиреНрджреБ рдкреЛрдб рдореЗрдЯрд╛рдЙрдиреБ рд░ SIGTERM рдкрдард╛рдЙрдиреБ рдХреНрд░рдорд┐рдХ рд░реВрдкрдорд╛ рд╣реБрдБрджреИрди, рддрд░ рд╕рдорд╛рдирд╛рдиреНрддрд░рдорд╛ред рд░ рдпрд╕ рддрдереНрдпрдХреЛ рдХрд╛рд░рдгрд▓реЗ рдХрд┐ Ingress рд▓реЗ рддреБрд░реБрдиреНрддреИ рдЕрдиреНрддрд┐рдо рдмрд┐рдиреНрджреБрд╣рд░реВрдХреЛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджреИрди, рдЧреНрд░рд╛рд╣рдХрд╣рд░реВрдмрд╛рдЯ рдирдпрд╛рдБ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкреЛрдбрдорд╛ рдкрдард╛рдЗрдиреЗрдЫ, рдЬрд╕рд▓реЗ рдкреЛрдб рд╕рдорд╛рдкреНрддрд┐рдХреЛ рд╕рдордпрдорд╛ 500 рддреНрд░реБрдЯрд┐ рдирд┐рдореНрддреНрдпрд╛рдЙрдиреЗрдЫред (рдпрд╕ рдореБрджреНрджрд╛рдорд╛ рдердк рд╡рд┐рд╕реНрддреГрдд рд╕рд╛рдордЧреНрд░реАрдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА
- рдЬрдбрд╛рди рдкрдард╛рдЙрдиреБрд╣реЛрд╕реН: рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реЗрдбрд░рд╣рд░реВрдорд╛ рдмрдиреНрдж рдЧрд░реНрдиреБрд╣реЛрд╕реН (рдпрджрд┐ рдпреЛ HTTP рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫ)ред
- рдпрджрд┐ рдХреЛрдбрдорд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдЧрд░реНрди рд╕рдореНрднрд╡ рдЫреИрди рднрдиреЗ, рдирд┐рдореНрди рд▓реЗрдЦрд▓реЗ рд╕рдорд╛рдзрд╛рдирдХреЛ рд╡рд░реНрдгрди рдЧрд░реНрджрдЫ рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЕрдиреБрдЧреНрд░рд╣рдкреВрд░реНрдг рдЕрд╡рдзрд┐рдХреЛ рдЕрдиреНрддреНрдп рд╕рдореНрдо рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреЗрдЫред
рд╕рд┐рджреНрдзрд╛рдиреНрддред рдХрд╕рд░реА NGINX рд░ PHP-FPM рд▓реЗ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рд╕рдорд╛рдкреНрдд рдЧрд░реНрджрдЫ
NGINX
NGINX рд╕рдБрдЧ рд╕реБрд░реБ рдЧрд░реМрдВ, рдХрд┐рдирдХрд┐ рд╕рдмреИ рдХреБрд░рд╛ рдпрд╕рдХреЛ рд╕рд╛рде рдХрдо рд╡рд╛ рдХрдо рд╕реНрдкрд╖реНрдЯ рдЫред рд╕рд┐рджреНрдзрд╛рдиреНрддрдорд╛ рдбреБрдмреНрджрд╛, рд╣рд╛рдореАрд▓реЗ рдерд╛рд╣рд╛ рдкрд╛рдЙрдБрдЫреМрдВ рдХрд┐ NGINX рдорд╛ рдПрдЙрдЯрд╛ рдорд╛рд╕реНрдЯрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд░ рдзреЗрд░реИ "рдХрд╛рдорджрд╛рд░рд╣рд░реВ" рдЫрдиреН - рдпреА рдЧреНрд░рд╛рд╣рдХрдХрд╛ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрдиреЗ рдмрд╛рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рд╣реБрдиреНред рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдЧрд░рд┐рдПрдХреЛ рдЫ: рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ nginx -s <SIGNAL>
рдпрд╛ рдд рдЫрд┐рдЯреЛ рд╢рдЯрдбрд╛рдЙрди рд╡рд╛ рдЧреНрд░реЗрд╕рдлреБрд▓ рд╢рдЯрдбрд╛рдЙрди рдореЛрдбрдорд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рд╕рдорд╛рдкреНрдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдЬрд╛рд╣рд┐рд░ рдЫ, рдпреЛ рдкрдЫрд┐рд▓реНрд▓реЛ рд╡рд┐рдХрд▓реНрдк рд╣реЛ рдЬреБрди рд╣рд╛рдореНрд░реЛ рдЪрд╛рд╕реЛ рд╣реЛред
рддреНрдпрд╕рдкрдЫрд┐ рд╕рдмреИ рд╕рд░рд▓ рдЫ: рддрдкрд╛рдИрдВ рдердкреНрди рдЖрд╡рд╢реНрдпрдХ рдЫ
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 рдХреЛ рдорд╛рдорд▓рд╛ рдорд╛, рддреНрдпрд╣рд╛рдБ рдЕрд▓рд┐ рдХрдо рдЬрд╛рдирдХрд╛рд░реА рдЫред рдпрджрд┐ рддрдкрд╛рдИрдВ рдзреНрдпрд╛рди рдХреЗрдиреНрджреНрд░рд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН
-
SIGINT
,SIGTERM
- рдЫрд┐рдЯреЛ рдмрдиреНрдж; -
SIGQUIT
- рд╕реБрдиреНрджрд░ рдмрдиреНрдж (рд╣рд╛рдореАрд▓рд╛рдИ рдХреЗ рдЪрд╛рд╣рд┐рдиреНрдЫ)ред
рдпрд╕ рдХрд╛рд░реНрдпрдорд╛ рдмрд╛рдБрдХреА рд╕рдВрдХреЗрддрд╣рд░реВ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджреИрди, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореА рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЫреЛрдбреНрдиреЗрдЫреМрдВред рд╕рд╣реА рддрд░рд┐рдХрд╛рд▓реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдорд╛рдкреНрдд рдЧрд░реНрди, рддрдкрд╛рдИрдВрд▓реЗ рдирд┐рдореНрди preStop рд╣реБрдХ рд▓реЗрдЦреНрди рдЖрд╡рд╢реНрдпрдХ рд╣реБрдиреЗрдЫ:
lifecycle:
preStop:
exec:
command:
- /bin/kill
- -SIGQUIT
- "1"
рдкрд╣рд┐рд▓реЛ рдирдЬрд░рдорд╛, рдпреЛ рд╕рдмреИ рджреБрдмреИ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдорд╛ рд╕реБрдиреНрджрд░ рдмрдиреНрдж рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рддрд░, рдХрд╛рдо рд╕реЛрдЪреЗрднрдиреНрджрд╛ рдЧрд╛рд╣реНрд░реЛ рдЫ ред рддрд▓ рджреБрдИрд╡рдЯрд╛ рдХреЗрд╕рд╣рд░реВ рдЫрдиреН рдЬрд╕рдорд╛ рдЖрдХрд░реНрд╖рдХ рдмрдиреНрджрд▓реЗ рдХрд╛рдо рдЧрд░реЗрди рд░ рддреИрдирд╛рддреАрдХреЛ рд╕рдордпрдорд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рдЫреЛрдЯреЛ рдЕрд╡рдзрд┐рдХреЛ рдЕрдиреБрдкрд▓рдмреНрдзрддрд╛рдХреЛ рдХрд╛рд░рдг рднрдпреЛред
рдЕрднреНрдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдЖрдХрд░реНрд╖рдХ рдмрдиреНрджрдХреЛ рд╕рд╛рде рд╕рдореНрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛рд╣рд░реВ
NGINX
рд╕рдмреИ рднрдиреНрджрд╛ рдкрд╣рд┐рд▓реЗ, рдпреЛ рд╕рдореНрдЭрдирд╛ рдЙрдкрдпреЛрдЧреА рдЫ: рдЖрджреЗрд╢ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд nginx -s quit
рддреНрдпрд╣рд╛рдБ рдПрдХ рдЕрд░реНрдХреЛ рдЪрд░рдг рд╣реЛ рдЬреБрди рдзреНрдпрд╛рди рджрд┐рди рд▓рд╛рдпрдХ рдЫред рд╣рд╛рдореАрд▓реЗ рдПрдЙрдЯрд╛ рд╕рдорд╕реНрдпрд╛рдХреЛ рд╕рд╛рдордирд╛ рдЧрд░реНрдпреМрдВ рдЬрд╣рд╛рдБ NGINX рд▓реЗ рдЕрдЭреИ рдкрдирд┐ SIGQUIT рд╕рдВрдХреЗрддрдХреЛ рд╕рдЯреНрдЯрд╛ SIGTERM рдкрдард╛рдЙрдиреЗрдЫ, рдЬрд╕рд▓реЗ рдЧрд░реНрджрд╛ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рд╕рд╣реА рд░реВрдкрдорд╛ рдкреВрд░рд╛ рд╣реБрди рд╕рдХреЗрдирдиреНред рдЙрд╕реНрддреИ рдШрдЯрдирд╛рд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рдиреНрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐,
рд╣рд╛рдореА рдпрд╕реНрддреЛ рд╕рдорд╕реНрдпрд╛ рджреЗрдЦреНрди рд╕рдХреНрдЫреМрдВ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдЗрдиреНрдЧреНрд░реЗрд╕рдорд╛ рд╣рд╛рдореАрд▓рд╛рдИ рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╣рд░реВрдмрд╛рдЯ:
рдкрд░рд┐рдирд┐рдпреЛрдЬрдирдХреЛ рд╕рдордпрдорд╛ рд╕реНрдерд┐рддрд┐ рдХреЛрдбрд╣рд░реВрдХреЛ рд╕реВрдЪрдХрд╣рд░реВ
рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рд╣рд╛рдореАрд▓реЗ Ingress рдмрд╛рдЯ рдорд╛рддреНрд░ 503 рддреНрд░реБрдЯрд┐ рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдЫреМрдВ: рдпрд╕рд▓реЗ 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 рддреНрд░реБрдЯрд┐ рдЕрдм рджреЗрдЦрд┐рдиреЗ рдЫреИрди рднрдиреНрдиреЗ рддрдереНрдп рджреНрд╡рд╛рд░рд╛ рдкреБрд╖реНрдЯрд┐ рд╣реБрдиреНрдЫред
рдпрджрд┐ рддрдкрд╛рдЗрдБ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛рдХреЛ рд╕рд╛рдордирд╛ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рдХрдиреНрдЯреЗрдирд░рдорд╛ рдХреБрди рд╕реНрдЯрдк рд╕рд┐рдЧреНрдирд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ рд░ рд╡рд╛рд╕реНрддрд╡рдорд╛ рдкреНрд░рд┐рд╕реНрдЯрдк рд╣реБрдХ рдХрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ рднрдиреЗрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдпрд╕рд▓реЗ рдЕрд░реНрде рджрд┐рдиреНрдЫред рдпреЛ рдПрдХрджрдо рд╕рдореНрднрд╡ рдЫ рдХрд┐ рдХрд╛рд░рдг рдпреЛ рдареАрдХ рдЫред
PHP-FPM... рд░ рдердк
PHP-FPM рдХреЛ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдорд╛рдореВрд▓реА рддрд░рд┐рдХрд╛рдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫ: рдпрд╕рд▓реЗ рдмрд╛рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдкреВрд░рд╛ рд╣реБрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрджреИрди, рдпрд╕рд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╕рдорд╛рдкреНрдд рдЧрд░реНрджрдЫ, рдпрд╕реИрд▓реЗ рддреИрдирд╛рддреА рд░ рдЕрдиреНрдп рдХрд╛рд░реНрдпрд╣рд░реВ рдЧрд░реНрджрд╛ 502 рддреНрд░реБрдЯрд┐рд╣рд░реВ рд╣реБрдиреНрдЫрдиреНред 2005 рджреЗрдЦрд┐ bugs.php.net рдорд╛ рдзреЗрд░реИ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯрд╣рд░реВ рдЫрдиреН (рдЬрд╕реНрддреИ
рдпреЛ рд╕реНрдкрд╖реНрдЯ рдЧрд░реНрди рд▓рд╛рдпрдХ рдЫ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдЖрдлреИрдорд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдорд╛ рдХрдо рд╡рд╛ рдзреЗрд░реИ рд╣рджрд╕рдореНрдо рдирд┐рд░реНрднрд░ рд╣реБрди рд╕рдХреНрдЫ рд░ рдЖрдлреИрд▓рд╛рдИ рдкреНрд░рдХрдЯ рдирд╣реБрди рд╕рдХреНрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдирд┐рдЧрд░рд╛рдиреАрдорд╛ред рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рдХреЛ рд╕рд╛рдордирд╛ рдЧрд░реНрдиреБрднрдпреЛ рднрдиреЗ, рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рдорд╛рдзрд╛рди рдкрд╣рд┐рд▓реЗ рджрд┐рдорд╛рдЧрдорд╛ рдЖрдЙрдБрдЫ: рдПрдХ preStop рд╣реБрдХ рдердкреНрдиреБрд╣реЛрд╕реН sleep(30)
ред рдпрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдкрд╣рд┐рд▓реЗрдХрд╛ рд╕рдмреИ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкреВрд░рд╛ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреЗрдЫ (рд░ рд╣рд╛рдореА рдкреЛрдбрдмрд╛рдЯ рдирдпрд╛рдБрд╣рд░реВ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрджреИрдиреМрдВ рдкрд╣рд┐рд▓реЗ рдиреИ рд╕рдХреНрд╖рдо рдЯрд░реНрдорд┐рдиреЗрдЯрд┐рдЩреН), рд░ 30 рд╕реЗрдХреЗрдиреНрдб рдкрдЫрд┐ рдкреЛрдб рдЖрдлреИ рдПрдХ рд╕рдВрдХреЗрдд рд╕рдВрдЧ рд╕рдорд╛рдкреНрдд рд╣реБрдиреЗрдЫ SIGTERM
.
рдпрд╕рд▓реЗ рддреНрдпрд╕рдмрд╛рдЯ рд╣рдЯрд╛рдЙрдБрдЫ lifecycle
рдХрдиреНрдЯреЗрдирд░рдХреЛ рд▓рд╛рдЧрд┐ рдпреЛ рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:
lifecycle:
preStop:
exec:
command:
- /bin/sleep
- "30"
рддрд░, рейреж рд╕реЗрдХреЗрдиреНрдбрдХреЛ рдХрд╛рд░рдгрд▓реЗ sleep
рд╣рд╛рдореА рдХрдбрд╛ рд╣рд╛рдореА рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ рд╕рдордп рдмрдврд╛рдЙрдиреЗрдЫреМрдВ, рдХрд┐рдирдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреЛрдб рд╕рдорд╛рдкреНрдд рд╣реБрдиреЗрдЫ рдиреНрдпреВрдирддрдо 30 рд╕реЗрдХреЗрдиреНрдб, рдЬреБрди рдЦрд░рд╛рдм рдЫред рдпрд╕ рдмрд╛рд░реЗ рдХреЗ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ?
рдЖрд╡реЗрджрдирдХреЛ рдкреНрд░рддреНрдпрдХреНрд╖ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рд▓рд╛рдЧрд┐ рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдкрдХреНрд╖рдорд╛ рдлрд░реНрдХреМрдВред рд╣рд╛рдореНрд░реЛ рдорд╛рдорд▓рд╛ рдорд╛ рдпреЛ рдЫ PHP-FPMрдХреБрди рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдпрд╕рдХреЛ рдмрд╛рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░реНрджреИрди: рдорд╛рд╕реНрдЯрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рддреБрд░реБрдиреНрддреИ рд╕рдорд╛рдкреНрдд рд╣реБрдиреНрдЫред рддрдкрд╛рдИрдВ рдирд┐рд░реНрджреЗрд╢рди рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдпреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ process_control_timeout
, рдЬрд╕рд▓реЗ рдорд╛рд╕реНрдЯрд░рдмрд╛рдЯ рд╕рдЩреНрдХреЗрддрд╣рд░реВрдХреЛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдЧрд░реНрди рдмрд╛рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдордп рд╕реАрдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрджрдЫред рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ 20 рд╕реЗрдХреЗрдиреНрдбрдорд╛ рдорд╛рди рд╕реЗрдЯ рдЧрд░реНрдиреБрднрдпреЛ рднрдиреЗ, рдпрд╕рд▓реЗ рдХрдиреНрдЯреЗрдирд░рдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХрд╛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░рд╢реНрдирд╣рд░реВрд▓рд╛рдИ рдХрднрд░ рдЧрд░реНрдиреЗрдЫ рд░ рдорд╛рд╕реНрдЯрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд░рд╛ рднрдПрдкрдЫрд┐ рд░реЛрдХрд┐рдиреЗрдЫред
рдпрд╕ рдЬреНрдЮрд╛рдирдХреЛ рд╕рд╛рде, рд╣рд╛рдореНрд░реЛ рдЕрдиреНрддрд┐рдо рд╕рдорд╕реНрдпрд╛рдорд╛ рдлрд░реНрдХреМрдВред рдЙрд▓реНрд▓реЗрдЦ рдЧрд░рд┐рдПрдЭреИрдВ, Kubernetes рдПрдХ рдореЛрдиреЛрд▓рд┐рдерд┐рдХ рдкреНрд▓реЗрдЯрдлрд░реНрдо рд╣реЛрдЗрди: рдпрд╕рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдШрдЯрдХрд╣рд░реВ рдмреАрдЪрдХреЛ рд╕рдЮреНрдЪрд╛рд░рд▓реЗ рдХреЗрд╣реА рд╕рдордп рд▓рд┐рдиреНрдЫред рдпреЛ рд╡рд┐рд╢реЗрд╖ рдЧрд░реА рд╕рддреНрдп рд╣реЛ рдЬрдм рд╣рд╛рдореА 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 рдорд╛ рдорд╛рддреНрд░ рд▓рд╛рдЧреВ рд╣реБрдБрджреИрдиред рдЕрдиреНрдп рднрд╛рд╖рд╛рд╣рд░реВ/рдврд╛рдБрдЪрд╛рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛ рд╕рдорд╛рди рд╕реНрдерд┐рддрд┐ рдПрдХ рд╡рд╛ рдЕрд░реНрдХреЛ рд░реВрдкрдорд╛ рдЙрддреНрдкрдиреНрди рд╣реБрди рд╕рдХреНрдЫред рдпрджрд┐ рддрдкрд╛рдЗрдБ рдЕрдиреНрдп рддрд░рд┐рдХрд╛рд╣рд░реВрдорд╛ рд╕реБрдиреНрджрд░ рдмрдиреНрджрд▓рд╛рдИ рдареАрдХ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрди - рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдХреЛрдб рдкреБрди: рд▓реЗрдЦреЗрд░ рддрд╛рдХрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рд╕рдорд╛рдкреНрддрд┐ рд╕рдВрдХреЗрддрд╣рд░реВ рд╕рд╣реА рд░реВрдкрдорд╛ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрджрдЫ - рддрдкрд╛рдЗрдБ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рд╡рд┐рдзрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдпреЛ рд╕рдмреИрднрдиреНрджрд╛ рд╕реБрдиреНрджрд░ рдирд╣реБрди рд╕рдХреНрдЫ, рддрд░ рдпреЛ рдХрд╛рдо рдЧрд░реНрджрдЫред
рдЕрднреНрдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдкреЛрдбрдХреЛ рд╕рдЮреНрдЪрд╛рд▓рди рдЬрд╛рдБрдЪ рдЧрд░реНрди рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг
рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг рдХрдиреНрдЯреЗрдирд░рд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рднрдиреЗрд░ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреЗ рддрд░рд┐рдХрд╛рд╣рд░реВ рдордзреНрдпреЗ рдПрдХ рд╣реЛ, рдХрд┐рдирднрдиреЗ рдпреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓реЗ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рд╕рд╛рдЗрдЯ рднреНрд░рдордг рдЧрд░реНрджрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рдбрд╛рдИ рдЕрд╡рд╕реНрдерд╛рд╣рд░реВрдХреЛ рдирдЬрд┐рдХ рд▓реНрдпрд╛рдЙрдБрдЫред рдорд╛рдерд┐рдХрд╛ рд╕рд┐рдлрд╛рд░рд┐рд╕рд╣рд░реВ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрди, рддрдкрд╛рдИрдВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ
рдпрд╣рд╛рдБ рд╕рдмреИрднрдиреНрджрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдХреБрд░рд╛ рд╣реЛ рдЪрд░рдгрдмрджреНрдз рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдирдпрд╛рдБ рдлрд┐рдХреНрд╕ рдердкреЗрдкрдЫрд┐, рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН рд░ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН рдпрджрд┐ рдЕрдиреНрддрд┐рдо рд░рдирдХреЛ рддреБрд▓рдирд╛рдорд╛ рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рднрдПрдХрд╛ рдЫрдиреНред рдЕрдиреНрдпрдерд╛, рдЕрдкреНрд░рднрд╛рд╡реА рд╕рдорд╛рдзрд╛рдирд╣рд░реВ рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрди рдЧрд╛рд╣реНрд░реЛ рд╣реБрдиреЗрдЫ, рд░ рд▓рд╛рдореЛ рд╕рдордпрд╕рдореНрдо рдпрд╕рд▓реЗ рд╣рд╛рдирд┐ рдорд╛рддреНрд░ рдЧрд░реНрди рд╕рдХреНрдЫ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рддреИрдирд╛рддреА рд╕рдордп рдмрдврд╛рдЙрдиреБрд╣реЛрд╕реН)ред
рдЕрд░реНрдХреЛ рдЙрдкрджреНрд░рд╡ рднрдиреЗрдХреЛ рдпрд╕рдХреЛ рд╕рдорд╛рдкреНрддрд┐рдХреЛ рд╕рдордпрдорд╛ рдХрдиреНрдЯреЗрдирд░ рд▓рдЧрд╣рд░реВ рд╣реЗрд░реНрдиреБ рд╣реЛред рддреНрдпрд╣рд╛рдБ рдЧреНрд░реЗрд╕рдлреБрд▓ рдмрдиреНрджрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рд░реЗрдХрд░реНрдб рдЧрд░рд┐рдПрдХреЛ рдЫ? рдХреЗ рддреНрдпрд╣рд╛рдБ рдЕрдиреНрдп рд╕реНрд░реЛрддрд╣рд░реВ рдкрд╣реБрдБрдЪ рдЧрд░реНрджрд╛ рд▓рдЧрд╣рд░реВрдорд╛ рдХреБрдиреИ рддреНрд░реБрдЯрд┐рд╣рд░реВ рдЫрдиреН (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдЫрд┐рдореЗрдХреА PHP-FPM рдХрдиреНрдЯреЗрдирд░рдорд╛)? рдПрдкреНрд▓рд┐рдХреЗрд╕рдирдорд╛ рдиреИ рддреНрд░реБрдЯрд┐рд╣рд░реВ рдЫрдиреН (рдПрдирдЬреАрдЖрдИрдПрдирдПрдХреНрд╕рд╕рдБрдЧ рдорд╛рдерд┐ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЕрд╡рд╕реНрдерд╛рдорд╛)? рдорд▓рд╛рдИ рдЖрд╢рд╛ рдЫ рдХрд┐ рдпрд╕ рд▓реЗрдЦрдмрд╛рдЯ рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рдЬрд╛рдирдХрд╛рд░реАрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХрдиреНрдЯреЗрдирд░рдХреЛ рд╕рдорд╛рдкреНрддрд┐рдХреЛ рдХреНрд░рдордорд╛ рдХреЗ рд╣реБрдиреНрдЫ рднрдиреЗрд░ рдЕрдЭ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдмреБрдЭреНрди рдорджреНрджрдд рдЧрд░реНрдиреЗрдЫред
рддреНрдпрд╕реИрд▓реЗ, рдкрд╣рд┐рд▓реЛ рдЯреЗрд╕реНрдЯ рд░рди рдмрд┐рдирд╛ рднрдПрдХреЛ рдерд┐рдпреЛ lifecycle
рд░ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рд╕рд░реНрднрд░рдХрд╛ рд▓рд╛рдЧрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рдмрд┐рдирд╛ (process_control_timeout
PHP-FPM рдорд╛)ред рдпрд╕ рдкрд░реАрдХреНрд╖рдгрдХреЛ рдЙрджреНрджреЗрд╢реНрдп рддреНрд░реБрдЯрд┐рд╣рд░реВрдХреЛ рдЕрдиреБрдорд╛рдирд┐рдд рд╕рдВрдЦреНрдпрд╛ (рд░ рддреНрдпрд╣рд╛рдБ рдХреБрдиреИ рдЫ рдХрд┐ рдЫреИрди) рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрдиреБ рдерд┐рдпреЛред рд╕рд╛рдереИ, рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реАрдмрд╛рдЯ, рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдерд╛рд╣рд╛ рд╣реБрдиреБрдкрд░реНрджрдЫ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреЛрдбрдХреЛ рд▓рд╛рдЧрд┐ рдФрд╕рдд рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ рд╕рдордп рд▓рдЧрднрдЧ 5-10 рд╕реЗрдХреЗрдиреНрдб рдерд┐рдпреЛ рдЬрдмрд╕рдореНрдо рдпреЛ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рддрдпрд╛рд░ рд╣реБрдБрджреИрдиред рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рд╣реБрдиреН:
Yandex.Tank рд╕реВрдЪрдирд╛ рдкреНрдпрд╛рдирд▓рд▓реЗ 502 рддреНрд░реБрдЯрд┐рд╣рд░реВрдХреЛ рд╕реНрдкрд╛рдЗрдХ рджреЗрдЦрд╛рдЙрдБрдЫ, рдЬреБрди рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯрдХреЛ рд╕рдордпрдорд╛ рднрдПрдХреЛ рдерд┐рдпреЛ рд░ рдФрд╕рддрдорд╛ 5 рд╕реЗрдХреЗрдиреНрдбрд╕рдореНрдо рдЪрд▓реЗрдХреЛ рдерд┐рдпреЛред рд╕рдореНрднрд╡рддрдГ рдпреЛ рдХрд┐рдирднрдиреЗ рдкреБрд░рд╛рдиреЛ рдкреЛрдбрдорд╛ рдЕрд╡рд╕реНрдерд┐рдд рдЕрдиреБрд░реЛрдзрд╣рд░реВ рд╕рдорд╛рдкреНрдд рдЧрд░рд┐рдБрджреИ рдерд┐рдпреЛ рдЬрдм рдпреЛ рд╕рдорд╛рдкреНрдд рднрдЗрд░рд╣реЗрдХреЛ рдерд┐рдпреЛред рдпрд╕ рдкрдЫрд┐, 503 рддреНрд░реБрдЯрд┐рд╣рд░реВ рджреЗрдЦрд╛ рдкрд░реНрдпреЛ, рдЬреБрди рд░реЛрдХрд┐рдПрдХреЛ NGINX рдХрдиреНрдЯреЗрдирд░рдХреЛ рдкрд░рд┐рдгрд╛рдо рдерд┐рдпреЛ, рдЬрд╕рд▓реЗ рдмреНрдпрд╛рдХрдЗрдиреНрдбрдХреЛ рдХрд╛рд░рдгрд▓реЗ рдЬрдбрд╛рдирд╣рд░реВ рдкрдирд┐ рдЫреЛрдбреНрдпреЛ (рдЬрд╕рд▓реЗ рдпрд╕рдорд╛ рдЬрдбрд╛рди рд╣реБрдирдмрд╛рдЯ рдЗрдиреНрдЧреНрд░реЗрд╕рд▓рд╛рдИ рд░реЛрдХреЗрдХреЛ рдерд┐рдпреЛ)ред
рдХрд╕рд░реА рд╣реЗрд░реМрдВ process_control_timeout
PHP-FPM рдорд╛ рд╣рд╛рдореАрд▓рд╛рдИ рдмрд╛рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдкреВрд░рд╛ рд╣реБрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрди рдорджреНрджрдд рдЧрд░реНрдиреЗрдЫ, рдЕрд░реНрдерд╛рддреНред рдпрд╕реНрддрд╛ рддреНрд░реБрдЯрд┐рд╣рд░реВ рд╕рдЪреНрдпрд╛рдЙрдиреБрд╣реЛрд╕реНред рдпреЛ рдирд┐рд░реНрджреЗрд╢рди рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкреБрди: рддреИрдирд╛рддреА рдЧрд░реНрдиреБрд╣реЛрд╕реН:
500th рддреИрдирд╛рддреА рдХреЛ рд╕рдордпрдорд╛ рдХреБрдиреИ рддреНрд░реБрдЯрд┐рд╣рд░реВ рдЫреИрдирдиреН! рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╕рдлрд▓ рдЫ, рдЖрдХрд░реНрд╖рдХ рдмрдиреНрдж рдХрд╛рдо рдЧрд░реНрджрдЫред
рдЬреЗ рд╣реЛрд╕реН, рдпреЛ рдЗрдиреНрдЧреНрд░реЗрд╕ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдХреЛ рд╕рдорд╕реНрдпрд╛рд▓рд╛рдИ рд╕рдореНрдЭрди рд▓рд╛рдпрдХ рдЫ, рддреНрд░реБрдЯрд┐рд╣рд░реВрдХреЛ рд╕рд╛рдиреЛ рдкреНрд░рддрд┐рд╢рдд рдЬрд╕рдорд╛ рд╣рд╛рдореАрд▓реЗ рд╕рдордп рдврд┐рд▓рд╛рдЗрдХреЛ рдХрд╛рд░рдг рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рддрд┐рдиреАрд╣рд░реВрдмрд╛рдЯ рдмрдЪреНрдирдХреЛ рд▓рд╛рдЧрд┐, рд╕рдмреИ рдмрд╛рдБрдХреА рд░рд╣реЗрдХреЛ рд╕рдВрд░рдЪрдирд╛ рдердкреНрди рд╣реЛ sleep
рд░ рддреИрдирд╛рддреА рджреЛрд╣реЛрд░реНрдпрд╛рдЙрдиреБрд╣реЛрд╕реНред рдпрджреНрдпрдкрд┐, рд╣рд╛рдореНрд░реЛ рд╡рд┐рд╢реЗрд╖ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдХреБрдиреИ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рджреЗрдЦрд┐рдПрди (рдлреЗрд░рд┐, рдХреБрдиреИ рддреНрд░реБрдЯрд┐рд╣рд░реВ)ред
рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛
рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рд╕рдорд╛рдкреНрдд рдЧрд░реНрди, рд╣рд╛рдореА рдЕрдиреБрдкреНрд░рдпреЛрдЧрдмрд╛рдЯ рдирд┐рдореНрди рд╡реНрдпрд╡рд╣рд╛рд░рдХреЛ рдЕрдкреЗрдХреНрд╖рд╛ рдЧрд░реНрдЫреМрдВ:
- рдХреЗрд╣реА рд╕реЗрдХреЗрдиреНрдб рдкрд░реНрдЦрдиреБрд╣реЛрд╕реН рд░ рддреНрдпрд╕рдкрдЫрд┐ рдирдпрд╛рдБ рдЬрдбрд╛рдирд╣рд░реВ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрди рд░реЛрдХреНрдиреБрд╣реЛрд╕реНред
- рд╕рдмреИ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкреВрд░рд╛ рд╣реБрдирдХрд╛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрдиреБрд╣реЛрд╕реН рд░ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирдЧрд░реНрдиреЗ рд╕рдмреИ Keepalive рдЬрдбрд╛рдирд╣рд░реВ рдмрдиреНрдж рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- рддрдкрд╛рдЗрдБрдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдорд╛рдкреНрдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред
рдпрджреНрдпрдкрд┐, рд╕рдмреИ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрд▓реЗ рдпрд╕рд░реА рдХрд╛рдо рдЧрд░реНрди рд╕рдХреНрджреИрдирдиреНред Kubernetes рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдорд╛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реЛ:
- рдкреНрд░рд┐-рд╕реНрдЯрдк рд╣реБрдХ рдердкреНрджреИ рдЬреБрди рдХреЗрд╣рд┐ рд╕реЗрдХреЗрдиреНрдб рдкрд░реНрдЦрдиреЗрдЫ;
- рдЙрдкрдпреБрдХреНрдд рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореНрд░реЛ рдмреНрдпрд╛рдХрдЗрдиреНрдбрдХреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓ рдЕрдзреНрдпрдпрди рдЧрд░реНрджреИред
NT рдпрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╕рдорд╕реНрдпрд╛рд▓рд╛рдИ рдЕрдЭ рд╡реНрдпрд╛рдкрдХ рд░реВрдкрдорд╛ рд╣реЗрд░реНрди рд░ рдПрдХрд▓ рдкреЛрдб рд╡рд╛ рдХрдиреНрдЯреЗрдирд░рдорд╛ рдлреЛрдХрд╕ рдирдЧрд░реА рд╕рдореНрдкреВрд░реНрдг рдкреВрд░реНрд╡рд╛рдзрд╛рд░рд▓рд╛рдИ рд╕рдордЧреНрд░ рд░реВрдкрдорд╛ рд╣реЗрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред
рдкрд░реАрдХреНрд╖рдг рдЙрдкрдХрд░рдгрдХреЛ рд░реВрдкрдорд╛, рддрдкрд╛рдЗрдБ рдХреБрдиреИ рдкрдирд┐ рдирд┐рдЧрд░рд╛рдиреА рдкреНрд░рдгрд╛рд▓реАрд╕рдБрдЧ рд╕рдВрдпреЛрдЬрдирдорд╛ Yandex.Tank рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ (рд╣рд╛рдореНрд░реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдбреЗрдЯрд╛ рдкрд░реАрдХреНрд╖рдгрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕ рдмреНрдпрд╛рдХрдЗрдиреНрдбрдХреЛ рд╕рд╛рде рдЧреНрд░рд╛рдлрд╛рдирд╛рдмрд╛рдЯ рд▓рд┐рдЗрдПрдХреЛ рдерд┐рдпреЛ)ред рдЧреНрд░реЗрд╕рдлреБрд▓ рд╢рдЯрдбрд╛рдЙрдирдХрд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдмреЗрдиреНрдЪрдорд╛рд░реНрдХрд▓реЗ рдЙрддреНрдкрдиреНрди рдЧрд░реНрди рд╕рдХреНрдиреЗ рднрд╛рд░реА рднрд╛рд░рд╣рд░реВ рдЕрдиреНрддрд░реНрдЧрдд рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рджреЗрдЦрд┐рдиреНрдЫрдиреН, рд░ рдЕрдиреБрдЧрдордирд▓реЗ рдкрд░реАрдХреНрд╖рдгрдХреЛ рд╕рдордпрдорд╛ рд╡рд╛ рдкрдЫрд┐рдХреЛ рдЕрд╡рд╕реНрдерд╛рд▓рд╛рдИ рд╡рд┐рд╕реНрддреГрдд рд░реВрдкрдорд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНрджрдЫред
рд▓реЗрдЦрдорд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдХреЛ рдЬрд╡рд╛рдлрдорд╛: рдпреЛ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдЫ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рд░ рд╕рдорд╛рдзрд╛рдирд╣рд░реВ рдпрд╣рд╛рдБ NGINX Ingress рдХреЛ рд╕рдореНрдмрдиреНрдзрдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫред рдЕрдиреНрдп рдХреЗрд╕рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐, рддреНрдпрд╣рд╛рдБ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рдирд╣рд░реВ рдЫрдиреН, рдЬреБрди рд╣рд╛рдореА рд╢реНрд░реГрдВрдЦрд▓рд╛рдХреЛ рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░реАрд╣рд░реВрдорд╛ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред
PS
K8s рд╕реБрдЭрд╛рд╡ рд░ рдЪрд╛рд▓ рд╢реНрд░реГрдВрдЦрд▓рд╛рдмрд╛рдЯ рдЕрдиреНрдп:
- ┬л
NGINX рдкреНрд░рд╡реЗрд╢рдорд╛ рдЕрдиреБрдХреВрд▓рди рддреНрд░реБрдЯрд┐ рдкреГрд╖реНрдард╣рд░реВ ┬╗; - ┬л
рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧрдорд╛ рдиреЛрдб рдЖрд╡рдВрдЯрди рд░ рд▓реЛрдбрд╣рд░реВ рдмрд╛рд░реЗ ┬╗; - ┬л
dev рд╕рд╛рдЗрдЯрд╣рд░реВрдорд╛ рдкрд╣реБрдБрдЪ ┬╗; - ┬л
рдареВрд▓рд╛ рдбрд╛рдЯрд╛рдмреЗрд╕рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдмреБрдЯрд╕реНрдЯреНрд░реНрдпрд╛рдкрдХреЛ рдЧрддрд┐ рдмрдврд╛рдЙрдБрджреИ "ред
рд╕реНрд░реЛрдд: www.habr.com