1. 程式人生 > >性能測試二十二:環境部署之Nginx

性能測試二十二:環境部署之Nginx

all 安裝nginx 技術分享 全部 tom RoCE 優先 nginx負載均衡 eight

由於單純用tomcat只能通過ip+端口號的形式訪問,這樣只能訪問一個tomcat,而真實項目中又不可能只用一兩個tomcat,所以就需要Nginx來進行分配訪問請求, Nginx本身性能非常好,據官網介紹,每秒支持50Wtps

Nginx只是負責轉發請求,不處理邏輯,

Nginx還有一個做一作用,就是負載均衡

Nginx下有個html文件夾,可以存放項目html靜態文件

Nginx:反向代理服務器

web服務器:轉發請求,nginx,apache,類似於服務員(傳菜的)

應用服務器:tomcat,處理動態的語言,處理邏輯,類似於廚師(做菜的)

技術分享圖片

Nginx安裝

安裝Nginx前需要先安裝pcre、zlib、OpenSSL等模塊,手動安裝比較繁瑣
本次nginx安裝直接使用自動化腳本install.sh安裝
1、首先確保安裝包放到/usr/local/src目錄下

技術分享圖片

技術分享圖片

2、進入到解壓後的目錄下 cd /usr/local/src/auto_setup_nginx_new

技術分享圖片

技術分享圖片

技術分享圖片

3、賦權限 chmod +x ./*

技術分享圖片

4、執行安裝腳本 ./install.sh,安裝過程大概一分鐘

技術分享圖片

技術分享圖片

5、安裝成功後,nginx會自動安裝到/export/servers目錄

技術分享圖片

技術分享圖片

Nginx配置文件修改

進入conf文件夾

技術分享圖片

技術分享圖片

nginx.conf需要修改內容:
1,user:是否是root

技術分享圖片

2,worker_processes:幾個內核,查看cpu核數:cat /proc/cpuinfo,另外一種是top命令,然後按1

查看CPU核數

技術分享圖片

由於只有一個核,所以worker_processes設置為1

技術分享圖片

3,worker_cpu_affinity:對應上一個配置,用二進制形式寫出來(0-x)proxy_passproxy_pass

第一個數字代表一個核,每增加一個核,數字*10

技術分享圖片

如:以下為8核,若16核則應該為0000000000000001開始

技術分享圖片

4,日誌的path:自定義

技術分享圖片

worker_rlimit_nofile:每個worker可以支持多少個鏈接,核數*65535

技術分享圖片

error_page:錯誤頁面,一旦出現以下錯誤,直接跳轉到自己設置的頁面

技術分享圖片

5,include domains/* 關註這個配置,存放tomcat相關的配置,默認不用改

技術分享圖片

每個人tomcat的配置文件都放這裏,Nginx自動全部導進配置

技術分享圖片

6,拷貝/usr/local/src/下的xxx.demo.com到/export/servers/nginx/conf/domains目錄下

技術分享圖片

為teach項目準備的,所以起個明顯的名字,如www.teach.com

技術分享圖片

7,vi www.teach.com

技術分享圖片

8,註意upstream後的名字和proxy_pass保持一致,upstream裏面所配的就是負載均衡的配置

技術分享圖片

技術分享圖片

9,server 192.168.1.209:8080 weight=10 max_fails=2 fail_timeout=30s;有幾個tamcat,配置幾個,weight:權重,每個tomcat分配的負載比例

由於前面我給teach項目配了兩個tomcat,一個8080,一個8090

技術分享圖片

10,server name,修改成跟xxx.demo.一致即可,此域名非向運營商註冊的域名

技術分享圖片

項目日誌、錯誤日誌

技術分享圖片

11,在nginx的sbin目錄下,執行./nginx即可啟動nginx,./nginx -s reload 重啟nginx

cd /export/servers/nginx/sbin

技術分享圖片

執行命令./nginx,沒有日誌,如果有日誌一般就是錯誤日誌,就要去檢查配置有沒有配錯

技術分享圖片

技術分享圖片

12,默認情況下,nginx的日誌在logs目錄下,access.log和error.log

13,啟動nginx,在瀏覽器中通過ip直接訪問PerfTeach的接口,或者配上host,通過域名訪問(先通過ip+端口號的形式訪問,以確認單獨的tomcat是沒問題的,確認沒問題了再通過域名訪問)
先去系統host文件中映射服務器ip和域名

技術分享圖片

技術分享圖片

在瀏覽器中輸入www.teach.com/PerfTeach/login.jsp訪問

技術分享圖片

同理可設置OA項目

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

重啟Nginx:./nginx -s reload

技術分享圖片

訪問:http://www.oa.com/TestOA/userAction_loginUI.action

技術分享圖片

Nginx負載均衡配置
Nginx負載均衡策略
1、輪詢:默認策略,輪流分配請求
2、ip_hash:根據ip進行hash算法,固定的ip分配到固定的後端server
3、fair:根據後端server的響應時間來分配請求,響應時間短的優先分配
4、url_hash:根據url進行hash算法,固定的url分配到固定的後端server

Nginx訪問日誌配置
Nginx的logs目錄access.log會顯示每一次訪問的日誌

技術分享圖片

訪問日誌:

技術分享圖片

技術分享圖片

修改nginx.conf配置文件中
log format main配置項中添加 $request_time可以在access.log中顯示請求時間,單位秒

技術分享圖片

技術分享圖片

技術分享圖片

重啟Nginx:./nginx -s reload

技術分享圖片

回到log目錄下:tail -f access.log

技術分享圖片

刷新一下網頁,多了一個響應時間

技術分享圖片

此日誌記錄的時間,為從請求到Nginx開始,到離開Nginx回到客戶端所耗費的時間

前面講的tomcat的日誌時間,為從請求到tomcat,到離開tomcat回到客戶端的時間

性能測試二十二:環境部署之Nginx