Gunicorn: рдХреЛрдИ рдирд┐рдХрд╛рд╕ рд╕рдВрдХреЗрдд рди рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж "рдмреВрдЯрд┐рдВрдЧ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛" рдЕрд╕реАрдо рд░реВрдк рд╕реЗ рд▓реВрдкрд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 11 рджрд┐рд╕ре░ 2017  ┬╖  65рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: benoitc/gunicorn

рдореИрдВ рдбреЙрдХрд░ рдкрд░ рдЧрдирд┐рдХреЛрд░реНрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрддреНрдкрд╛рджрди рдЫрд╡рд┐ рд╕реНрдерд╛рдиреАрдп рдЫрд╡рд┐ рдХреЗ рд╕рдорд╛рди рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЙрддреНрдкрд╛рджрди рдбреЙрдХрд░ рдЗрдВрдЬрди рдкрд░ рдпрд╣ рдЕрдЬреАрдм рд╡реНрдпрд╡рд╣рд╛рд░ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ:

ml-server_1     | [2017-12-11 13:18:50 +0000] [1] [INFO] Starting gunicorn 19.7.1
ml-server_1     | [2017-12-11 13:18:50 +0000] [1] [DEBUG] Arbiter booted
ml-server_1     | [2017-12-11 13:18:50 +0000] [1] [INFO] Listening at: http://0.0.0.0:80 (1)
ml-server_1     | [2017-12-11 13:18:50 +0000] [1] [INFO] Using worker: sync
ml-server_1     | [2017-12-11 13:18:50 +0000] [8] [INFO] Booting worker with pid: 8
ml-server_1     | [2017-12-11 13:18:50 +0000] [1] [DEBUG] 1 workers
ml-server_1     | Using TensorFlow backend.
ml-server_1     | [2017-12-11 13:18:54 +0000] [11] [INFO] Booting worker with pid: 11
ml-server_1     | Using TensorFlow backend.
ml-server_1     | [2017-12-11 13:18:58 +0000] [14] [INFO] Booting worker with pid: 14
ml-server_1     | Using TensorFlow backend.
ml-server_1     | [2017-12-11 13:19:02 +0000] [17] [INFO] Booting worker with pid: 17
ml-server_1     | Using TensorFlow backend.

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдпрд╛ рдирд┐рдХрд╛рд╕ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рд╣рд░ 4-5 рд╕реЗрдХрдВрдб рдореЗрдВ рдЧрдирд┐рдХреЛрд░реНрди рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рдмреВрдЯ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рддрдХ рдЕрдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд▓ рддрдХ рдЬрд╛рд░реА рд░рд╣рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдХреЛрдИ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ stderr/stdout рдореЗрдВ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдордзреНрдпрд╕реНрде рдХреЗ рд▓рд┐рдП рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рдЕрд╕реАрдорд┐рдд рд░реВрдк рд╕реЗ рдЬрдиреНрдо рджреЗ рд╕рдХрддрд╛ рд╣реИ?

рдЪреВрдВрдХрд┐ рд╡реЗ рдПрдХ рд╣реА рдбреЙрдХрдЯрд░ рдЫрд╡рд┐ рд╣реИрдВ, рд╡реЗ рдмрд┐рд▓реНрдХреБрд▓ рдЙрд╕реА рдХреЛрдб рдкрд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ, рдмрд┐рд▓реНрдХреБрд▓ рдЙрд╕реА рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд▓рдЭрди рдореЗрдВ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдмрдЧ?) рдХрд┐рд╕реА рднреА рдорджрдж рдХреА рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХреА!

Improvement help wanted

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдмрд╕ рдПрдХ рдЕрджреНрдпрддрди, рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕реНрдореГрддрд┐ рддреНрд░реБрдЯрд┐ рдереА рдФрд░ рд╕реНрдореГрддрд┐ рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛрдиреЗ рдкрд░ рдареАрдХ рдХреА рдЧрдИ рдереАред

рд╕рднреА 65 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ssh -рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдбрд╛рд▓рдиреЗ рд╕реЗ рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА:

Illegal instruction (core dumped)

рд╢рд╛рдпрдж рдЧрдирд┐рдХреЛрд░реНрди рдХреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдирд┐рдЧрд▓рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕рддрд╣ рдкрд░ рд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП? рдпрдХреАрди рдирд╣реАрдВ рд╣реИ, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдмрдврд╝рд╛рдКрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдФрд░ рдХреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ!

рд╕рдорд╕реНрдпрд╛ рдХреА рд╕реВрдЪрдирд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдпрджрд┐ рдЖрдк рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд╣рд╛рдБ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛ред

рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдкрд░ рд╢рд╛рдпрдж рд╣рдо рд▓реЙрдЧрд┐рдВрдЧ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдорддреМрд░ рдкрд░, рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕реНрд╡рдпрдВ рд▓реЙрдЧ рдЗрди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рдмрд╣реБрдд рдЕрдЪрд╛рдирдХ рдорд╛рд░рд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдХреЛрдИ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ!

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдкрд╛рд╕реА рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЕрднреА рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рд╣реИ: https://github.com/explosion/spaCy/issues/1589

рд╡реИрд╕реЗ рднреА, рдпрд╣ SIGILL рдХрд╛ рдХрд╛рд░рдг рдмрди рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ strace рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ:

--- SIGILL {si_signo=SIGILL, si_code=ILL_ILLOPN, si_addr=0x7ff48bbe6cea} ---
+++ killed by SIGILL (core dumped) +++
Illegal instruction (core dumped)

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЧрдирд┐рдХреЛрд░реНрди рдЗрд╕рдХреА рдкрд╣рдЪрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рддреНрд░реБрдЯрд┐ рд▓реЙрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди tbh рдореБрдЭреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХрдо рдкрддрд╛ рд╣реИ рдХрд┐ рдирд┐рдХрд╛рд╕ рдХреЛрдб рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ!

рдХреБрдЫ рдирд┐рдХрд╛рд╕ рдХреЛрдбреЛрдВ рдХреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рд╢реЗрд╖ рдЕрд░реНрде рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рд╣рдо рд╢рд╛рдпрдж рдЙрдиреНрд╣реЗрдВ рд▓реЙрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
http://tldp.org/LDP/abs/html/exitcodes.html

рдмрдврд╝рд┐рдпрд╛ рд╣реИ! рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдпрджрд┐ рдирд┐рдХрд╛рд╕ рдХреЛрдб рдПрдХ рдЖрд░рдХреНрд╖рд┐рдд рдирд┐рдХрд╛рд╕ рдХреЛрдб рдирд╣реАрдВ рд╣реИ (рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рдорд╛рдорд▓рд╛), рддреЛ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЗрд╕реЗ рд▓реЙрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ) рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛ рд░рд╣рд╛ рд╣реИ

рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕реА рддрд░рд╣ рдХрд╛ рдореБрджреНрджрд╛ рд╣реИ, рдЬрдм рдореИрдВ http рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдЧрдирд┐рдХреЛрд░реНрди рд╣рдореЗрд╢рд╛ рдирдП рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдмреВрдЯ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореБрдЭреЗ рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИ, рдпрд╣ рд╣рдореЗрд╢рд╛ рдирдП рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рд░реАрдмреВрдЯ рдХрд░рддрд╛ рд╣реИред рджреЛ http рдЕрдиреБрд░реЛрдзреЛрдВ рд╕реЗ рд╕реНрдЯреНрд░реЗрд╕ рд▓реЙрдЧ:

