2012-09-27 4 views
2

스레딩에 크게 의존하는 장고 응용 프로그램을 가지고 있으며 WSGIDaemonProcess에 추가 한 프로세스 또는 스레드의 양이 아무리 많아도 성능 향상을 알 수 없습니다.mod_wsgi는 단일 파이썬 인터프리터에서 실행됩니까?

예/아니오 답변을 찾을 수 없습니다. 궁금합니다. mod_wsgi가 각 요청에 대해 동일한 인터프리터를 사용하여 GIL 제한으로 인해 병목 현상이 발생하고있을 수 있습니까?

그렇다면이 제한 사항을 해결하는 데 도움이되는 다른 방법을 권하고 싶습니다.

답변

0

일반적인 구성의 경우 모든 요청은 동일한 하위 해석기에서 처리됩니다.

동일한 프로세스의 다른 하위 해석기에서 여전히 GIL의 영향을받습니다.

실제 mod_wsgi 구성을 게시하여 올바르게 설정했는지 확인하십시오.

실제 병목 현상이 어디 있는지 New Relic을 시도해보십시오.

이 찾는 병목

내 PyCon 미국의 2012 이야기를 시계
+0

가상 환경이 있다면 mod_wsgi는 거기에서 파이썬 인터프리터를 사용하지 않습니다 오히려 OS 레벨 하나? mod_wsgi의 사이트 패키지 검색을 허용했지만 웹 요청을 할 때 프로세스가 사용하고있는 실제 실행 파일을 모른다. 감사. – johnny

+0

파이썬 가상 환경을 생성 할 때 사실상 파이썬 환경에서 만들어진 모든 파이썬 설치 앞에 레이어가됩니다. 가상 환경을 사용하면 여전히 원래 Python 설치의 Python 실행 파일을 사용하고 있지만 물건을 찾는 위치가 조금 다르며 가상 환경의 항목을 사용합니다. mod_wsgi의 경우 실제로는 Python 공유 라이브러리가 아니라 실행 파일이지만 동일한 거래가 사용됩니다. 문제가 있으면 이전 문제를 따르지 않고 별도의 질문을 만드십시오. –

-1

짧은 답변 :

번호

긴 대답 :

프로세서보다 더 잘 활용하기 위해이 기능, 멀티 스레딩을 사용하는 경우에도 아파치가 단일 프로세스뿐만 아니라 요청을 처리하기 위해 여러 프로세스를 사용한다는 사실에 의해 더욱 강화되었습니다. 따라서 특정 프로세스 내에서 GIL에 대한 경합이 있더라도 GIL이 프로세스에만 국한되어 프로세스간에 확장되지 않으므로 다른 프로세스가 실행되는 것을 중지하지 않습니다.

인용 : https://code.google.com/p/modwsgi/wiki/ProcessesAndThreading

성능을 향상시키는 방법을 추천하는 사람에 대한 충분한 정보를 제공하지 않은,하지만 당신이 실제로 파이썬에서 스레드 무거운 프로그램을 작성한 경우, 그 첫 번째 실수. CPython에서 프로그램을 실행하는 대신 Jython 또는 IronPython을 대신 사용해보십시오. 그러나 mod_wsgi와는 작동하지 않을 것이므로, 여러분이하려고하는 것을 이해하기 위해서는 더 많은 세부 사항이 필요합니다 ...

관련 문제