2016-08-16 55 views
2

我有一個Nginx web服務器,uWSGI應用服務器安裝在單個CPU Ubuntu 14.04映像上。什麼是uWSGI服務器使用的標準工數和線程數?

此uWSGI應用程序服務器成功處理Flask應用程序請求。 我面臨的問題是,有時來自單個客戶端的請求會超時一段時間(1-2小時)。

發生這種情況時,沒有在我的uwsgi.conf文件中指定工作者或線程。 每個CPU是否有理想的工人/線程數量?

我正在使用emperor服務來啓動uWSGI應用程序服務器。 這是我的uwsgi.conf看起來像

description "uWSGI" 
start on runlevel [2345] 
stop on runlevel [06] 
respawn 

env UWSGI=/var/www/parachute_server/venv/bin/uwsgi 
env LOGTO=/var/log/uwsgi/emperor.log 

exec $UWSGI --master --workers 2 --threads 2 --emperor /etc/uwsgi/vassals --die-on-term --uid www-data --gid www-data --logto $LOGTO --stats 127.0.0.1:9191 

難道這是一個性能問題在關於nginx的/ uwsgi或者是更可能的是,這些超時被,因爲我只使用一個CPU出現?

任何幫助非常感謝!

回答

3

有趣的問題,你有...

一般情況下,你會指定至少2 * CPU數目+ 1,這是因爲uWSGI可能被執行讀/寫一個插座,然後你就會有另一名工人接受請求。此外,如果您的工作人員是同步的,則threads標誌很有用,因爲他們可以通知主線程他們仍在工作,因此可以防止超時。

我認爲有一名工作人員是您超時的原因(阻止所有其他請求),但您應該檢查您的應用程序的響應。如果他們需要很長時間(比如從數據庫讀取數據),那麼您需要調整Nginx中的uwsgi_read_timeout指令,以允許uWSGI處理請求。

我希望這會有所幫助。

相關問題