> I've been recently testing out 2:1 concurrency (2 threads per process)
> instead of just 1:1, in order to get more out of Heroku dynos' limited
> memory.
>
> When I switch threads to 2 in production, I start to see a bunch of
> premature Harakiri's.  I have the `harakiri` setting to 25 seconds, but i
> see these much sooner, quite frequently and randomly, mostly for POST
> requests on a few select views.
>
> The following log snippet is illustrative of what is happening:
>
>
> Feb 11 11:08:04 stockton app/web.3: Wed Feb 11 19:08:04 2015 - ***
> HARAKIRI
> ON WORKER 5 (pid: 215, try: 1) ***
> Feb 11 11:08:04 stockton app/web.3: HARAKIRI: -- syscall> 7 0x7fffb0804570
> 0x1 0xfa0 0xc65f337e4f7fbfe7 0x3 0x38a71004160bee26 0x7fffb0804540
> 0x7f2fa9e89cc3
> Feb 11 11:08:04 stockton app/web.3: HARAKIRI: -- wchan>
> poll_schedule_timeout
> Feb 11 11:08:04 stockton app/web.3: Wed Feb 11 19:08:04 2015 - HARAKIRI
> !!!
> worker 5 status !!!
> Feb 11 11:08:04 stockton app/web.3: Wed Feb 11 19:08:04 2015 - HARAKIRI
> [core 0] 10.68.129.226 - POST /admin/menus/food/256195/ since 1423681683
> Feb 11 11:08:04 stockton app/web.3: Wed Feb 11 19:08:04 2015 - HARAKIRI
> !!!
> end of worker 5 status !!!
> Feb 11 11:08:04 stockton heroku/router: at=error code=H13 desc="Connection
> closed without response" method=POST path="/admin/menus/food/256195/"
> host=
> something.com request_id=111d5c11-fa66-452a-af95-4e76f4405739
> fwd="0.0.246.97" dyno=web.3 connect=3ms service=1251ms status=503 bytes=0
> Feb 11 11:22:19 stockton app/web.1: Wed Feb 11 19:22:19 2015 - ***
> HARAKIRI
> ON WORKER 3 (pid: 158, try: 1) ***
> Feb 11 11:22:19 stockton app/web.1: HARAKIRI: -- syscall> running
> Feb 11 11:22:19 stockton app/web.1: HARAKIRI: -- wchan> 0
> Feb 11 11:22:19 stockton app/web.1: Wed Feb 11 19:22:19 2015 - HARAKIRI
> !!!
> worker 3 status !!!
> Feb 11 11:22:19 stockton app/web.1: Wed Feb 11 19:22:19 2015 - HARAKIRI
> [core 0] 10.4.105.38 - POST /admin/menus/menuweek/17446/ since 1423682539
> Feb 11 11:22:19 stockton app/web.1: Wed Feb 11 19:22:19 2015 - HARAKIRI
> !!!
> end of worker 3 status !!!
> Feb 11 11:22:19 stockton heroku/router: at=error code=H13 desc="Connection
> closed without response" method=POST path="/admin/menus/menuweek/17446/"
> host=something.com request_id=bd50bd40-b0a2-4c91-a596-50d0beb552d0
> fwd="0.0.68.34" dyno=web.1 connect=1ms service=225ms status=503 bytes=0
>
>
> As you can see from the heroku/router lines, these requests are both cut
> off way below the 25 second harakiri threshold.
>
> Here is my uwsgi.ini file:
>
> [uwsgi]
>
> http-socket = :$(PORT)
> master = true
> enable-threads = true
> single-interpreter = true
> die-on-term = true
> harakiri = 25
> harakiri-verbose
> reload-mercy = 8
> max-requests = 2000
> post-buffering = 4096
> thunder-lock = true
> processes = 6
> threads = 2
> module = app.wsgi
>
>
> As soon as I set threads back to 1 per process, I no longer see this
> issue.  Any ideas what might be causing this behavior?
>
> *uWSGI Version is 2.0.9*
>
>
>


Harakiri on multiple threads (and multiple coroutines) is fully reliable
only starting from uWSGI 2.1. You can install it from the github master


-- 
Roberto De Ioris
http://unbit.com
_______________________________________________
uWSGI mailing list
[email protected]
http://lists.unbit.it/cgi-bin/mailman/listinfo/uwsgi

Reply via email to