select(4, [3], [], [], {1, 0})          = 0 (Timeout)
fstat(6, {st_mode=S_IFREG|01, st_size=0, ...}) = 0
fstat(7, {st_mode=S_IFREG|01, st_size=0, ...}) = 0
fstat(9, {st_mode=S_IFREG, st_size=0, ...}) = 0
fstat(8, {st_mode=S_IFREG|01, st_size=0, ...}) = 0
select(4, [3], [], [], {1, 0})          = ? ERESTARTNOHAND (To be restarted if no handler)
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_KILLED, si_pid=510, si_uid=0, si_status=SIGSEGV, si_utime=160, si_stime=32} ---
getpid()                                = 495
rt_sigreturn({mask=[]})                 = -1 EINTR (Interrupted system call)
wait4(-1, [{WIFSIGNALED(s) && WTERMSIG(s) == SIGSEGV && WCOREDUMP(s)}], WNOHANG, NULL) = 510
lseek(8, 0, SEEK_CUR)                   = 0
close(8)                                = 0
wait4(-1, 0x7ffd455ad844, WNOHANG, NULL) = 0
write(4, ".", 1)                        = 1
select(4, [3], [], [], {0, 840340})     = 1 (in [3], left {0, 840338})
read(3, ".", 1)                         = 1
read(3, 0x7f2682025fa0, 1)              = -1 EAGAIN (Resource temporarily unavailable)
fstat(6, {st_mode=S_IFREG|01, st_size=0, ...}) = 0
fstat(7, {st_mode=S_IFREG|01, st_size=0, ...}) = 0
fstat(9, {st_mode=S_IFREG, st_size=0, ...}) = 0
umask(0)                                = 022
getpid()                                = 495
open("/tmp/wgunicorn-q4aa72u7", O_RDWR|O_CREAT|O_EXCL|O_NOFOLLOW|O_CLOEXEC, 0600) = 8
fcntl(8, F_SETFD, FD_CLOEXEC)           = 0
chown("/tmp/wgunicorn-q4aa72u7", 0, 0)  = 0
umask(022)                              = 0
unlink("/tmp/wgunicorn-q4aa72u7")       = 0
fstat(8, {st_mode=S_IFREG|0600, st_size=0, ...}) = 0
ioctl(8, TIOCGWINSZ, 0x7ffd455b8e50)    = -1 ENOTTY (Not a tty)
lseek(8, 0, SEEK_CUR)                   = 0
lseek(8, 0, SEEK_CUR)                   = 0
rt_sigprocmask(SIG_BLOCK, ~[], [], 8)   = 0
fork()                                  = 558
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
select(0, NULL, NULL, NULL, {0, 37381}[2017-12-28 17:50:23 +0000] [558] [INFO] Booting worker with pid: 558
) = 0 (Timeout)
select(4, [3], [], [], {1, 0}loading test-eu-ovh settings
)          = 0 (Timeout)
fstat(6, {st_mode=S_IFREG, st_size=0, ...}) = 0
fstat(7, {st_mode=S_IFREG, st_size=0, ...}) = 0
fstat(9, {st_mode=S_IFREG|01, st_size=0, ...}) = 0
fstat(8, {st_mode=S_IFREG|0600, st_size=0, ...}) = 0
select(4, [3], [], [], {1, 0}
)          = 0 (Timeout)
fstat(6, {st_mode=S_IFREG, st_size=0, ...}) = 0
fstat(7, {st_mode=S_IFREG, st_size=0, ...}) = 0
fstat(9, {st_mode=S_IFREG|01, st_size=0, ...}) = 0
fstat(8, {st_mode=S_IFREG|01, st_size=0, ...}) = 0
select(4, [3], [], [], {1, 0})          = 0 (Timeout)
fstat(6, {st_mode=S_IFREG|01, st_size=0, ...}) = 0
fstat(7, {st_mode=S_IFREG|01, st_size=0, ...}) = 0
fstat(9, {st_mode=S_IFREG, st_size=0, ...}) = 0
fstat(8, {st_mode=S_IFREG|01, st_size=0, ...}) = 0
select(4, [3], [], [], {1, 0})          = 0 (Timeout)
fstat(6, {st_mode=S_IFREG, st_size=0, ...}) = 0
fstat(7, {st_mode=S_IFREG|01, st_size=0, ...}) = 0
fstat(9, {st_mode=S_IFREG|01, st_size=0, ...}) = 0
fstat(8, {st_mode=S_IFREG, st_size=0, ...}) = 0
select(4, [3], [], [], {1, 0})          = 0 (Timeout)
fstat(6, {st_mode=S_IFREG, st_size=0, ...}) = 0
fstat(7, {st_mode=S_IFREG, st_size=0, ...}) = 0
fstat(9, {st_mode=S_IFREG|01, st_size=0, ...}) = 0
fstat(8, {st_mode=S_IFREG, st_size=0, ...}) = 0
select(4, [3], [], [], {1, 0})          = 0 (Timeout)
fstat(6, {st_mode=S_IFREG|01, st_size=0, ...}) = 0
fstat(7, {st_mode=S_IFREG, st_size=0, ...}) = 0
fstat(9, {st_mode=S_IFREG, st_size=0, ...}) = 0
fstat(8, {st_mode=S_IFREG|01, st_size=0, ...}) = 0
select(4, [3], [], [], {1, 0})          = 0 (Timeout)
fstat(6, {st_mode=S_IFREG|01, st_size=0, ...}) = 0
fstat(7, {st_mode=S_IFREG|01, st_size=0, ...}) = 0
fstat(9, {st_mode=S_IFREG, st_size=0, ...}) = 0
fstat(8, {st_mode=S_IFREG, st_size=0, ...}) = 0
select(4, [3], [], [], {1, 0})          = ? ERESTARTNOHAND (To be restarted if no handler)
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_KILLED, si_pid=499, si_uid=0, si_status=SIGSEGV, si_utime=160, si_stime=31} ---
getpid()                                = 495
rt_sigreturn({mask=[]})                 = -1 EINTR (Interrupted system call)
wait4(-1, [{WIFSIGNALED(s) && WTERMSIG(s) == SIGSEGV && WCOREDUMP(s)}], WNOHANG, NULL) = 499
lseek(7, 0, SEEK_CUR)                   = 0
close(7)                                = 0
wait4(-1, 0x7ffd455ad844, WNOHANG, NULL) = 0
write(4, ".", 1)                        = 1
select(4, [3], [], [], {0, 450691})     = 1 (in [3], left {0, 450689})
read(3, ".", 1)                         = 1
read(3, 0x7f2682067de8, 1)              = -1 EAGAIN (Resource temporarily unavailable)
fstat(6, {st_mode=S_IFREG, st_size=0, ...}) = 0
fstat(9, {st_mode=S_IFREG|01, st_size=0, ...}) = 0
fstat(8, {st_mode=S_IFREG, st_size=0, ...}) = 0
umask(0)                                = 022
getpid()                                = 495
open("/tmp/wgunicorn-5x9a40ca", O_RDWR|O_CREAT|O_EXCL|O_NOFOLLOW|O_CLOEXEC, 0600) = 7
fcntl(7, F_SETFD, FD_CLOEXEC)           = 0
chown("/tmp/wgunicorn-5x9a40ca", 0, 0)  = 0
umask(022)                              = 0
unlink("/tmp/wgunicorn-5x9a40ca")       = 0
fstat(7, {st_mode=S_IFREG|0600, st_size=0, ...}) = 0
ioctl(7, TIOCGWINSZ, 0x7ffd455b8e50)    = -1 ENOTTY (Not a tty)
lseek(7, 0, SEEK_CUR)                   = 0
lseek(7, 0, SEEK_CUR)                   = 0
rt_sigprocmask(SIG_BLOCK, ~[], [], 8)   = 0
fork()                                  = 579
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
select(0, NULL, NULL, NULL, {0, 8144}[2017-12-28 17:50:30 +0000] [579] [INFO] Booting worker with pid: 579
)  = 0 (Timeout)
select(4, [3], [], [], {1, 0})          = 0 (Timeout)
fstat(6, {st_mode=S_IFREG, st_size=0, ...}) = 0
fstat(7, {st_mode=S_IFREG|0600, st_size=0, ...}) = 0
fstat(9, {st_mode=S_IFREG|01, st_size=0, ...}) = 0
fstat(8, {st_mode=S_IFREG|01, st_size=0, ...}) = 0

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ, gunicorn sync рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕реЗрдХрдВрдб рдХреЗ рднреАрддрд░ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЛ 900 рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдорджрдж рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣реА рд╣реИред

рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╕реЗ рдкрд╣рд▓реЗ рдореЗрд░реЗ рд▓реЛрдб рдореЗрдВ, рдореИрдВ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдПрд╕ 3 рд╕реЗ рдбреЗрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╡рд┐рднрд┐рдиреНрди рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрднрдЧ 1 рдорд┐рдирдЯ 10 рд╕реЗрдХрдВрдб рдХрд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред

@ рд╕рд╛рд░рд╛ -02 рдЧрдирд┐рдХреЛрд░реНрди рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреНрдпрд╛ рд╣реИ?

@benoitc gunicorn --pythonpath /src -b 0.0.0.0:$SERVICE_PORT --workers=1 -k sync -t $SERVICE_TIMEOUT flask_endpoint:app
рдпрд╣рд╛рдВ рдЙрдкрд╕реНрдерд┐рдд

@ рд╕рд╛рд░рд╛ -02 рдзрдиреНрдпрд╡рд╛рджред

рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреБрд░рд╛рдиреЗ рдХрд░реНрдордЪрд╛рд░реА рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдЙрдиреНрд╣реЗрдВ рдСрдирд▓рд╛рдЗрди рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдирдП рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рдЬрдиреНрдо рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдбреАрдмрдЧ рд▓реЙрдЧ рднреА рдХреНрдпрд╛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ?

рд▓реЙрдЧ рдХреЛ рдмреЛрдЯреЛрдХреЛрд░ рд▓реЙрдЧ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реИ

[INFO] Booting worker with pid:  a
[INFO] Booting worker with pid:  b
[INFO] Booting worker with pid:  c

рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдордЬрджреВрд░ рдорд╛рд░реЗ рдЧрдП рд╣реИрдВ? рдХрдорд╛рдВрдб ps ax|grep gunicorn рдХреНрдпрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ?

