學(xué)習(xí)目標(biāo)
1.了解JMeter的服務(wù)器監(jiān)控工具的安裝與配置,學(xué)會(huì)使用JMeter插件進(jìn)行都市商城所在服務(wù)器的CPU與內(nèi)存等監(jiān)控
2.了解Nginx的運(yùn)行原理,知道反向代理,負(fù)載均衡的作用,以及知道如何對(duì)其進(jìn)行配置
常見問題
1.JMeter自動(dòng)拉伸
在JMeter的選項(xiàng)里,選擇外觀,選擇最后一個(gè)WINDOWS CLASSIC.
2.跑都市商城的腳本時(shí),一直有19%左右的錯(cuò)誤.
進(jìn)入到都市商城服務(wù)器的/usr/local/web/WebRoot/WEB-INF/classes,
vi config.properties,將最后一行的Jtest=1修改為Jtest=0.保存退出
安裝Serveragent并使用JMeter插件進(jìn)行監(jiān)控
1.用FTP工具將serveragent傳到都市商城服務(wù)器的任意目錄
2.用unzip命令進(jìn)行解壓unzip ServerAgent-2.2.3.zip
3.如果你的服務(wù)器的LINUX中沒有unzip命令,那么執(zhí)行sudo yum install -y unzip zip下載相關(guān)命令
4.如果是LINUX環(huán)境,執(zhí)行./startAgent.sh文件,如果是WINDOWS服務(wù)器,雙擊startAgent.bat
5.如果startAgent.sh不能執(zhí)行,那么需要增加權(quán)限,在你的文件夾那一層執(zhí)行chmod -R 777 ServerAgent-2.2.3
serveragent監(jiān)聽程序的端口號(hào)默認(rèn)是4444.可以用netstat -tpln命令查看目前有哪些端口號(hào)在使用.
如果出現(xiàn)防火墻禁用了4444端口,可以選擇關(guān)閉防火墻,或者將4444端口加入到防火墻規(guī)則中.
systemctl status firewalld? #查看防火墻狀態(tài)
systemctl start firewalld? #啟動(dòng)防火墻
systemctl stop firewalld? #關(guān)閉防火墻
systemctl restart firewalld? #重啟防火墻
systemctl disabled firewalld? #禁用防火墻
firewall-cmd --list-ports? #列出開放的端口
firewall-cmd --add-port=4444/tcp --permanent #永久添加4444端口
6.打開JMeter,新建線程組和http請(qǐng)求,然后新增一個(gè)jp@gc - PerfMon Metrics Collector監(jiān)聽器
在監(jiān)聽器里選擇一個(gè)文件,用來存放監(jiān)聽的數(shù)據(jù).
ADD ROW,添加需要監(jiān)控的服務(wù)器IP地址,與需要監(jiān)控的內(nèi)容,如CPU,內(nèi)存等
如果不想每次運(yùn)行前提示你是追加還是覆蓋,那么可以修改jmeter.properties文件,在1040行附近,
添加resultcollector.action_if_file_exists=APPEND
APPEND,每次運(yùn)行將新的數(shù)據(jù)附加到現(xiàn)有文件
ASK每次運(yùn)行時(shí)詢問用戶
DELETE每次運(yùn)行時(shí)覆蓋舊數(shù)據(jù)
nginx
nginx是一種高性能的http和反向代理服務(wù)器.特點(diǎn)是占用內(nèi)存少,并發(fā)能力強(qiáng).特性:負(fù)載均衡,反向代理等.
你的機(jī)器→代理→服務(wù)器 這個(gè)是正向代理
你的機(jī)器→服務(wù)器→tomcat1,tomcat2... 這個(gè)是反向代理
正向代理.局域網(wǎng)中的用戶如果要訪問外網(wǎng),必須通過代理服務(wù)器來訪問,則稱之為正向代理.
反向代理是由nginx將多個(gè)訪問請(qǐng)求按照策略分配給不同的服務(wù)器,以減少單個(gè)服務(wù)器的訪問壓力.對(duì)于用戶來說,反向代理是透明的,用戶不知道一共有多少個(gè)服務(wù)器,也不知道訪問的是哪一個(gè).他只需要知道他訪問的網(wǎng)址能訪問就可以了.
反向代理的步驟.
第一步(非必須),修改hosts文件,設(shè)置一個(gè)域名.
進(jìn)入C:\Windows\System32\drivers\etc,打開hosts文件,輸入你的都市商城的IP 后面寫一個(gè)域名
第二步,在nginx.conf中修改配置
進(jìn)入到/usr/local/nginx/conf
vi nginx.conf
用戶通過域名訪問(www.songqinshop.com),首先hosts分析了這個(gè)域名指向的是192.168.80.160,
然后就開始訪問192.168.80.160,因?yàn)槟J(rèn)端口號(hào)是80,所以此時(shí)訪問的是192.168.80.160:80.然后又因?yàn)閚ginx在監(jiān)聽80端口,所以當(dāng)80端口被訪問時(shí),nginx開始將這個(gè)網(wǎng)址轉(zhuǎn)向了http://dsshop;(大約在配置文件47行),然后這個(gè)路徑又轉(zhuǎn)向了upstream dsshop模塊里所配置的地址,也就是127.0.0.1:8083.注意這個(gè)127.0.0.1指的是都市商城服務(wù)器本地機(jī)器,也就是192.168.80.160:8083
負(fù)載均衡
在反向代理的基礎(chǔ)上,那么就可以實(shí)現(xiàn)負(fù)載均衡.單個(gè)服務(wù)器時(shí),承受的負(fù)載為n,那么就可以通過增加服務(wù)器的數(shù)量,讓nginx將訪問請(qǐng)求分發(fā)到各個(gè)服務(wù)器,比如有m個(gè)服務(wù)器,每個(gè)服務(wù)器只要承受n/m的負(fù)載.
負(fù)載均衡的策略分為輪詢,權(quán)重,ip_hash,fair,url_hash
輪詢,比如有兩個(gè)服務(wù)器,當(dāng)遇到請(qǐng)求時(shí),nginx會(huì)輪流分發(fā)到每一個(gè)服務(wù)器.
權(quán)重,給每個(gè)服務(wù)器設(shè)置一個(gè)權(quán)重,讓性能高的服務(wù)器接受更多的請(qǐng)求,性能低的服務(wù)器接受較少的請(qǐng)求.
ip_hash,一臺(tái)機(jī)器第一次訪問的是哪一個(gè)服務(wù)器,后面就一直訪問這個(gè)服務(wù)器.這種方式可以避免session混亂引起的問題.
fair,根據(jù)響應(yīng)時(shí)間來分配服務(wù)器
url_hash,根據(jù)你請(qǐng)求的url地址來分配服務(wù)器
都市商城的負(fù)載均衡在nginx.conf文件的upstream dsshop塊進(jìn)行設(shè)置
upstream dsshop {? ? ? ? ? ? ip_hash;? #都市商城使用的是ip_hash策略? ? ? ? ? ? server 127.0.0.1:8083 weight=1;? ? ? ? ? ? server 127.0.0.1:8084 weight=1;? ? ? ? ? ? #server 192.168.10.121:3333 backup;? #熱備? ? ? ? ? }
dsshop還需要在location塊進(jìn)行proxy_pass的設(shè)置
location / {? ? ? ? ? ? ? ? ? ? ? proxy_pass? http://dsshop;
nginx一旦啟動(dòng)之后,訪問都市商城時(shí)就不再需要輸入8083端口號(hào)
nginx的一鍵啟動(dòng)腳本,在/data/startup,執(zhí)行./a1-start-Nginx.sh
時(shí)間同步
在startup目錄中查看日期 data
更新服務(wù)器時(shí)間 ntpdate ntp.aliyun.com
當(dāng)前時(shí)間 data