uWSGI에서 thread 활성화

며칠 전에 웹서버 환경을 apache2, php5, mod_wsgi에서 nginx, php5-fpm, uwsgi로 바꿨는데 오늘 확인해보니 flask 앱중 하나가 계속 DB를 잡고 놔주질 않아서 Lock이 걸린 채로 서비스가 동작하질 않고 있었다.
uwsgi를 끄면 lock이 해제되는 걸 봐서 uwsgi로 돌리고 있던 게 문제인게 확실한데 테스트 해보면 잘 돌아가서 삽질을 또 엄청 했다.

확인 해보니 계산이 많이 필요한 작업은 스레드를 따로 돌려놨는데 이게 그냥 돌리면 돌아가지만 uwsgi 위에선 전혀 돌지 않고 있었다. 찾아보니 uwsgi는 기본적으로 멀티스레드가 꺼져 있었다. 실행 할 때 --enable-threads를 붙여서 실행해야 하고 ini파일에선 enable-threads = true라는 한 줄을 추가해주면 된다. 이제서야 정상적으로 돌아간다.

최근 nginx로 바꾸면서 익숙하지 않은 걸 여러 개 접하다 보니 삽질을 많이 하는 것 같다.
아직도 내가 찾지 못한 문제가 있을 것만 같아 두렵다.

kjwon15

I'm a hacker, I want to improve life.

Leave a Reply

Your email address will not be published. Required fields are marked *

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.