@benoitc
screenshot from 2018-07-05 19-14-00

рдПрдХ рд╕рд╡рд╛рд▓ рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдо 2 gunicorn рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХреНрдпреЛрдВ рджреЗрдЦрддреЗ рд╣реИрдВ, рдЬрдм рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕реАрдорд╛ 1 рдкрд░ рд╕реЗрдЯ рдХреА рдЬрд╛рддреА рд╣реИ? рдХреНрдпрд╛ рдПрдХ рдорд╛рд╕реНрдЯрд░ рдФрд░ рдПрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╣реИ?

1 рдЖрд░реНрдмрд┐рдЯрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ (рдорд╛рд╕реНрдЯрд░) рд╣реИ рдФрд░ рдПрди рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЖрдкрдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ :)

рддреЛ рдЬрдм рднреА рдХреЛрдИ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕рд╣реА рдмреВрдЯ рдХрд░рддрд╛ рд╣реИ рддреЛ рдЖрдк рдХрдорд╛рдВрдб рдЪрд▓рд╛рддреЗ рд╣реИрдВ? рдпрджрд┐ рдРрд╕рд╛ рд╣реИ рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреБрд░рд╛рдиреЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдорд╛рд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдХ рдирдпрд╛ рдкреИрджрд╛ рд╣реБрдЖ рд╣реИред рдореИрдВ рдЬрд╛рдВрдЪ рдХрд░реВрдВрдЧрд╛ред

@ рд╕рд╛рд░рд╛ -02 рдПрдХ рдЖрдЦрд┐рд░реА рдмрд╛рдд, рдпрд╣ рднреА рдбреЛрдХрд░ рдореЗрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ?

@benoitc docker-compose рдпрд╣ рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдЙрд╕реА рдХреЛрдб рдХреЛ Openshift рдкрд░ рдбрд╛рд▓ рд░рд╣рд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рд╕реНрдореГрддрд┐ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдмрдврд╝рд╛рдирд╛ рдареАрдХ рд╣реЛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ docker-compose рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ limited рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдмрд╕ рдПрдХ рдЕрджреНрдпрддрди, рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕реНрдореГрддрд┐ рддреНрд░реБрдЯрд┐ рдереА рдФрд░ рд╕реНрдореГрддрд┐ рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛрдиреЗ рдкрд░ рдареАрдХ рдХреА рдЧрдИ рдереАред

@benoitc
рдбреЙрдХрдЯрд░ рдореЗрдВ 5 рдЧрдирд┐рдХреЛрд░реНрди рд╡рд░реНрдХрд░ рдХреЛ рд╕реНрдкреЙрди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред
@ рд╕рд╛рд░рд╛-02
рдЖрдкрдиреЗ рд╕реНрдореГрддрд┐ рддреНрд░реБрдЯрд┐ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдХреА рдкрд╣рдЪрд╛рди рдХреИрд╕реЗ рдХреА?

image

@ рдЧреБрд▓рд╢рди-рдЧреМрд░рд╡ 2 рдЪреАрдЬреЛрдВ рдиреЗ рдореЗрд░реА рдорджрдж рдХреА:
рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкреЙрдб рдХреЛ рд╕реМрдВрдкреА рдЧрдИ рдореЗрдореЛрд░реА рдХреЛ рдмрдврд╝рд╛рдпрд╛ рдФрд░ рдХреНрд░реИрд╢ рд╣реЛрдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ред рджреВрд╕рд░рд╛, рд╣рдордиреЗ рдЕрдкрдиреЗ Openshift Zabbix рд▓реЙрдЧ рдХреА рдЬрд╛рдБрдЪ рдХреАред

@ рд╕рд╛рд░рд╛-02
рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдореЗрд░реЗ рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рдкреЙрдб рдкрд░ рдлрд╛рдЗрд▓реЗрдВ + рдореЙрдбрд▓ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЙрдирдХреА рдорд╛рддреНрд░рд╛ 50Mb рд╣реИ, рдЗрд╕рд▓рд┐рдП 5 рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рд▓рд┐рдП 2GB рдореЗрдореЛрд░реА рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

@ рдЧреБрд▓рд╢рди-рдЧреМрд░рд╡ рдЖрдк рдХрд┐рд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рд╡рд╣рд╛рдБ 5 рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реЛрдиреЗ рд╕реЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ ....

рдореЗрд░реА рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереАред рдореБрдЭреЗ рд╕рдЯреАрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓рд╛, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ рдЕрдЬрдЧрд░ 3.5 рд╕реЗ 3.6 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рддреЛ рдЗрд╕реЗ рд╣рд▓ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ред

рдореБрдЭреЗ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред рдЬрдм рднреА рдореИрдВ рдХрд┐рд╕реА рдРрд╕реЗ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рд╡рд┐рдлрд▓рддрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдкрд╡рд╛рдж рдпрд╛ рддреНрд░реБрдЯрд┐ Gunicorn рдХреА рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рддреЛ Gunicorn рд╣рд░ рдмрд╛рд░ рдПрдХ рдирдП рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдмреЙрдЯ рдХрд░рддрд╛ рд░рд╣рддрд╛ рд╣реИред рдЬрд┐рди рдЪреАрдЬреЛрдВ рдХреЛ рдореИрдВ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреБрдирддрд╛ рд╣реВрдВ рд╡реЗ рд▓реЙрдЧ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдЕрдЪрд╛рдирдХ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд░реНрдл "рдкреАрдЖрдИрдбреА тАЛтАЛрдХреЗ рд╕рд╛рде рдмреВрдЯрд┐рдВрдЧ рд╡рд░реНрдХрд░ ..." рдХрд╣рддреА рд╣реИред

рдПрдХ рдХрджрдо рдЬрд┐рд╕рдиреЗ рдорджрдж рдХреА рд╡рд╣ рдерд╛ env рд╡реЗрд░рд┐рдПрдмрд▓ PYTHONUNBUFFERED рдХреЛ рдЬреЛрдбрд╝рдирд╛ред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдкреНрд░рд┐рдВрдЯ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рднреА рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреЗ рдереЗ рдФрд░ рдЧрдирд┐рдХреЛрд░реНрди рдХреЗ рд▓реЙрдЧ рдореЗрдВ рд╕рд╣реЗрдЬреЗ рдирд╣реАрдВ рдЬрд╛рддреЗ рдереЗред

рдРрдк рдХреЗ 2 рдЕрдиреНрдп рдПрдВрдбрдкреЙрдЗрдВрдЯ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

рдореИрдВ Gunicorn рдЗрд╕рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рддрд╛ рд╣реВрдВ: gunicorn run:app -b localhost:5000 --enable-stdio-inheritance --error-logfile /var/log/gunicorn/error.log --access-logfile /var/log/gunicorn/access. рд▓реЙрдЧ --рдХреИрдкреНрдЪрд░-рдЖрдЙрдЯрдкреБрдЯ --рд▓реЙрдЧ-рд▓реЗрд╡рд▓ рдбрд┐рдмрдЧ

рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд╛рдпрдерди 3.6 рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╢реАрд░реНрд╖ рдХреЗ рд╕рд╛рде рдЬрд╛рдВрдЪ рдХреА рдЧрдИ рд╣реИ рдХрд┐ рд╕реНрдореГрддрд┐ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд▓рдЧрддреА рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдкрд╛рдпрдерди рдореБрджреНрджрд╛ рдерд╛ рдФрд░ рдПрдХ рдЧрдирд┐рдХреЛрд░реНрди рдХреА рдЧрд▓рддреА рдирд╣реАрдВ рдереАред рдХреБрдЫ рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рд╕рдВрдЧрддрд┐рдпрд╛рдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдСрдкрд░реЗрд╢рди рдХрд░рддреЗ рд╕рдордп рдкрд╛рдЗрдерди рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдирд┐рд╢рд╛рди рдХреЗ рдорд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрди рд░рд╣реА рдереАрдВред

рдореИрдВ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдиреЛрдб рдЖрддреЗ рд░рд╣рддреЗ рд╣реИрдВ
Booting worker with pid: 17636 ред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдкрд┐рдЫрд▓реЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдиреЛрдб рдХреЛ рдорд╛рд░ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдкрд┐рдЫрд▓реЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдиреЛрдб рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИред рд▓реЗрдХрд┐рди рдЧрдирд┐рдХреЛрд░реНрди рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХреЛрдВ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╢реНрд░рдорд┐рдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗрд╡рд▓ 3 - -workers=3 ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореИрдВ рдЕрдЬрдЧрд░ рд╕рдВрд╕реНрдХрд░рдг 3.7 . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ

рдореЗрд░реЗ рдкрд╛рд╕ рд╕реНрдХрд┐рдХрд┐рдЯ-рд▓рд░реНрди рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдХрд╛ рдмреЗрдореЗрд▓ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рднреА, рдореБрдЭреЗ рдЕрднреА рднреА рд╡рд╣реА рдЕрдирдВрдд рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЖ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдкрд╣рдЪрд╛рдирдирд╛ рдЪрд╛рд╣рд┐рдП?

