-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Description
Nowadays I meet a strange problem, when I use the gunicorn with uvicorn.workers.UvicornWorker to start my project, one or more Worker will TIMEOUT and restart my the mater, the logs when the Worker exit are:
WORKER TIMEOUT (pid:63)
Worker (pid:63) was sent code 134!
Booting worker with pid: 1373
the configs of the gunicorn are:
workers = int(multiprocessing.cpu_count() / 2)
threads = 1
bind = '0.0.0.0:9380'
worker_class = 'uvicorn.workers.UvicornWorker'
pidfile = '/var/run/gunicorn.pid'
accesslog = '/data/dscn/scheduler/logs/gunicorn.log'
errorlog = '/data/dscn/scheduler/logs/gunicorn.log'
loglevel = 'debug'
timeout = 120
I also add the worker_abort and worker_exit hooks to try to find the problem,but boths the hooks are not excuted. Then I try to find some clues from the coredump file, I open the core file by the gdb, and the stack infos are:
#0 __futex_abstimed_wait_common64 (private=, cancel=true, abstime=0x0, op=393, expected=0, futex_word=0x56412be417a0) at ./nptl/futex-internal.c:57
#1 __futex_abstimed_wait_common (cancel=true, private=, abstime=0x0, clockid=0, expected=0, futex_word=0x56412be417a0) at ./nptl/futex-internal.c:87
#2 __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word@entry=0x56412be417a0, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=)
at ./nptl/futex-internal.c:139
#3 0x00007f68399b6bdf in do_futex_wait (sem=sem@entry=0x56412be417a0, abstime=0x0, clockid=0) at ./nptl/sem_waitcommon.c:111
#4 0x00007f68399b6c78 in __new_sem_wait_slow64 (sem=0x56412be417a0, abstime=0x0, clockid=0) at ./nptl/sem_waitcommon.c:183
#5 0x000056412a53df00 in PyThread_acquire_lock_timed ()
#6 0x000056412a592151 in ?? ()
#7 0x000056412a57c282 in ?? ()
#8 0x000056412a572b4b in _PyObject_MakeTpCall ()
#9 0x000056412a56df71 in _PyEval_EvalFrameDefault ()
#10 0x000056412a589be1 in ?? ()
#11 0x000056412a56bb7a in _PyEval_EvalFrameDefault ()
#12 0x000056412a57caec in _PyFunction_Vectorcall ()
#13 0x000056412a566ae8 in _PyEval_EvalFrameDefault ()
#14 0x000056412a589e41 in ?? ()
#15 0x000056412a568a37 in _PyEval_EvalFrameDefault ()
#16 0x000056412a57caec in _PyFunction_Vectorcall ()
#17 0x000056412a566ae8 in _PyEval_EvalFrameDefault ()
#18 0x000056412a598b40 in ?? ()
#19 0x000056412a568b57 in _PyEval_EvalFrameDefault ()
#20 0x000056412a598b40 in ?? ()
#21 0x000056412a568b57 in _PyEval_EvalFrameDefault ()
#22 0x000056412a598b40 in ?? ()
#23 0x000056412a568b57 in _PyEval_EvalFrameDefault ()
#24 0x000056412a598b40 in ?? ()
#25 0x000056412a568b57 in _PyEval_EvalFrameDefault ()
#26 0x000056412a598b40 in ?? ()
#27 0x000056412a568b57 in _PyEval_EvalFrameDefault ()
#28 0x000056412a598b40 in ?? ()
#29 0x000056412a568b57 in _PyEval_EvalFrameDefault ()
#30 0x000056412a598b40 in ?? ()
#31 0x000056412a568b57 in _PyEval_EvalFrameDefault ()
#32 0x000056412a598b40 in ?? ()
#33 0x000056412a568b57 in _PyEval_EvalFrameDefault ()
#34 0x000056412a598b40 in ?? ()
#35 0x000056412a568b57 in _PyEval_EvalFrameDefault ()
#36 0x000056412a598b40 in ?? ()
#37 0x000056412a568b57 in _PyEval_EvalFrameDefault ()
#38 0x000056412a598b40 in ?? ()
#39 0x000056412a568b57 in _PyEval_EvalFrameDefault ()
#40 0x000056412a598b40 in ?? ()
#41 0x000056412a568b57 in _PyEval_EvalFrameDefault ()
#42 0x000056412a598b40 in ?? ()
#43 0x000056412a568b57 in _PyEval_EvalFrameDefault ()
#44 0x000056412a598b40 in ?? ()
#45 0x000056412a568b57 in _PyEval_EvalFrameDefault ()
#46 0x000056412a598b40 in ?? ()
#47 0x000056412a568b57 in _PyEval_EvalFrameDefault ()
#48 0x000056412a598b40 in ?? ()
#49 0x00007f67e77ea59e in ?? () from /usr/lib/python3.10/lib-dynload/_asyncio.cpython-310-x86_64-linux-gnu.so
#50 0x00007f67e77ea3b4 in ?? () from /usr/lib/python3.10/lib-dynload/_asyncio.cpython-310-x86_64-linux-gnu.so
#51 0x000056412a572b4b in _PyObject_MakeTpCall ()
#52 0x000056412a6ba10a in ?? ()
#53 0x000056412a56fc1f in ?? ()
#54 0x000056412a56ceed in _PyEval_EvalFrameDefault ()
#55 0x000056412a57caec in _PyFunction_Vectorcall ()
#56 0x000056412a566ae8 in _PyEval_EvalFrameDefault ()
#57 0x000056412a57caec in _PyFunction_Vectorcall ()
#58 0x000056412a566ae8 in _PyEval_EvalFrameDefault ()
#59 0x000056412a57caec in _PyFunction_Vectorcall ()
#60 0x000056412a566ae8 in _PyEval_EvalFrameDefault ()
#61 0x000056412a57caec in _PyFunction_Vectorcall ()
#62 0x000056412a566ae8 in _PyEval_EvalFrameDefault ()
#63 0x000056412a57caec in _PyFunction_Vectorcall ()
#64 0x000056412a56bb7a in _PyEval_EvalFrameDefault ()
#65 0x000056412a57caec in _PyFunction_Vectorcall ()
--Type for more, q to quit, c to continue without paging--
#66 0x000056412a566ae8 in _PyEval_EvalFrameDefault ()
#67 0x000056412a589be1 in ?? ()
#68 0x000056412a56bb7a in _PyEval_EvalFrameDefault ()
#69 0x000056412a57caec in _PyFunction_Vectorcall ()
#70 0x000056412a566ae8 in _PyEval_EvalFrameDefault ()
#71 0x000056412a57caec in _PyFunction_Vectorcall ()
#72 0x000056412a566ae8 in _PyEval_EvalFrameDefault ()
#73 0x000056412a57caec in _PyFunction_Vectorcall ()
#74 0x000056412a566ae8 in _PyEval_EvalFrameDefault ()
#75 0x000056412a57caec in _PyFunction_Vectorcall ()
#76 0x000056412a566ae8 in _PyEval_EvalFrameDefault ()
#77 0x000056412a57caec in _PyFunction_Vectorcall ()
#78 0x000056412a566ae8 in _PyEval_EvalFrameDefault ()
#79 0x000056412a589be1 in ?? ()
#80 0x000056412a56bb7a in _PyEval_EvalFrameDefault ()
#81 0x000056412a57caec in _PyFunction_Vectorcall ()
#82 0x000056412a566ae8 in _PyEval_EvalFrameDefault ()
#83 0x000056412a57caec in _PyFunction_Vectorcall ()
#84 0x000056412a5669a2 in _PyEval_EvalFrameDefault ()
#85 0x000056412a64be56 in ?? ()
#86 0x000056412a64bd26 in PyEval_EvalCode ()
#87 0x000056412a672ae8 in ?? ()
#88 0x000056412a66d2ef in ?? ()
#89 0x000056412a672885 in ?? ()
#90 0x000056412a671e68 in _PyRun_SimpleFileObject ()
#91 0x000056412a671b47 in _PyRun_AnyFileObject ()
#92 0x000056412a66602e in Py_RunMain ()
#93 0x000056412a63fd6d in Py_BytesMain ()
#94 0x00007f6839943d90 in __libc_start_call_main (main=main@entry=0x56412a63fd30, argc=argc@entry=5, argv=argv@entry=0x7ffe5fb518e8) at ../sysdeps/nptl/libc_start_call_main.h:58
#95 0x00007f6839943e40 in __libc_start_main_impl (main=0x56412a63fd30, argc=5, argv=0x7ffe5fb518e8, init=, fini=, rtld_fini=, stack_end=0x7ffe5fb518d8)
at ../csu/libc-start.c:392
#96 0x000056412a63fc65 in _start ()
From the logs above, the Worker with pid 63 has been killed, when it has been killed, it does not handle any request, this I'm pretty sure from the accesslog.
Now T don't konw how to locate the problem, could you please give me some advice?
Thanks.