【ejabberd stress】use Jabsimul
環境
- aws instance t2.micro
- ubuntu 16.04
安裝
- 安裝 ejabberd 本體
apt-get update
- 到安裝頁面,選擇 deb,
wget {download source}
dpkg -i {download file}
su ejabberd && cd ~
- 檢查你的 host 請更改為 localhost :
vi ./conf/ejabberd.yml
- 先記錄 {host}
- 啟動 ejabberd,
./bin/ejabberdctl start
- 建立管理者 :
./bin/ejabberdctl register admin {host} admin
- 安裝壓力測試編譯時需要的套件 :
apt-get install cvs make gcc libexpat1-dev libncurses5-dev libssl-dev bison byacc flex -y
- 安裝 Jabber Test Suite,官方 : http://jabbertest.sourceforge.net/
- 確定切換回 root, cd /home/ubuntu
cvs -z3 -d:pserver:anonymous@jabbertest.cvs.sourceforge.net:/cvsroot/jabbertest co testsuite
cd testsuite/ && cp Makefile.linux Makefile && make userreg
- 查詢
./userreg -?
的使用方法 ./userreg -h 127.0.0.1 -u 3000 -n 1 -o ./output
cat ./output
如果成功會顯示類似,無意外會有 3000 筆資訊- 如果沒有,請將
ejabberd stop
thenstart
- 安裝 Jabsimul
- 確定切換回 root, cd /home/ubuntu
wget http://www.ejabberd.im/files/other/jabsimul.tar.gz
tar xzf jabsimul.tar.gz
cp jab_simul.xml.example jab_simul.xml
./configure && make
- 調整設定值,開啟
jab_simul.xml
: 參考http://tkabber.jabber.ru/files/badlop/jab_simul.xml.chat60
- 注意
jab_simul.xml
中,server 的位置,必須是可解析的 DNS,不能用 ip - 開始執行壓力測試
./jab_simul
- 請壓到你預設的數據人數,再去查看現在的資源狀態
- 如何檢查你的壓力測試 user login 正常?
- 檢查你的 ejabberd.log
- 檢查 /tmp 底下的 xml testuser 中的訊息
jab_simul
執行後的錯誤訊息Socket creation error ! (Too many open files)
: 請調整 ulimit 參考其他參數調整Segmentation fault (core dumped)
: 伺服器超載
其他參數調整
如果要模擬 2000 個用戶,在同一台機上上進行壓力測試,必須設定限制高於 4000 以上
- Linux : ulimit -n 16000
shaper 是設定查詢允許的流量速度…應該被受限在硬體的效能上…
- shaper normal & fast
在 ejabberdctl.cfg 中,可設定 ERL_MAX_PORTS & ERL_MAX_ETS_TABLES
- ERL_MAX_PORTS : Maximum number of simultaneously open Erlang ports
- ejabberd consumes two or three ports for every connection, either from a client or from another Jabber server. So take this into account when setting this limit.
- ERL_MAX_ETS_TABLES : Maximum number of Erlang processes
- The number of concurrent ETS and Mnesia tables is limited. When the limit is reached, errors will appear in the logs: ** Too many db tables **. You can safely increase this limit when starting ejabberd. It impacts memory consumption but the difference will be quite small.
什麼是 ETS => Erlang Term Storage 什麼是 DETS => Disk Erlang Term Storage
查詢壓力測試數據
- 記憶體
- 測試前 :
free -k
- 測試後 :
free -k
- 測試前 :
- 使用 top 指令
- 可參考 : http://fecbob.pixnet.net/blog/post/39256167-linux%E4%B8%AD%E6%9F%A5%E7%9C%8B%E7%B3%BB%E7%B5%B1%E8%B3%87%E6%BA%90%E4%BD%94%E7%94%A8%E6%83%85%E6%B3%81%E7%9A%84%E5%91%BD%E4%BB%A4
壓力測試數據參考
在 t2.micro 底下約 7500 人,同時在線
1 |
|