рдореБрдЭреЗ OpenShift рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред

image

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЫрд╡рд┐ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВ 6 рд╢реНрд░рдорд┐рдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рдореИрдВ 3 рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рдерд╛)ред
рдореИрдВрдиреЗ рдкреЙрдб рдХреА рдореЗрдореЛрд░реА рдмрдврд╝рд╛ рджреА рдФрд░ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рдмрд┐рд▓реНрдб рдХреЙрдиреНрдлрд┐рдЧ:

image

рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?

рдзрдиреНрдпрд╡рд╛рдж

рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рдПрд▓реНрдм рдХреЗ рдкреАрдЫреЗ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдореЗрдВ рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ? рдореИрдВрдиреЗ рдПрд▓реНрдм рдФрд░ рдЧрдирд┐рдХреЛрд░реНрди рдХреЗ рдмреАрдЪ nginx рдкреНрд░рд╡реЗрд╢ рдХрд░рдХреЗ рдЙрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛

рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реЛред

flask_1  | [2019-02-23 09:08:17 +0000] [1] [INFO] Starting gunicorn 19.9.0
flask_1  | [2019-02-23 09:08:17 +0000] [1] [INFO] Listening at: http://0.0.0.0:5000 (1)
flask_1  | [2019-02-23 09:08:17 +0000] [1] [INFO] Using worker: sync
flask_1  | [2019-02-23 09:08:17 +0000] [8] [INFO] Booting worker with pid: 8
flask_1  | [2019-02-23 09:08:19 +0000] [12] [INFO] Booting worker with pid: 12
flask_1  | [2019-02-23 09:08:19 +0000] [16] [INFO] Booting worker with pid: 16
flask_1  | [2019-02-23 09:08:20 +0000] [20] [INFO] Booting worker with pid: 20
flask_1  | [2019-02-23 09:08:21 +0000] [24] [INFO] Booting worker with pid: 24
flask_1  | [2019-02-23 09:08:22 +0000] [28] [INFO] Booting worker with pid: 28
flask_1  | [2019-02-23 09:08:23 +0000] [32] [INFO] Booting worker with pid: 32
flask_1  | [2019-02-23 09:08:25 +0000] [36] [INFO] Booting worker with pid: 36
flask_1  | [2019-02-23 09:08:26 +0000] [40] [INFO] Booting worker with pid: 40
flask_1  | [2019-02-23 09:08:27 +0000] [44] [INFO] Booting worker with pid: 44
flask_1  | [2019-02-23 09:08:29 +0000] [48] [INFO] Booting worker with pid: 48
flask_1  | [2019-02-23 09:08:30 +0000] [52] [INFO] Booting worker with pid: 52
flask_1  | [2019-02-23 09:08:31 +0000] [56] [INFO] Booting worker with pid: 56
flask_1  | [2019-02-23 09:08:33 +0000] [60] [INFO] Booting worker with pid: 60
flask_1  | [2019-02-23 09:08:34 +0000] [64] [INFO] Booting worker with pid: 64
flask_1  | [2019-02-23 09:08:35 +0000] [68] [INFO] Booting worker with pid: 68
flask_1  | [2019-02-23 09:08:36 +0000] [72] [INFO] Booting worker with pid: 72
flask_1  | [2019-02-23 09:08:37 +0000] [76] [INFO] Booting worker with pid: 76
flask_1  | [2019-02-23 09:08:38 +0000] [80] [INFO] Booting worker with pid: 80
flask_1  | [2019-02-23 09:08:40 +0000] [84] [INFO] Booting worker with pid: 84
flask_1  | [2019-02-23 09:08:41 +0000] [88] [INFO] Booting worker with pid: 88
flask_1  | [2019-02-23 09:08:42 +0000] [92] [INFO] Booting worker with pid: 92
flask_1  | [2019-02-23 09:08:44 +0000] [96] [INFO] Booting worker with pid: 96
flask_1  | [2019-02-23 09:08:45 +0000] [100] [INFO] Booting worker with pid: 100
flask_1  | [2019-02-23 09:08:45 +0000] [104] [INFO] Booting worker with pid: 104
flask_1  | [2019-02-23 09:08:46 +0000] [108] [INFO] Booting worker with pid: 108
flask_1  | [2019-02-23 09:08:47 +0000] [112] [INFO] Booting worker with pid: 112
flask_1  | [2019-02-23 09:08:48 +0000] [116] [INFO] Booting worker with pid: 116
flask_1  | [2019-02-23 09:08:49 +0000] [120] [INFO] Booting worker with pid: 120
flask_1  | [2019-02-23 09:08:50 +0000] [124] [INFO] Booting worker with pid: 124
flask_1  | [2019-02-23 09:08:52 +0000] [128] [INFO] Booting worker with pid: 128

рдпрд╣рд╛рдВ docker-compose.yml :

version: '3'
services:
  flask:
    build: .
    command: gunicorn -b 0.0.0.0:5000 hello:app --reload
    environment:
      - FLASK_APP=hello.py
      - FLASK_DEBUG=1
      - PYTHONUNBUFFERED=True
    ports:
      - "5000:5000"
    volumes:
      - ./:/root

рдпрд╣ рдХрд┐рд╕ рдбреЙрдХрд░ рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ?

@benoitc

[ec2-user@ip-172-31-85-181 web-services-course]$ docker --version
Docker version 18.06.1-ce, build e68fc7a215d7133c34aa18e3b72b4a21fd0c6136
[ec2-user@ip-172-31-85-181 web-services-course]$ docker-compose --version
docker-compose version 1.23.2, build 1110ad01

рдпрд╣рд╛рдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рджрд┐рдП рдЧрдП рд╣реИрдВ:

рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрд╣ рд╕реНрдореГрддрд┐ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдРрдк рдХреЛ рдЙрдкрд▓рдмреНрдз рд╕реЗ рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд┐рд░реНрдл рдзрд╛рд░рдгрд╛ рд╣реИ

рдмрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд░реВрдк рдореЗрдВ: рдореИрдВрдиреЗ рдареАрдХ рдпрд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рджреЗрдЦрд╛ рдерд╛ рдЬрдм рдореЗрд░реЗ рдкрд╛рд╕ 3 рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрдирд┐рдХреЛрд░реНрди рдХреЙрдиреНрдлрд┐рдбреЗрдВрд╕ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдПрдХ рд╕рд┐рдВрдЧрд▓ рдХреЛрд░ рд╕реАрдкреАрдпреВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдореЗрдВ рдХреЛрдб рдХреЛ рддреИрдирд╛рдд рдХрд┐рдпрд╛ред рдлрд┐рд░, рдореИрдВрдиреЗ 2 рдХреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛, рдФрд░ рдЬрд╛рд╣рд┐рд░ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдЧрд╛рдпрдм рд╣реЛ рдЧрдИ

рдХреНрдпреЛрдВ 'рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рд░рд╣рд╛ рд╣реИ' рдХреЗрд╡рд▓ рд╕реНрддрд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкрд░ - рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдмрд╛рд╣рд░ рдХреНрдпреЛрдВ рдирд┐рдХрд▓реЗрдЧрд╛? рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдХрд╛рдлреА рд╕рдордп рд▓рдЧрд╛ рдХрд┐ рдореЗрд░реЗ рд╡рд░реНрдХрд░ рдереНрд░реЗрдбреНрд╕ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдУрдУрдПрдо рдХрд┐рд▓рд░ рджреНрд╡рд╛рд░рд╛ рдорд╛рд░рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рд▓реЙрдЧ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдКрдкрд░ рдХреБрдЫ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдордп-рд╕рдордп рдкрд░ 'рдкреАрдЖрдИрдбреА тАЛтАЛрдХреЗ рд╕рд╛рде рдмреВрдЯрд┐рдВрдЧ рд╡рд░реНрдХрд░' рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдЧрдИ рд╣реИред

@HughWarrington рдХреНрдпреЛрдВрдХрд┐ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рд╡рд╛рд▓рд╛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реЛред рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рд╕рд┐рдЧреНрдирд▓ рдпрд╛ --max-requests рдЬреИрд╕реЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@HughWarrington рдЬрдм рдХреЛрдИ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЕрд╕рд╛рдорд╛рдиреНрдп рдирд┐рдХрд╛рд╕ рдХреЛрдб рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддрд╛ рд╣реИ рддреЛ рд╣рдо рд╢рд╛рдпрдж

рдЖрдк рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЯрд┐рдХрдЯ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдПрдХ рдкреАрдЖрд░ рдпреЛрдЧрджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рдХреЛрдб рдХреЛ reap_workers рдкрджреНрдзрддрд┐ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдереА, рдФрд░ рд╕рдорд╛рдзрд╛рди рдлрд▓реА рдХреЗ рд╕реНрдореГрддрд┐ рдЖрдХрд╛рд░ рдХреЛ рдмрдврд╝рд╛рдирд╛ рдерд╛ред

