рдореИрдВ рдбреЙрдХрд░ рдкрд░ рдЧрдирд┐рдХреЛрд░реНрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрддреНрдкрд╛рджрди рдЫрд╡рд┐ рд╕реНрдерд╛рдиреАрдп рдЫрд╡рд┐ рдХреЗ рд╕рдорд╛рди рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЙрддреНрдкрд╛рджрди рдбреЙрдХрд░ рдЗрдВрдЬрди рдкрд░ рдпрд╣ рдЕрдЬреАрдм рд╡реНрдпрд╡рд╣рд╛рд░ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ:
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 рдореЗрдВ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдордзреНрдпрд╕реНрде рдХреЗ рд▓рд┐рдП рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рдЕрд╕реАрдорд┐рдд рд░реВрдк рд╕реЗ рдЬрдиреНрдо рджреЗ рд╕рдХрддрд╛ рд╣реИ?
рдЪреВрдВрдХрд┐ рд╡реЗ рдПрдХ рд╣реА рдбреЙрдХрдЯрд░ рдЫрд╡рд┐ рд╣реИрдВ, рд╡реЗ рдмрд┐рд▓реНрдХреБрд▓ рдЙрд╕реА рдХреЛрдб рдкрд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ, рдмрд┐рд▓реНрдХреБрд▓ рдЙрд╕реА рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд▓рдЭрди рдореЗрдВ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдмрдЧ?) рдХрд┐рд╕реА рднреА рдорджрдж рдХреА рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХреА!
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
рдПрдХ рд╕рд╡рд╛рд▓ рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдо 2 gunicorn
рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХреНрдпреЛрдВ рджреЗрдЦрддреЗ рд╣реИрдВ, рдЬрдм рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕реАрдорд╛ 1 рдкрд░ рд╕реЗрдЯ рдХреА рдЬрд╛рддреА рд╣реИ? рдХреНрдпрд╛ рдПрдХ рдорд╛рд╕реНрдЯрд░ рдФрд░ рдПрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╣реИ?
1 рдЖрд░реНрдмрд┐рдЯрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ (рдорд╛рд╕реНрдЯрд░) рд╣реИ рдФрд░ рдПрди рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЖрдкрдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ :)
рддреЛ рдЬрдм рднреА рдХреЛрдИ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕рд╣реА рдмреВрдЯ рдХрд░рддрд╛ рд╣реИ рддреЛ рдЖрдк рдХрдорд╛рдВрдб рдЪрд▓рд╛рддреЗ рд╣реИрдВ? рдпрджрд┐ рдРрд╕рд╛ рд╣реИ рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреБрд░рд╛рдиреЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдорд╛рд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдХ рдирдпрд╛ рдкреИрджрд╛ рд╣реБрдЖ рд╣реИред рдореИрдВ рдЬрд╛рдВрдЪ рдХрд░реВрдВрдЧрд╛ред
@ рд╕рд╛рд░рд╛ -02 рдПрдХ рдЖрдЦрд┐рд░реА рдмрд╛рдд, рдпрд╣ рднреА рдбреЛрдХрд░ рдореЗрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ?
@benoitc docker-compose
рдпрд╣ рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдЙрд╕реА рдХреЛрдб рдХреЛ Openshift
рдкрд░ рдбрд╛рд▓ рд░рд╣рд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рд╕реНрдореГрддрд┐ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдмрдврд╝рд╛рдирд╛ рдареАрдХ рд╣реЛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ docker-compose
рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ limited
рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдмрд╕ рдПрдХ рдЕрджреНрдпрддрди, рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕реНрдореГрддрд┐ рддреНрд░реБрдЯрд┐ рдереА рдФрд░ рд╕реНрдореГрддрд┐ рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛрдиреЗ рдкрд░ рдареАрдХ рдХреА рдЧрдИ рдереАред
@benoitc
рдбреЙрдХрдЯрд░ рдореЗрдВ 5 рдЧрдирд┐рдХреЛрд░реНрди рд╡рд░реНрдХрд░ рдХреЛ рд╕реНрдкреЙрди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред
@ рд╕рд╛рд░рд╛-02
рдЖрдкрдиреЗ рд╕реНрдореГрддрд┐ рддреНрд░реБрдЯрд┐ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдХреА рдкрд╣рдЪрд╛рди рдХреИрд╕реЗ рдХреА?
@ рдЧреБрд▓рд╢рди-рдЧреМрд░рд╡ 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 рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЫрд╡рд┐ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВ 6 рд╢реНрд░рдорд┐рдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рдореИрдВ 3 рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рдерд╛)ред
рдореИрдВрдиреЗ рдкреЙрдб рдХреА рдореЗрдореЛрд░реА рдмрдврд╝рд╛ рджреА рдФрд░ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рдмрд┐рд▓реНрдб рдХреЙрдиреНрдлрд┐рдЧ:
рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?
рдзрдиреНрдпрд╡рд╛рдж
рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рдПрд▓реНрдм рдХреЗ рдкреАрдЫреЗ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдореЗрдВ рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ? рдореИрдВрдиреЗ рдПрд▓реНрдм рдФрд░ рдЧрдирд┐рдХреЛрд░реНрди рдХреЗ рдмреАрдЪ 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
рдкрд░ рдПрд╕рдПрд╕рдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдкрд░ рд╣реИред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдореГрддрд┐ рдореЗрд░реЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╕реНрдореГрддрд┐ рдореЗрдВ рдХреЛрдИ рдмрдбрд╝рд╛ рдореЙрдбрд▓ рд▓реЛрдб рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдмрд╕ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛрддреЗ рд░рд╣рддреЗ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?
рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛, рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рдЪрд╛рд░? рдЕрдЬрдЧрд░ 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 рдХреИрдЯрд╛рд▓рд┐рдирд╛ (рдХрдВрдЯреЗрдирд░реАрдХреГрдд рдирд╣реАрдВ) рдкрд░ рд╣реБрдЖред
рдореБрдЭреЗ рдХреНрдпрд╛ рдорджрдж рдорд┐рд▓реА рд╣реИ:
brew install openssl
~/.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
рдбреЙрдХрд░ рдХреЗ рдЕрдВрджрд░ рдЪрд▓ рд░рд╣реЗ рдлреНрд▓рд╛рд╕реНрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рднреА рдпрд╣реА рдореБрджреНрджрд╛ рдерд╛ред рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдПрдХ рдмрдврд╝рддреА рд╣реБрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЖрдИрдбреА рдХреЗ рд╕рд╛рде рдЕрд╕реАрдорд┐рдд рд░реВрдк рд╕реЗ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░ рд░рд╣реЗ рдереЗред
рдореБрджреНрджрд╛ рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдореГрддрд┐ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдерд╛, рдЬрдм рдореИрдВрдиреЗ рдбреЙрдХрд░ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдордд рд╕реНрдореГрддрд┐ рдХреЛ рдмрдврд╝рд╛рдпрд╛, рддреЛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдкреИрджрд╛ рд╣реБрдПред
@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 рд▓реМрдЯрд╛рдПрдВ, рдФрд░ рдЬрдм рд╡реЗ рд╣реЛрддреЗ рд╣реИрдВ рддреЛ рдорд╢реАрди рдХреЛ рд▓рдЯрдХрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддрд╛ рд╣реИред
рдореЗрд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ рдХрд┐ рдЧрдирд┐рдХреЛрд░реНрди рдЗрд╕ рдкреНрд░рдХреГрддрд┐ рдХреЗ рддреЗрдЬреА рд╕реЗ рдХреНрд░реИрд╢-рд▓реВрдкрд┐рдВрдЧ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдФрд░
рд╢рд╛рдпрдж max_consecutive_startup_crashes
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ num_workers * 10 рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде?
рдЖрдЗрдП #2504 рдореЗрдВ рдХреНрд░реИрд╢ рд▓реВрдк рдлреАрдЪрд░ рдЕрдиреБрд░реЛрдз рдХреЛ рдЯреНрд░реИрдХ рдХрд░реЗрдВред #2315 рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреАрдЖрд░ рднреА рд╣реИред рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рджреВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдиреЗ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдбреАрдмрдЧ рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рджреВрд╕рд░реЛрдВ рдХреА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рдФрд░ рд╕реБрдзрд╛рд░ рд╣реИрдВред рд╕рдмрдХреЛ рдзрдиреНрдпрд╡рд╛рдж!
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдмрд╕ рдПрдХ рдЕрджреНрдпрддрди, рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕реНрдореГрддрд┐ рддреНрд░реБрдЯрд┐ рдереА рдФрд░ рд╕реНрдореГрддрд┐ рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛрдиреЗ рдкрд░ рдареАрдХ рдХреА рдЧрдИ рдереАред