效能測試之tomcat+nginx負載均衡

nginx tomcat 配置

準備工作:兩個tomcat 執行命令 cp -r apache-tomcat-8。5。56 apache-tomcat-8。5。56_2

效能測試之tomcat+nginx負載均衡

修改被複制的tomcat2下conf的server。xml 的埠號,不能與tomcat1的埠號重複,不然會啟動報錯 ,一臺電腦上想要啟動多個tomcat,需要修改server。xml檔案的3個埠

分別修改tomcat1和tomcat2 埠,這裡有三個埠需要修改,分別如下: shutdown 埠:8005 主要負責啟動關閉。 ajp埠:8009 主要負責透過ajp均衡(常用於apache和tomcat整合) http埠:8080 可以透過web頁面直接訪問(nginx+tomcata整合)

tomcat2的http埠修改為888】1

效能測試之tomcat+nginx負載均衡

tomcat2的ajp埠修改為8010

效能測試之tomcat+nginx負載均衡

tomcat2的shutdown埠修改為8006

效能測試之tomcat+nginx負載均衡

分別在每個tomca的bin目錄下啟動服務 startup

效能測試之tomcat+nginx負載均衡

使用 lsof -f:8080 lsof -f:8881 檢視是否埠被佔用,得知專案已經成功被啟動

效能測試之tomcat+nginx負載均衡

兩個埠訪問都是正常的

效能測試之tomcat+nginx負載均衡

效能測試之tomcat+nginx負載均衡

nginx conf檔案講解

全域性塊:配置影響nginx全域性的指令。一般有執行nginx伺服器的使用者組,nginx程序pid存放路徑,日誌存放路徑,配置檔案引入,允許生成worker process數等

events塊:配置影響nginx伺服器或與使用者的網路連線有每個程序的最大連線數,選取哪種事件驅動模型處理連線請求,是否允許同時接受多個網路連線,開啟多個網路連線序列化等。

http塊;可以巢狀多個server,配置代理,快取,日誌定義等絕大多數功能和第三方模組的配置。如檔案引入,mime-type定義,日誌自定義,是否使用sendfile傳輸檔案,連線超時時間,單連線請求數等

server塊:配置虛擬主機的相關引數,一個http中可以有多個server

location塊:配置請求的路由,以及各種頁面的處理情況配置負載均衡

worker_processes

設定nginx工作的程序數,一般設定與cpu核數相等或2倍

效能測試之tomcat+nginx負載均衡

events {

use epoll;

worker_connections 1024;

}

epoll

事件模型,處理效率高

worker_connections

單個worker程序允許客戶端最大連線數,實際最大值=work_processes * worker_connections

multi_accept

告訴nginx收到一個新連線的通知後接受盡可能多的連線,預設是on,設定為on後,多個worker按

序列

方式來處理連線,也就是一個連線只有一個worker被喚醒,其他的處於休眠狀態,設定為off後,多個worker按並行方式來處理連線,也就是一個連線會喚醒所有的worker,直到連線分配完畢,沒有取得連線的繼續休眠。

引數只針對非常大量連線有最佳化作用。

效能測試之tomcat+nginx負載均衡

Include

mime。types : 媒體型別include 只是一個在當前檔案中包含另一個檔案內容的指令。

default_type

application/octet-stream :預設媒體型別足夠支援所以請求。

sendfIle on

開啟高效檔案傳輸模式

,sendfle指令指定nginx是否呼叫sendfle數來輸出檔案,對於普通應用設為 on,如果

用來進行下載等應用磁碟IO重負載應用,可設定為off

,以平衡磁碟與網路IO處理速度,降低系統的負載。注意:如果圖片顯示不正常把這個改成off。

tcp_nopush on

必須在sendfle開啟模式才有效,防止網路阻塞

,積極的減少網路報文段的數量(將響應頭和正文的開始部分一起傳送,而不一個接一個的傳送)

keepalive_timeout

網路會話保持時間

tcp_nodelay

:也是防止網路

阻塞

,需要開啟keepalive引數才有效

client header buffer size 4k

:客戶端

請求頭部的緩衝區大小

,這個可以根據你的系統分頁大小來設定,一般一個請求頭的大小不會超過1k,不過由於一般系統分頁都要大於1k,所以這裡設定為分頁大小。分頁大小可以用命令getconf PAGESIZE取得

open file cache max=102400 inactive=20s

: 為開啟

檔案指定快取

,預設是沒有啟用的,max指定快取數量,建議和開啟檔案數一致,inactive 是指經過多長時間檔案沒被請求後刪除快取

open file cache valid 30s

:這個是指檢查一次快取的有效資訊的頻率

open file cache min uses 1:

open file cache指今中的inactive 引數時間內檔案的最少使用次數,如果超過這數字,檔案描述符一直是在快取中開啟的,如上,如果有一個檔案在inactive 時間內一次沒被使用,它將被移除

client header timeout : 設定請求頭的超時時間

。我們也可以把這個設定低一些如果超過這個時間沒有傳送任何資料,nginx 將返回request time out的錯誤

client body timeout :設定請求體的超時時間

。可以把這個設定低一些,超過這個時間沒有傳送任何資料,和上面一樣的錯誤提示

reset timeout connection : 通知nginx關閉未響應的客戶端連

接,會釋放那個客戶端所佔有的記憶體空間

send timeout:響應客戶端超時時間

,這個超時時間僅限於兩個活動之間的時間,如果超過這個時間,客戶端沒有任何活動,nginx關閉連線。

server tokens

:並不會nginx執行的速度更快,但它可以關閉在錯誤頁面中的nginx版本資訊,更安全

client max body size:上傳檔案大小的限制

配置負載均衡

在nginx。conf 配置

效能測試之tomcat+nginx負載均衡

upstream zcz_app {server 192。168。43。138:8080 weight=1 max_fails=2 fail_timeout=30s;server 192。168。43。138:8881 weight=1 max_fails=2 fail_timeout=30s;}

負載均衡以upstream為模組定義,後面跟模組名稱

server ip地址:服務埠:

均衡策略: weight 權重

輪詢次數:max_fails

輪詢時長:fail_timeout

在location模組下使用負載均衡,註解自帶的location,新增上面定義的負載均衡

location / {proxy_next_upstream http_502 http_504 error timeout invalid_header;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://zcz_app;root html;index index。html index。htm;}

效能測試之tomcat+nginx負載均衡

重新載入配置檔案

/usr/local/nginx/sbin/nginx -s reload

效能測試之tomcat+nginx負載均衡

未負載均衡前需要加上埠號

效能測試之tomcat+nginx負載均衡

負載均衡後訪問不需要加埠號

效能測試之tomcat+nginx負載均衡

負載均衡的幾種方式

輪詢

:預設策略,如果伺服器down掉了,會自動刪除該伺服器;此策略適合伺服器配置相當,無狀態且短平快的服務使用

iphash依據ip分配

:iphash不能與backup同時使用:此策略適合有狀態服務,比如session; 伺服器需要別除,必須手動停掉 (常用於灰度釋出,透過配置iphash 實現)

least conn最小連線

:此負載均衡策略適合請求處理時間長短不一造成伺服器過載的情況

weight權重

:權重越高分配到需要處理的請求越多;此策略可以與least conn和ip hash結合使用,此策略比較適合伺服器的硬體配置差別比較大的情況

fair響應時間

:負載均衡策略的實現需要安裝第三方外掛;按照伺服器端的響應時間來分配請求,響應時間短的優先分配

url_hash依據URL分配

:按訪問ur的hash結果來分配請求,使每個url定向到同一個後端伺服器,要配合快取命中來使用