рдПрдХ рдмрдбрд╝реЗ рд╕реНрдкрд╛рд╕реА рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдбреЙрдХрд░ рдкрд░ рдЧрдирд┐рдХреЛрд░реНрди рдЪрд▓рд╛рдиреЗ рдореЗрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдереА, рдпрд╣ рдмрд┐рдирд╛ рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЗ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рддрд╛ рд░рд╣рд╛ред рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдмрдврд╝рд╛рдирд╛ рд╣реИред

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдкрд░ рдЪрд▓ рд░рд╣реЗ рдЬреЗрд╡реЗрдВрдЯ (1.4.0) рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рд╕рд╛рде рдирд╡реАрдирддрдо (19.9.0) рдЧрдирд┐рдХреЛрд░реНрди рдкрд░ рдЖрдЬ рд╣реА рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдРрдк рдПрдХ рдлрд╛рд▓реНрдХрди рдРрдк рд╣реИ рдФрд░ рдбреЙрдХрд░ рдЗрдореЗрдЬ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкрд╛рдпрдерди рдЗрдореЗрдЬ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЯреИрдЧ 3.7.3 ред

[2019-07-05 00:07:42 +0000] [8] [INFO] Starting gunicorn 19.9.0
[2019-07-05 00:07:42 +0000] [8] [INFO] Listening at: http://0.0.0.0:5000 (8)
[2019-07-05 00:07:42 +0000] [8] [INFO] Using worker: gevent
[2019-07-05 00:07:43 +0000] [35] [INFO] Booting worker with pid: 35
[2019-07-05 00:07:43 +0000] [36] [INFO] Booting worker with pid: 36
[2019-07-05 00:07:43 +0000] [37] [INFO] Booting worker with pid: 37
[2019-07-05 00:07:43 +0000] [38] [INFO] Booting worker with pid: 38
[2019-07-05 00:07:43 +0000] [41] [INFO] Booting worker with pid: 41
[2019-07-05 00:07:43 +0000] [43] [INFO] Booting worker with pid: 43
[2019-07-05 00:07:43 +0000] [45] [INFO] Booting worker with pid: 45
[2019-07-05 00:07:43 +0000] [49] [INFO] Booting worker with pid: 49
[2019-07-05 00:07:43 +0000] [47] [INFO] Booting worker with pid: 47
[2019-07-05 00:07:49 +0000] [53] [INFO] Booting worker with pid: 53
[2019-07-05 00:07:50 +0000] [54] [INFO] Booting worker with pid: 54
[2019-07-05 00:07:53 +0000] [57] [INFO] Booting worker with pid: 57
[...]

рдкреЙрдб рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд╕рд╛рдзрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдереАрдВ:

resources:
  requests:
    cpu: 250m
    memory: 256Mi
  limits:
    cpu: 500m
    memory: 512Mi

рд╕рдм рдХреБрдЫ рджреЛрдЧреБрдирд╛ рдХрд░рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛ рдЧрдИред

рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдЬреЛ рд╣рдордиреЗ рджреЗрдЦреА рд╡рд╣ рдпрд╣ рдереА рдХрд┐ рдЬрдм рд╣рдо рд╣реЛрд╕реНрдЯ рдорд╢реАрди рдкрд░ dmesg рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рддреЛ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ segfault - libcrypto рдкрд░ рдПрд╕рдПрд╕рдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдкрд░ рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдореГрддрд┐ рдореЗрд░реЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╕реНрдореГрддрд┐ рдореЗрдВ рдХреЛрдИ рдмрдбрд╝рд╛ рдореЙрдбрд▓ рд▓реЛрдб рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдмрд╕ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛрддреЗ рд░рд╣рддреЗ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?

image

рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛, рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рдЪрд╛рд░? рдЕрдЬрдЧрд░ 3.6.3 рдЧрдирд┐рдХреЛрд░реНрди рдХреЗ рд╕рд╛рде 19.9.0

@MrKiven рдЖрдкрдХрд╛ рдРрдк рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ? рдХреНрдпрд╛ рдЖрдк рдЕрдиреБрд░реЛрдз рдЬреИрд╕реА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рдпрд╣ рдХрдИ рдШрдЯрдХреЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрдХ рд╣реИ рдЬреЛ рдПрдХ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдЙрд╕реА рдорд╢реАрди рдпрд╛ рджреВрд░рд╕реНрде рдорд╢реАрдиреЛрдВ рдкрд░ рдЕрдиреНрдп рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП HTTP рдЕрдиреБрд░реЛрдз рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рдХреБрдЫ рдореЙрдбреНрдпреВрд▓ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ ThreadPoolExecutor рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реЗ рдХрд┐рд╕реА рднреА рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдмрд╛рдж рдореЗрдВ рдПрдХ рдкрд░рд┐рдгрд╛рдореА рдПрдХ рдореЗрдВ рдПрдХрддреНрд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдореМрдЬреВрдж рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд┐рдП рдмрд┐рдирд╛ рдореИрдВ рдПрдХ рдиреНрдпреВрдирддрдо рдЙрджрд╛рд╣рд░рдг рдПрдХ рд╕рд╛рде рд░рдЦ рд╕рдХрддрд╛ рд╣реВрдВред

рдЕрдиреБрд░реЛрдз рдзрд╛рдЧреЗ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рд╕реА рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдЪреАрдЬреЗрдВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрднреА-рдХрднреА рдПрдХ рдирдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдлреЛрд░реНрдХ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рджреВрд╕рд░реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреВрдВрдЧрд╛ред рдХреНрдпрд╛ рдЖрдк рдХрдо рд╕реЗ рдХрдо рдЙрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкреЗрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЖрдк рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдХреА рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

try:
     resp = requests.post(self._endpoint, json=request_data)

     if resp.status_code != 200:
          logger.critical("[Error]: status code is {}".format(resp.status_code))
          return None

     response = resp.json()
     return {"intent": response["intent"], "intent_ranking": response["intent_ranking"]}
except ConnectionError as exc:
     logger.critical("[Exception] {}".format(str(exc)))
     return None

рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдЗрд╕рд╕реЗ рдПрдХ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

рдпрд╣ рд╡реИрд╕реЗ рднреА рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдХреЛрдИ рд╣рдореЗрдВ рдПрдХ рдкреАрдЖрд░ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╛ рдПрдХ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ рдкреБрди: рдкреЗрд╢ рдХрд░рддрд╛ рд╣реИ рддреЛ рд╣рдо рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╣реА рдЪреАрдЬрд╝ рдХреЛ рдареАрдХ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдбреЙрдХрд░реАрдХреГрдд рдлреНрд▓рд╛рд╕реНрдХ рд╡реЗрдмрдПрдк рдЪрд▓рд╛рддреЗ рд╕рдордп рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдереА рдФрд░ рдЗрд╕реЗ рдореЗрд░реЗ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдХреА рдореВрд▓ рдЫрд╡рд┐ рдХреЛ python:3.6.9-alpine рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛

рдореЗрдЬрдмрд╛рди рдкрд░ Dmesg рдиреЗ lilibpython3.6m.so.1.0 рдкрд░ рдПрдХ segfault рджрд┐рдЦрд╛рдпрд╛:

[626278.653010] gunicorn[19965]: segfault at 70 ip 00007f6423e7faee sp 00007ffc4e9a2a38 error 4 in libpython3.6m.so.1.0[7f6423d8a000+194000]

рдореЗрд░реА рдбреЙрдХрдЯрд░ рдЫрд╡рд┐ python:3.6-alpine рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдереА рдФрд░ рдПрдХ apk update рдХрд░ рд░рд╣реА рдереА рдЬреЛ рдЕрдЬрдЧрд░ рдХреЛ 3.6.8 рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд░ рд░рд╣реА рдереАред

рдЬреИрд╕рд╛ рдХрд┐ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдореВрд▓ рдЫрд╡рд┐ рдХреЛ python:3.6.9-alpine рдмрджрд▓рдиреЗ рд╕реЗ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╣рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИ

рдлреНрд▓рд╛рд╕реНрдХ + рдбреЙрдХрд░ + рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рдореБрдЭреЗ рдПрдХ рд╣реА рдЪреБрдиреМрддреА рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рд╕реАрдкреАрдпреВ рдФрд░ рдореЗрдореЛрд░реА рдХреА рд╕реАрдорд╛ рдмрдврд╝рд╛рдиреЗ рд╕реЗ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╣рд▓ рд╣реЛ рдЧрдпрд╛ред

рд╣рдорд╛рд░реЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рд╣реБрдЖ рдерд╛ред рд╕рдВрд╕рд╛рдзрди рд╕реАрдорд╛ рдмрдврд╝рд╛рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛ рдЧрдИред

