效能測試二十二:環境部署之Nginx
由於單純用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回到客戶端的時間