uwsgi
的主要特點是:
2. nginx :
nginx
是乙個高效能的負載均衡
和反向**
伺服器,nginx是一款
輕量級的
web伺服器/
反向**
伺服器及
電子郵件
**伺服器。
特點是占有記憶體少,
併發能力強。
結構與擴充套件:
乙個主程序和多個工作程序。工作程序是
單執行緒的,且不需要特殊授權即可執行;
3. nginx和uwsgi的關係:
客戶端傳送乙個http請求,被nginx伺服器接收,nginx伺服器將請求**給uwsgi,uwsgi將請求**給實現uwsgi
協議的應用程式(flask,gunicorn等等)
4. uwsgi的安裝:
4.1: [root@crazy-acong ~]# pip3
install
uwsgi
4.2: 建立django專案並配置uwsgi配置檔案:
cd 進入到 django 的主目錄
vi test-uwsgi.ini # 新增以下配置檔案,按需修改即可:
[uwsgi]
# 對外提供 http 服務的埠
#用於和 nginx 進行資料互動的埠
socket = 127.0.0.1:8899
# django 程式的主目錄。
chdir = /project/django
# django's wsgi file
wsgi-file = /project/django_test/django_test/wsgi.py
# 最大的工作程序數
processes = 4
#在每個程序中的最大執行緒數
threads = 2
# 通過該埠可以監控 uwsgi 的負載情況
stats = 127.0.0.1:9999
# 清理環境出口
vacuum = true
# 後台執行,並輸出日誌
daemonize = /var/log/uwsgi.log
4.3 通過 uwsgi 配置檔案啟動 django 程式
uwsgi test-uwsgi.ini # 在瀏覽器中 通過訪問 http://ip:9000 可以看到發布的 django 程式
4.4. 檢視uwsgi的啟動程序狀態
netstat -lnpt | grep4.4 . 安裝nginx :uwsgi
apt-get install nginx
5、配置 nginx 的配置檔案
在 django 的主目錄下建立下面的 nginx 配置檔案,然後做軟連線到 nginx 的配置檔案目錄,或者直接在 nginx 配置檔案目錄中新增該檔案也可以
5.1 建立 nginx 配置檔案
[root@crazy-acong django_test]# cat /data/django_test/django-nginx.conf5.2 重啟nginx 服務# the upstream component nginx needs to connect to
upstream django
# configuration of the server
server
location /static
# finally, send all non-media requests to the django server.
location /
}
[root@crazy-acong django_test]# nginx -t這個時候就可以通過 http://ip:8000 訪問 django 程式了,不過目前還存在乙個問題,訪問 http://ip:8000/admin 發現靜態檔案貌似沒讀取到,需要通過下面的方法解決靜態檔案的問題nginx: the configuration
nginx: configuration
[root@crazy-acong django_test]# nginx -s reload
[root@crazy-acong django_test]# netstat -lnpt | grep
8000
tcp 00
0.0.0.0:8000
0.0.0.0:* listen 43492/nginx
# 在 django 程式的 settings.py 檔案中新增以下內容然後需要修改 nginx 配置檔案中 指向 django 靜態目錄的配置檔案static_root = os.path.join(base_dir, "
static_all")
# 然後通過執行該命令,將靜態檔案整合到乙個目錄中
[root@crazy-acong django_test]# python3 manage.py collectstatic
[root@crazy-acong django_test]# ll
total
40drwxr-xr-x 3 nginx games 4096 mar 14
14:42
-rw-r--r-- 1 root root 3072 mar 14
14:51
db.sqlite3
-rw-r--r-- 1 root root 1026 mar 14
15:18 django-nginx.conf
drwxr-xr-x 3 nginx games 4096 mar 14
15:45
django_test
-rwxr-xr-x 1 nginx games 809 mar 14
14:37
manage.py
drwxr-xr-x 2 nginx games 4096 mar 14
14:42
static
drwxr-xr-x 3 root root 4096 mar 14
15:47
drwxr-xr-x 2 nginx games 4096 mar 14
14:40
templates
-rw-r--r-- 1 root root 565 mar 14
15:40 test-uwsgi.ini
-rw-r--r-- 1 root root 664 mar 14
15:28 uwsgi_params
[root@crazy-acong django_test]# cat /data/django_test/django-nginx.conf最後重啟 nginx 服務即可# the upstream component nginx needs to connect to
upstream django
# configuration of the server
server
location /static
# finally, send all non-media requests to the django server.
location /
}
[root@crazy-acong django_test]# nginx -tnginx: the configuration
nginx: configuration
[root@crazy-acong django_test]# nginx -s reload
三千高併發效能優化
3臺64核的應用伺服器,每個應用伺服器部署4個節點 一台資料庫伺服器 3個負載均衡nginx,每個nginx導向4個節點。高併發大量的系統日誌將導致系統堵塞,日誌只開啟error級別,或者日誌在另一線程批量處理。為了保持乙個編號不重複,每次獲取都到資料庫中加1,這樣將導致資源競爭鎖住,調整為每次取一...
SpringCloud高併發效能優化
當系統的使用者量上來,每秒qps上千後,可能就會導致系統的各種卡頓,超時等情況,這時優化操作不可避免 第一步 優化大sql,對於多表關聯的sql,當單錶資料幾百上千萬行時,執行可能會達到好幾秒,對微服務系統來說,我是不建議join多表操作,除非是資料量少的維表,我們可以將一句大sql拆分成多個過程,...
為什麼高併發性很重要?
因此,現在比以前複雜得多,架構師面臨的最大挑戰之一就是併發。自web服務開始以來,併發水平一直在不斷增長。乙個流行的 服務數十萬甚至數百萬同時使用者並不罕見。十年前,併發的主要原因是緩慢的客戶端 具有adsl或撥號連線的使用者。如今,併發性是由移動客戶端和較新的應用程式體系結構的組合引起的,這些體系...