目錄
- 1. 創建django項目
- 2. 安裝壓力測試工具
- 3. 安裝生產級服務器uvicorn
- 4. 多進程部署
1. 創建django項目
在桌面創建一個名為django_test的項目:
django-admin startproject django_test
然后使用cd命令進入django_test文件夾內,使用開發者服務器運行項目:
python manage.py runserver
啟動后,使用瀏覽器訪問http://127.0.0.1:8000/,效果如下:
2. 安裝壓力測試工具
本次使用ApacheBench壓力測試工具,用于測試http服務器請求的性能情況(下載鏈接,提取碼:768b )。
解壓后進入Apache24中的bin文件夾內,運行下述命令:
./ab.exe -n100 -c50 http://127.0.0.1:8000/
上述命令表示模擬50個并發,每個并發發送100個訪問請求。
對于django的開發者服務器來說,測試效果如下:
Requests per second: 26.42 [#/sec] (mean)
Time per request: 1892.848 [ms] (mean)
Time per request: 37.857 [ms] (mean, across all concurrent requests)
Transfer rate: 281.54 [Kbytes/sec] received
其中,每秒可以處理的請求數為26.42,這并不是一個很高的值,下面使用一個生產級服務器用于部署django。
3. 安裝生產級服務器uvicorn
uvicorn 是基于 uvloop 和 httptools 構建的非常快速的 ASGI 服務器,下面使用它來部署django程序。
首先安裝uvicorn
pip install uvicorn
然后使用下面的命令啟動django:
python -m uvicorn django_test.asgi:application
然后再按照第2部分內容使用壓力測試工具對其進行壓力測試,效果如下:
Requests per second: 143.65 [#/sec] (mean)
Time per request: 348.058 [ms] (mean)
Time per request: 6.961 [ms] (mean, across all concurrent requests)
可以看到,每秒可以處理的請求數為143.65,比使用開發者服務器快了將近6倍。
4. 多進程部署
前面使用uvicorn將django項目進行了生產級部署,顯著提高了訪問效率。但是這種部署只使用了一個進程,在最終部署時可以根據服務器核數部署多進程服務,命令如下:
python -m uvicorn django_test.asgi:application --workers 2
這里的參數–workers表示進程數,上述命令使用2個進程進行服務。
再按照第2部分內容使用壓力測試工具對其進行壓力測試,效果如下:
Requests per second: 214.66 [#/sec] (mean)
Time per request: 232.923 [ms] (mean)
Time per request: 4.658 [ms] (mean, across all concurrent requests)
可以看到,每秒可以處理的請求數為214.66,比單進程快了很多。