django gunicorn 各worker class簡單性能測試

版權歸做者全部,任何形式轉載請聯繫做者。
做者:petanne(來自豆瓣)
來源:https://www.douban.com/note/564871723/python

======================================================================
測試環境:
======================================================================
雙核虛擬機centos6.8,內存4G
python==2.7.11
gunicorn==19.6.0
django==1.9.2
tornado==4.3apache

======================================================================
gunicorn文檔中支持的worker class:
======================================================================
sync 默認,使用同步阻塞的網絡模型
eventlet - Requires eventlet >= 0.9.7
gevent - Requires gevent >= 0.13
tornado - Requires tornado >= 0.2
gthread - Python 2 requires the futures package to be installed
gaiohttp - Requires Python 3.4 and aiohttp >= 0.21.5django

======================================================================
工具:
======================================================================
apache ab
如: ab -c 10 -n 100 -p post.txt http://www.test.comcentos

======================================================================
測試參數:
======================================================================
gunicorn 進程數 -w 16 (與-w 8差距不大,測試機雙核)
tornado 進程數16
post 1KB & HTTPResponse('hello world')
-c在保證Failed requests基本爲0的前提下取最大值
使用-n爲-c的10倍網絡

======================================================================
guincorn運行django項目:
======================================================================
sync
-c 100 -n 1000 Requests per second 120
調整併發量結果仍然在120左右
CPU峯值80併發

eventlet
-c 50 -n 1000 Requests per second 230
Failed requests在180,即便-c 10,仍然有Failed requests
CPU峯值82tornado

gevent
-c 500 -n 5000 Requests per second 230
Failed requests10之內,穩定
CPU峯值83工具

tornado
-c 200 -n 4000 Requests per second 250-350
Failed requests10左右,不穩定
但-c加到500,併發降爲110,錯誤數100之內
CPU峯值85post

能夠看到gevent方式最穩定(推薦),eventlet錯誤數較多,tornado較高但不穩定測試

======================================================================
單獨tornado項目,以多進程方式啓動服務,不使用guincorn
======================================================================
-c 1000 -n 10000 Requests per second 1300-1500
CPU峯值80

======================================================================以上均爲真實測試數據,但因爲測試環境及數據等緣由,僅供參考======================================================================

相關文章
相關標籤/搜索