내 설정은 django 1.3이고 우분투 10.04의 기본 mod_wsgi 및 apache 패키지입니다. 나는 내 개발 VM (오프 DEBUG 및 디버깅 도구 모음)를 내 응용 프로그램의 하나 개의보기를 테스트 :django 서버 속도 향상
ab -n 200 -c 5 http://127.0.0.1/
초당 4 개 요청을 얻었다. 이것은 느린 것처럼 느껴졌 기 때문에 디버깅 툴바가 8ms를 취하는 4 개의 쿼리를 가지고 있다고 알려주는 시점까지 쿼리, 사용 된 인덱스 등을 단순화했습니다. 동일한 테스트를 실행하면 초 당 8 건의 요청 만받습니다. CPU가 전체 시간에 100 % 인 것 같습니다. 이것은 현재 매우 단순한보기에 비해 상당히 느려 보이지만 저전력 VM입니다.
큰 ec2 인스턴스 (4CPU)를 시작하여 어떤 종류의 성능을 얻었는지 확인하고 해당 시스템 클래스에 들어가서 초 당 13 개의 요청 만 받는다는 것에 놀랐습니다. 어떻게 아파치/mod_wsgi의 구성을 변경하여이 클래스에서 더 많은 성능을 얻을 수 있습니까?
은 내가 prefork의 것이 아니라 노동자를 사용하고 생각 :
$ /usr/sbin/apache2 -l
Compiled in modules:
core.c
mod_log_config.c
mod_logio.c
worker.c
http_core.c
mod_so.c
내 근로자의 구성은 다음과 같습니다
<IfModule mpm_worker_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
내 WSGI 설정은 다음과 같이 :
WSGIScriptAlias//home/blah/site/proj/wsgi.py
WSGIDaemonProcess blah user=blah group=blah processes=1 threads=10
WSGIProcessGroup blah
감사합니다 매우 많은 도움을!
참고 : 나는 다른 인스턴스에서 AB 테스트를 시도하고
그럴 것 같았습니다. 이제 초당 21 건의 요청. 또한, 그 큰 ec2 인스턴스는 단지 2 물리적 인 CPU를 가지고 기억. 따라서 프로세스를 2로 설정하면 동일한 이점이 있습니다. 감사! – asciitaxi