提高Django高併發性的部署方案(Python)

2021-08-18 05:30:34 字數 4023 閱讀 4839

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 | grep

uwsgi

4.4 .  安裝nginx : 

apt-get install nginx

5、配置 nginx 的配置檔案

在 django 的主目錄下建立下面的 nginx 配置檔案,然後做軟連線到 nginx 的配置檔案目錄,或者直接在 nginx 配置檔案目錄中新增該檔案也可以

5.1 建立 nginx 配置檔案

[root@crazy-acong django_test]# cat /data/django_test/django-nginx.conf 

# 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 /

}

5.2 重啟nginx 服務

[root@crazy-acong django_test]# nginx -t

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

這個時候就可以通過 http://ip:8000 訪問 django 程式了,不過目前還存在乙個問題,訪問 http://ip:8000/admin 發現靜態檔案貌似沒讀取到,需要通過下面的方法解決靜態檔案的問題

# 在 django 程式的 settings.py 檔案中新增以下內容

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

然後需要修改 nginx 配置檔案中 指向 django 靜態目錄的配置檔案

[root@crazy-acong django_test]# cat /data/django_test/django-nginx.conf 

# 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 /

}

最後重啟 nginx 服務即可

[root@crazy-acong django_test]# nginx -t

nginx: 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或撥號連線的使用者。如今,併發性是由移動客戶端和較新的應用程式體系結構的組合引起的,這些體系...