雙十一臨近,系統的壓測也隨之而來。所以打算對系統進行一次壓測,通過壓測來了解服務器性能瓶頸,比如我當前的架構每秒併發是多少,我服務器最大能接受的併發是多少,是什麼導致我的性能有問題;如果當前架構快達到性能瓶頸了,是橫向擴容性能提升大,還是縱向擴容性能提升大。
如果需要了解這些信息,需要在兩方面下功夫,一個是對服務器進行性能壓測,一個是對服務器進行性能監控。
通過對服務器進行性能測試:我們可以瞭解到當前架構的性能瓶頸,還可以對架構橫向擴容和縱向擴容來進行測試,對後期的架構擴容提供數據參考。
綜合考慮,工具使用如下:
jmeter: jmeter官網
zabbix: zabbix官網
jvisualvm: jdk自帶版本
jmeter架構如下:
搭建步驟
1.在所有期望運行 JMeter 作爲 Load Generator 的機器上安裝JMeter,並確定其中一臺機器作爲 Controller,其他的機器作爲 Agent。agent搭建在linux(centos 6.5)服務器環境下,server搭建在windows(server 2016)環境下。
2.在Controller 機器的 JMeter 安裝目錄下找到 bin 目錄,再找到 JMeter.properties 這個文件,使用記事本或者其他文字編輯工具打開它;
3.在打開的文件中查找“remote_hosts=”這個字符串,你可以找到這樣一行“remote_hosts=127.0.0.1”。其中的 127.0..0.1 表示運行 JMeter Agent 的機器,這裏需要修改爲“remote_hosts=ip1,ip2”。JMeter 的 Controller 和 Agent之間進行通訊的RMI端口號默認;
4.保存文件,並重新啓動 Controller 機器上的 JMeter.bat,並進入 Run -> Remote Start 菜單項,查看機器。
windows安裝Controller
首先安裝jdk,在jmeter3.*以上版本要求jdk 1.8+,但是由於我這邊系統jdk1.8驗籤不過,所以jmeter換成了2.13,jdk使用的1.7版本。
下載windows版本的jmeter
解壓jmeter,設置path變量,修改配置文件:
在server機器的jmeter安裝目錄下bin目錄下,找到jmeter.properties文件,修改遠程主機選項,添加自己的agent服務器的地址。
remote_hosts=192.168.1.2,192.168.1.3,192.168.1.4,192.168.1.5
修改jmeter.bat文件
1 2 | 新增set rmi_host=-Djava.rmi.server.hostname= 修改set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %PERM% %DDRAW% %rmi_host% |
安裝完成之後,在命令行運行jmeter命令,如果可以正常啓動jmeter,說明環境配置ok。但是需要注意的是,如果是雙網卡服務器,需要指定內網ip通信。啓動方式如下:
1 | jmeter -Djava.rmi.server.hostname=192.168.1.1 |
安裝agent:
1 2 3 4 | wget http://mirrors.tuna.tsinghua.edu.cn/apache//jmeter/binaries/apache-jmeter-3.3.zip unzip apache-jmeter-3.3.zip -d /usr/local/ cd /usr/local/ ln -s apache-jmeter-3.3/ jmeter |
啓動腳本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #!/bin/bash # chkconfig: 345 26 74 # description: jmeter agent myip=`ifconfig eth0 |awk '/inet addr/{gsub(/addr:/,"");print $2}'` cmd="/usr/local/jmeter/bin/jmeter-server -Djava.rmi.server.hostname=$myip" start(){ $cmd & } stop(){ jmeter_pid=`ps aux | grep jmeter-server | grep -v grep | awk '{print $2}'` for pid in $jmeter_pid;do kill -9 $pid done } act=$1 case $act in 'start') start;; 'stop') stop;; 'restart') stop sleep 2 start;; *) echo '[start|stop|restart]';; esac |
原文地址原文地址