рдпрд╣ рдЕрдЪрд╛рдирдХ рдореЗрд░реЗ рд╕рд╛рде macOS рдХреИрдЯрд╛рд▓рд┐рдирд╛ (рдХрдВрдЯреЗрдирд░реАрдХреГрдд рдирд╣реАрдВ) рдкрд░ рд╣реБрдЖред

рдореБрдЭреЗ рдХреНрдпрд╛ рдорджрдж рдорд┐рд▓реА рд╣реИ:

  1. рдУрдкрдирдПрд╕рдПрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛:
brew install openssl
  1. рдЗрд╕реЗ рдореЗрд░реЗ ~/.zshrc рдЪрд▓рд╛рдирд╛ рдФрд░ рдЬреЛрдбрд╝рдирд╛:
export DYLD_LIBRARY_PATH=/usr/local/opt/openssl/lib:$DYLD_LIBRARY_PATH

рд╕реНрд░реЛрдд: https://stackoverflow.com/a/58445755/5811984

рдореБрдЭреЗ рдЗрд╕реА рддрд░рд╣ рдХреА рдЪреБрдиреМрддреА рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЕрдЧрд░ рдХреЛрдИ рдореЗрд░реА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддреЛ рдЖрднрд╛рд░реА рд╣реЛрдВрдЧреЗред
рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣реА рдерд╛;

