2012-03-30 38 views
5

Tôi muốn chạy ứng dụng django của mình bằng apache và uWSGI. Vì vậy, tôi đã cài đặt apache sử dụng worker_module. Khi cuối cùng tôi chạy ứng dụng của mình và kiểm tra hiệu suất của nó bằng cách sử dụng httperf, tôi nhận thấy rằng hệ thống chỉ có thể phục vụ một người dùng cùng một lúc. Điều kỳ lạ là khi tôi chạy uWSGI sử dụng lệnh tương tự như dưới đây với nginx tôi có thể phục vụ 97 người dùng đồng thời. Có thể apache hoạt động rất chậm?Chạy ứng dụng django trên apache với uWSGI

cấu hình apache tôi trông như thế (yếu tố quan trọng nhất - các thiết lập còn tồn tại là mặc định):

<IfModule mpm_worker_module> 
    StartServers   2 
    MinSpareThreads  25 
    MaxSpareThreads  75 
    ThreadsPerChild  25 
    MaxClients   63 
    MaxRequestsPerChild 0 
</IfModule> 
... 
<Location /> 
    SetHandler uwsgi-handler 
    uWSGISocket 127.0.0.1:8000 
</Location> 

tôi chạy uwsgi sử dụng:

uwsgi --socket :8000 --chmod-socket --module wsgi_app --pythonpath /home/user/directory/uwsgi -p 6 

Trả lời

1

tôi khuyên bạn nên đặt Apache đằng sau Nginx. Ví dụ:

  • bind Apache để 127.0.0.1:81
  • bind nginx để 0.0.0.0:80
  • làm lĩnh nginx proxy Apache sẽ phục vụ

Nó không phải là một câu trả lời trực tiếp cho câu hỏi của bạn, nhưng đó là IMHO giải pháp tốt nhất:

  • hiệu suất tốt nhất
  • bảo vệ tốt nhất cho Apache
  • cho phép di chuyển các trang web Apache để Nginx từng bước (uWSGI hỗ trợ PHP bây giờ ...), một lần nữa cho hiệu suất tốt nhất và an ninh
+0

câu trả lời Rất hữu ích, nhưng tôi chỉ muốn kiểm tra mà máy chủ http là tốt hơn để phục vụ các ứng dụng django. Tôi bối rối vì tôi nghĩ apache sẽ tốt hơn một nửa là nginx. – szaman

+1

Đối với apache, mod_wsgi là cũ hơn và do đó trưởng thành hơn uwsgi cho apache. Tuy nhiên, bạn có thể muốn hỏi về kênh irc uwsgi hoặc danh sách gửi thư để tiếp cận cộng đồng để có câu trả lời về uwsgi. – jpic

Các vấn đề liên quan