" root@ubuntu-s-1vcpu-1gb-nyc1-01 :~# sudo systemctl status gunicorn.service gunicorn.service - gunicorn daemon рд▓реЛрдбреЗрдб: рд▓реЛрдбреЗрдб (/etc/systemd/system/gunicorn.service; рдЕрдХреНрд╖рдо; рд╡рд┐рдХреНрд░реЗрддрд╛ рдкреНрд░реАрд╕реЗрдЯ: рд╕рдХреНрд╖рдо) рд╕рдХреНрд░рд┐рдп: рд╕реЛрдо 2020-02-24 07:48:04 рдпреВрдЯреАрд╕реА рд╕реЗ рд╕рдХреНрд░рд┐рдп (рдЪрд▓ рд░рд╣рд╛ рд╣реИ); 44рдорд┐рдирдЯ рдкрд╣рд▓реЗ рдореБрдЦреНрдп рдкреАрдЖрдИрдбреА: 4846 (рдЧрдирд┐рдХреЛрд░реНрди) рдХрд╛рд░реНрдп: 4 (рд╕реАрдорд╛: 1151) рд╕реАрдЧреНрд░реБрдк: /system.slice/gunicorn.service 4846 /рд╣реЛрдо/рдмреНрд░рд╛рдЗрдЯ/djangoprojectenv/djangoprojectenv/bin/python/home/bright/djangoprojectdir/djangoprojectenv/bin/gunicorn - тФЬтФА4866 /home/bright/djangoprojectdir/djangoprojectenv/bin/python /home/bright/djangoprojectenv/djangoprojectenv/djangoprojectenv /рдмрд┐рди/рдЧрдирд┐рдХреЛрд░реНрди - 4868 /рд╣реЛрдо/рдмреНрд░рд╛рдЗрдЯ/djangoprojectdir/djangoprojectenv/bin/python/home/bright/djangoprojectdir/djangoprojectenv/bin/gunicorn - тФФтФА4869 /home/bright/djangoprojectdir/djangoprojectenv/bin/python /home /bright/djangoprojectdir/djangoprojectenv/bin/gunicorn - рдлрд╝рд░рд╡рд░реА 24 07:48:04 ubuntu-s-1vcpu-1gb-nyc1-01 systemd[1]: рдЧрдирд┐рдХреЛрд░реНрди рдбреЗрдореЙрди рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ред рдлрд╝рд░рд╡рд░реА 24 07:48:04 ubuntu-s-1vcpu -1рдЬреАрдмреА-рдПрдирд╡рд╛рдИрд╕реА1-01 рд╕рд┐рд╕реНрдЯрдордбреА[1 ]: рдЧрдирд┐рдХреЛрд░реНрди рдбреЗрдореЙрди рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдлрд╝рд░рд╡рд░реА 24 07:48:05 ubuntu-s-1vcpu-1gb-nyc1-01 рдЧрдирд┐рдХреЛрд░реНрди[4846]: [2020-02-24 07:48:05 +0000] [4846] [рдЬрд╛рдирдХрд╛рд░реА] рдЧрдирд┐рдХреЛрд░реНрди 20.0.4 рдлрд░рд╡рд░реА 24 рд╢реБрд░реВ рдХрд░рдирд╛ 07:48:05 ubuntu-s-1vcpu-1gb-nyc1-01 gunicorn[4846]: [2020-02-24 07:48:05 +0000] [4846] [рдЬрд╛рдирдХрд╛рд░реА] рдпрд╣рд╛рдВ рд╕реБрди рд░рд╣рд╛ рд╣реИ: unix:/run/gunicorn .soc рдлрд╝рд░рд╡рд░реА 24 07:48:05 ubuntu-s-1vcpu-1gb-nyc1-01 рдЧрдирд┐рдХреЛрд░реНрди[4846]: [2020-02-24 07:48:05 +0000] [4846] [рдЬрд╛рдирдХрд╛рд░реА] рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛: рд╕рд┐рдВрдХ рдлрд░рд╡рд░реА 24 07:48:05 ubuntu-s-1vcpu-1gb-nyc1-01 gunicorn[4846]: [2020-02-24 07:48:05 +0000] [4866] [рдЬрд╛рдирдХрд╛рд░реА] pid рдХреЗ рд╕рд╛рде рдмреВрдЯрд┐рдВрдЧ рд╡рд░реНрдХрд░: 4866 рдлрд░рд╡рд░реА 24 07:48:05 ubuntu-s-1vcpu-1gb-nyc1-01 gunicorn[4846]: [2020-02-24 07:48:05 +0000] [4868] [рдЬрд╛рдирдХрд╛рд░реА] pid рдХреЗ рд╕рд╛рде рдмреВрдЯрд┐рдВрдЧ рд╡рд░реНрдХрд░: 4868 рдлрд░рд╡рд░реА 24 07 :48:05 ubuntu-s-1vcpu-1gb-nyc1-01 gunicorn[4846]: [2020-02-24 07:48:05 +0000] [4869] [рдЬрд╛рдирдХрд╛рд░реА] pid рдХреЗ рд╕рд╛рде рдмреВрдЯрд┐рдВрдЧ рд╡рд░реНрдХрд░: 4869 рдлрд░рд╡рд░реА 24 08: 03:41 ubuntu-s-1vcpu-1gb-nyc1-01 рдЧрдирд┐рдХреЛрд░реНрди[4846]: - - [24/рдлрд╝рд░рд╡рд░реА/2020:08:03:41 +0000] "GET/HTTP/1.0" 400 26 "-" "рдореЛрдЬрд╝рд┐рд▓рд╛ /5.0 (рд╡рд╛рдИ рд▓рд╛рдЗрдиреНрд╕ 1-20/20 (END)" рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдореЗрд░реА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

@BrightNana рдХреНрдпрд╛ рдЖрдк dmesg рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдЧрдирд┐рдХреЛрд░реНрди рддреНрд░реБрдЯрд┐ рд╣реИ?
dmesg | grep gunicorn рдЕрдиреНрдп рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ

рдирдорд╕реНрддреЗ,
рдореЗрд░реЗ рдкрд╛рд╕ рдбреЗрдмрд┐рдпрди 9 рдореЗрдВ рдПрдХ рд╣реА рдмрдЧ рд╣реИ рдЬрдм рдореИрдВ рдПрдХ рд╕рд┐рд╕реНрдЯрдордб рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЧрдирд┐рдХреЛрд░реНрди рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ рд╕реАрдПрд▓рдЖрдИ рд╕реЗ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдЧрдирд┐рдХреЛрд░реНрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЪрд▓рддрд╛ рд╣реИред

dmesg | grep gunicorn рд╕реЗ рдирд┐рдХрд╛рд▓реЗрдВ:

journalctl рд╕реЗ рдЕрдВрд╢:
M├дr 12 07:01:06 build-server gunicorn[828]: [2020-03-12 07:01:06 +0100] [1054] [INFO] Booting worker with pid: 1054 M├дr 12 07:01:06 build-server gunicorn[828]: [2020-03-12 07:01:06 +0100] [1057] [INFO] Booting worker with pid: 1057 M├дr 12 07:01:06 build-server gunicorn[828]: [2020-03-12 07:01:06 +0100] [1060] [INFO] Booting worker with pid: 1060 M├дr 12 07:01:07 build-server gunicorn[828]: [2020-03-12 07:01:07 +0100] [1064] [INFO] Booting worker with pid: 1064 M├дr 12 07:01:07 build-server gunicorn[828]: [2020-03-12 07:01:07 +0100] [1067] [INFO] Booting worker with pid: 1067 M├дr 12 07:01:07 build-server gunicorn[828]: [2020-03-12 07:01:07 +0100] [1070] [INFO] Booting worker with pid: 1070 M├дr 12 07:01:07 build-server gunicorn[828]: [2020-03-12 07:01:07 +0100] [1073] [INFO] Booting worker with pid: 1073 M├дr 12 07:01:07 build-server gunicorn[828]: [2020-03-12 07:01:07 +0100] [1076] [INFO] Booting worker with pid: 1076 M├дr 12 07:01:08 build-server gunicorn[828]: [2020-03-12 07:01:08 +0100] [1079] [INFO] Booting worker with pid: 1079 M├дr 12 07:01:08 build-server gunicorn[828]: [2020-03-12 07:01:08 +0100] [1082] [INFO] Booting worker with pid: 1082 M├дr 12 07:01:08 build-server gunicorn[828]: [2020-03-12 07:01:08 +0100] [1085] [INFO] Booting worker with pid: 1085 M├дr 12 07:01:08 build-server gunicorn[828]: [2020-03-12 07:01:08 +0100] [1088] [INFO] Booting worker with pid: 1088 M├дr 12 07:01:08 build-server gunicorn[828]: [2020-03-12 07:01:08 +0100] [1091] [INFO] Booting worker with pid: 1091 M├дr 12 07:01:09 build-server gunicorn[828]: [2020-03-12 07:01:09 +0100] [1094] [INFO] Booting worker with pid: 1094
systemctl status рд╕реЗ рдирд┐рдХрд╛рд▓реЗрдВ:
тЧП api.service - API Server for BuildingChallenge served with Gunicorn Loaded: loaded (/etc/systemd/system/api.service; disabled; vendor preset: enabled) Active: active (running) since Thu 2020-03-12 08:26:01 CET; 22min ago Main PID: 8150 (gunicorn) Tasks: 3 (limit: 4915) Memory: 37.7M (high: 100.0M max: 500.0M) CGroup: /system.slice/api.service тФЬтФА 8150 /opt/api/venv/bin/python /opt/api/venv/bin/gunicorn --bind unix:api.sock wsgi:app тФЬтФА28936 /opt/api/venv/bin/python /opt/api/venv/bin/gunicorn --bind unix:api.sock wsgi:app тФФтФА28938 /usr/bin/python3 -Es /usr/bin/lsb_release -a M├дr 12 08:48:01 build-server gunicorn[8150]: [2020-03-12 08:48:01 +0100] [28909] [INFO] Booting worker with pid: 28909 M├дr 12 08:48:01 build-server gunicorn[8150]: [2020-03-12 08:48:01 +0100] [28912] [INFO] Booting worker with pid: 28912 M├дr 12 08:48:01 build-server gunicorn[8150]: [2020-03-12 08:48:01 +0100] [28915] [INFO] Booting worker with pid: 28915 M├дr 12 08:48:01 build-server gunicorn[8150]: [2020-03-12 08:48:01 +0100] [28918] [INFO] Booting worker with pid: 28918 M├дr 12 08:48:01 build-server gunicorn[8150]: [2020-03-12 08:48:01 +0100] [28921] [INFO] Booting worker with pid: 28921 M├дr 12 08:48:01 build-server gunicorn[8150]: [2020-03-12 08:48:01 +0100] [28924] [INFO] Booting worker with pid: 28924 M├дr 12 08:48:02 build-server gunicorn[8150]: [2020-03-12 08:48:02 +0100] [28927] [INFO] Booting worker with pid: 28927 M├дr 12 08:48:02 build-server gunicorn[8150]: [2020-03-12 08:48:02 +0100] [28930] [INFO] Booting worker with pid: 28930 M├дr 12 08:48:02 build-server gunicorn[8150]: [2020-03-12 08:48:02 +0100] [28933] [INFO] Booting worker with pid: 28933 M├дr 12 08:48:02 build-server gunicorn[8150]: [2020-03-12 08:48:02 +0100] [28936] [INFO] Booting worker with pid: 28936

рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдореИрдВрдиреЗ рдПрдХ рдкреАрдЖрд░ рд▓рдЧрд╛рдпрд╛ рдЬреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рдХреЛрдИ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИ?
https://github.com/benoitc/gunicorn/pull/2315

рдбреЙрдХрд░ рдХреЗ рдЕрдВрджрд░ рдЪрд▓ рд░рд╣реЗ рдлреНрд▓рд╛рд╕реНрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рднреА рдпрд╣реА рдореБрджреНрджрд╛ рдерд╛ред рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдПрдХ рдмрдврд╝рддреА рд╣реБрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЖрдИрдбреА рдХреЗ рд╕рд╛рде рдЕрд╕реАрдорд┐рдд рд░реВрдк рд╕реЗ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░ рд░рд╣реЗ рдереЗред
image

рдореБрджреНрджрд╛ рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдореГрддрд┐ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдерд╛, рдЬрдм рдореИрдВрдиреЗ рдбреЙрдХрд░ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдордд рд╕реНрдореГрддрд┐ рдХреЛ рдмрдврд╝рд╛рдпрд╛, рддреЛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдкреИрджрд╛ рд╣реБрдПред
image

@tilgovi , рдореБрдЭреЗ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдореЗрд░реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЕрдкрдиреЗ рдкреАрдЖрд░ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рд╡рд╣рд╛рдВ рдкрд╣рд▓реЗ рдкрд╣реБрдВрдЪреЗ рдереЗред рдЗрд╕рдореЗрдВ рд╕рд┐рдЧреНрдирд▓ рдХреЗ рдЬрд░рд┐рдП рдорд╛рд░реЗ рдЬрд╛ рд░рд╣реЗ рдордЬрджреВрд░реЛрдВ рдХреЛ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

@mildebrandt рдореИрдВ рдПрдХ рдирдЬрд╝рд░

рдореИрдВ рднреА рдЕрдЪрд╛рдирдХ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ, рдПрдХ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ Gunicorn (20.0.4) + Gevent (1.5.0) + рдлреНрд▓рд╛рд╕реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ред

[  328.699160] gunicorn[5151]: segfault at 78 ip 00007fc1113c16be sp 00007ffce50452a0 error 4 in _greenlet.cpython-37m-x86_64-linux-gnu.so[7fc11138d000+3e000]

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ segfault gevent рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЕрдЬреАрдм рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдХрдВрдЯреЗрдирд░ рдиреЗ 5 рджрд┐рди рдкрд╣рд▓реЗ рдареАрдХ рдХрд╛рдо рдХрд┐рдпрд╛ рдерд╛, рдФрд░ рддрдм рд╕реЗ рдХреЛрдИ рднреА рдХреЛрдб рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, рдХрд┐рд╕реА рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдХрд┐рд╕реА рднреА рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ, рдФрд░ рдпреЗ рд╕рднреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░рд┐рд▓реАрдЬ рдкрд░ рд╕реЗрдЯ рд╣реИрдВред рдореИрдВрдиреЗ рдлреНрд▓рд╛рд╕реНрдХ-рдореЗрд▓ рдХреЛ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛, рдЬрд┐рд╕рдиреЗ рдЕрдиреНрдп рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реЛрдЧрд╛ред

gevent==1.5.0 рд╕реЗ gevent==20.9.0 рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рдЧрдпрд╛ред

@ifiddes рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЕрд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдЖрдк рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдЧреНрд░реАрдирд▓реЗрдЯ рдХреЗ рд╕рд╛рде gevent рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ ABI рд╕рдВрдЧрддрддрд╛ рд╕рдорд╕реНрдпрд╛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред рджреЗрдЦреЗрдВ https://github.com/python-greenlet/greenlet/issues/178

рдЖрд╣, рдзрдиреНрдпрд╡рд╛рдж @jamaddenред рдмреВрдЯрд┐рдВрдЧ рд╡рд░реНрдХрд░реНрд╕ рдХреА рдЕрдирдВрдд рд╕реНрдкреЙрдирд┐рдВрдЧ рдХреА рдЦреЛрдЬ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдкреЛрд╕реНрдЯ рдореБрдЭреЗ рдорд┐рд▓ рд╕рдХрддреА рдереА, рд▓реЗрдХрд┐рди рд╡рд╣ рдореБрджреНрджрд╛ рдФрд░ рдЙрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рдордп рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЕрдиреБрдХреВрд▓ рдерд╛ред

рдореБрдЭреЗ рдЙрдмрдВрдЯреВ 20.04 рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдирдИ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдорд╢реАрди рдФрд░ рдЙрд╕реА рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ рдереА рдЬреЛ рдЙрддреНрдкрд╛рджрди рдкрд░ рдХрд╛рдо рдХрд░рддреА рд╣реИред

рдорд╢реАрди рдХреЛ рдЕрдиреНрдп рдЙрддреНрдкрд╛рджрди рдорд╢реАрдиреЛрдВ рдХреА рддрд░рд╣ Ansible рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

[2020-10-15 15:11:49 +0000] [18068] [DEBUG] Current configuration:
  config: None
  bind: ['127.0.0.1:8000']
  backlog: 2048
  workers: 1
  worker_class: uvicorn.workers.UvicornWorker
  threads: 1
  worker_connections: 1000
  max_requests: 0
  max_requests_jitter: 0
  timeout: 30
  graceful_timeout: 30
  keepalive: 2
  limit_request_line: 4094
  limit_request_fields: 100
  limit_request_field_size: 8190
  reload: False
  reload_engine: auto
  reload_extra_files: []
  spew: False
  check_config: False
  preload_app: False
  sendfile: None
  reuse_port: False
  chdir: /var/www/realistico/app
  daemon: False
  raw_env: []
  pidfile: None
  worker_tmp_dir: None
  user: 1001
  group: 1001
  umask: 0
  initgroups: False
  tmp_upload_dir: None
  secure_scheme_headers: {'X-FORWARDED-PROTOCOL': 'ssl', 'X-FORWARDED-PROTO': 'https', 'X-FORWARDED-SSL': 'on'}
  forwarded_allow_ips: ['127.0.0.1']
  accesslog: /var/www/realistico/logs/gunicorn/access.log
  disable_redirect_access_to_syslog: False
  access_log_format: %(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"
  errorlog: /var/www/realistico/logs/gunicorn/error.log
  loglevel: debug
  capture_output: False
  logger_class: gunicorn.glogging.Logger
  logconfig: None
  logconfig_dict: {}
  syslog_addr: udp://localhost:514
  syslog: False
  syslog_prefix: None
  syslog_facility: user
  enable_stdio_inheritance: False
  statsd_host: None
  dogstatsd_tags: 
  statsd_prefix: 
  proc_name: None
  default_proc_name: realistico.asgi:application
  pythonpath: None
  paste: None
  on_starting: <function OnStarting.on_starting at 0x7f7ba5fdd550>
  on_reload: <function OnReload.on_reload at 0x7f7ba5fdd670>
  when_ready: <function WhenReady.when_ready at 0x7f7ba5fdd790>
  pre_fork: <function Prefork.pre_fork at 0x7f7ba5fdd8b0>
  post_fork: <function Postfork.post_fork at 0x7f7ba5fdd9d0>
  post_worker_init: <function PostWorkerInit.post_worker_init at 0x7f7ba5fddaf0>
  worker_int: <function WorkerInt.worker_int at 0x7f7ba5fddc10>
  worker_abort: <function WorkerAbort.worker_abort at 0x7f7ba5fddd30>
  pre_exec: <function PreExec.pre_exec at 0x7f7ba5fdde50>
  pre_request: <function PreRequest.pre_request at 0x7f7ba5fddf70>
  post_request: <function PostRequest.post_request at 0x7f7ba5f6e040>
  child_exit: <function ChildExit.child_exit at 0x7f7ba5f6e160>
  worker_exit: <function WorkerExit.worker_exit at 0x7f7ba5f6e280>
  nworkers_changed: <function NumWorkersChanged.nworkers_changed at 0x7f7ba5f6e3a0>
  on_exit: <function OnExit.on_exit at 0x7f7ba5f6e4c0>
  proxy_protocol: False
  proxy_allow_ips: ['127.0.0.1']
  keyfile: None
  certfile: None
  ssl_version: 2
  cert_reqs: 0
  ca_certs: None
  suppress_ragged_eofs: True
  do_handshake_on_connect: False
  ciphers: None
  raw_paste_global_conf: []
  strip_header_spaces: False
[2020-10-15 15:11:49 +0000] [18068] [INFO] Starting gunicorn 20.0.4
[2020-10-15 15:11:49 +0000] [18068] [DEBUG] Arbiter booted
[2020-10-15 15:11:49 +0000] [18068] [INFO] Listening at: unix:/run/gunicorn.sock (18068)
[2020-10-15 15:11:49 +0000] [18068] [INFO] Using worker: uvicorn.workers.UvicornWorker
[2020-10-15 15:11:49 +0000] [18080] [INFO] Booting worker with pid: 18080
[2020-10-15 15:11:49 +0000] [18068] [DEBUG] 1 workers
[2020-10-15 15:11:51 +0000] [18083] [INFO] Booting worker with pid: 18083
[2020-10-15 15:11:53 +0000] [18086] [INFO] Booting worker with pid: 18086
...
[2020-10-15 15:12:09 +0000] [18120] [INFO] Booting worker with pid: 18120
[2020-10-15 15:12:11 +0000] [18123] [INFO] Booting worker with pid: 18123

рд╕рдлрд▓рддрд╛ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдХрдИ рдмрд╛рд░ рд╣рд╛рд░рдиреЗ рдХреЗ рдмрд╛рдж (рдФрд░ рд▓реЙрдЧ рдкрд░ рдХрд┐рд╕реА рднреА рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд┐рдирд╛), рдореИрдВрдиреЗ рдЗрд╕ рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛

ModuleNotFoundError: No module named 'httptools'

httptools рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ, рдореЗрд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рддреНрд░реБрдЯрд┐ рдХреНрдпреЛрдВ рд▓реЙрдЧ рдирд╣реАрдВ рдХреА рдЧрдИ рдереА рдпрд╛ рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрдиреНрдп рдорд╢реАрдиреЛрдВ рдкрд░ рдХреНрдпреЛрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдирдИ рдкрд░ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╣реБрдЖ рдерд╛ рдФрд░ рд╕рднреА рд╕реАрдкреАрдпреВ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рдХреЗ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдиреЛрдб рдХреЛ рдиреАрдЪреЗ рд▓реЗ рдЧрдпрд╛ рдерд╛ред dmesg рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреЗрдд рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдореБрдЭреЗ рдЕрдВрддрддрдГ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА:

[225027.348869] traps: python[44796] general protection ip:7f8bd8f8f8b0 sp:7ffc21a0b370 error:0 in libpython3.7m.so.1.0[7f8bd8dca000+2d9000]

рдЕрдВрдд рдореЗрдВ рдореЗрд░рд╛ рдореБрджреНрджрд╛ https://github.com/python-greenlet/greenlet/issues/178 рдХрд╛ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдерд╛ рдФрд░ рдЗрд╕реЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЧрдирд┐рдХреЛрд░реНрди, рдЧреАрд╡реЗрдВрдЯ рдФрд░ рдЧреНрд░реАрдирд▓реЗрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЪреВрдВрдХрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЛрдИ рдкрд╛рдпрдерди рд▓реЙрдЧ рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВ, рдкрдХрдбрд╝реЗ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдирд┐рдХрд╛рд╕ рдХреЛрдб 0 рд▓реМрдЯрд╛рдПрдВ, рдФрд░ рдЬрдм рд╡реЗ рд╣реЛрддреЗ рд╣реИрдВ рддреЛ рдорд╢реАрди рдХреЛ рд▓рдЯрдХрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддрд╛ рд╣реИред

рдореЗрд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ рдХрд┐ рдЧрдирд┐рдХреЛрд░реНрди рдЗрд╕ рдкреНрд░рдХреГрддрд┐ рдХреЗ рддреЗрдЬреА рд╕реЗ рдХреНрд░реИрд╢-рд▓реВрдкрд┐рдВрдЧ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдФрд░

  • рдпрд╛ рддреЛ рдЫреЛрдбрд╝ рджреЗрдВ рдпрд╛ рдирдП рдХрд╛рдордЧрд╛рд░реЛрдВ рдХреЗ рдкреИрджрд╛ рд╣реЛрдиреЗ рдХреА рджрд░ рдХреЛ рд╕реАрдорд┐рдд рдХрд░реЗрдВ
  • рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдЙрдкрдпреЛрдЧреА рд╕рдВрджреЗрд╢ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ рдФрд░ https://github.com/python-greenlet/greenlet/issues/178

рд╢рд╛рдпрдж max_consecutive_startup_crashes рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ num_workers * 10 рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде?

рдЖрдЗрдП #2504 рдореЗрдВ рдХреНрд░реИрд╢ рд▓реВрдк рдлреАрдЪрд░ рдЕрдиреБрд░реЛрдз рдХреЛ рдЯреНрд░реИрдХ рдХрд░реЗрдВред #2315 рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреАрдЖрд░ рднреА рд╣реИред рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рджреВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдиреЗ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдбреАрдмрдЧ рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рджреВрд╕рд░реЛрдВ рдХреА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рдФрд░ рд╕реБрдзрд╛рд░ рд╣реИрдВред рд╕рдмрдХреЛ рдзрдиреНрдпрд╡рд╛рдж!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

alep picture alep  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mrwillis picture mrwillis  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Bogdanp picture Bogdanp  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

leonardbinet picture leonardbinet  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mw44118 picture mw44118  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