为了对我的阿里云轻量服务器进行性能测试,我尝试了UnixBtt-ench和emqttd_benchmark。
Unixbench是一款开源的,适用于Linux的, 测试VPS性能的软件,测试的性能包括CPU,内存,磁盘,操作系统等等。每项测完会给出一个分值,全部测试完大概10-30分钟,最后给出一个总分,通过分数可以很方便地衡量比较VPS的性能。
装Unixbench以及运行的过程很顺利。
接下来安装emqtt_benchmark的过程就很坎坷了。
emqtt_benchmark是emq自带的,用于测试emq服务器性能的一个工具。
1. 首先修改emq的配置文件
参考:EMQ百万级MQTT消息服务(优化和压测)这篇文章的第一步。(我参考的这篇文章是18年写的,当时还是v2,老版本的emq,和现在新版本的emqx有一些差别)吸取了上次用sublime修改emqx.conf的教训,这次直接命令行vim编辑,虽然有点别扭。
2. 安装erlang/OTP
一定要安装最新版,越新越好。最开始我就按照上面这篇csdn教的,下的版本是19,结果编译emqtt-benchmark的时候就报错了,说我OTP当前装的是v19, 必须要v21以上。
erlang的安装也是很复杂,首先介绍一下什么是erlang,什么是OTP:
Erlang is a programming language used to build massively scalable soft real-time systems with requirements on high availability. OTP is set of Erlang libraries and design principles providing middle-ware to develop these systems.
摘自官网:Erlang Programming Language
网上有人说可以在官网上下好安装包,解压缩、安装,但是我试了没成功。最后我是用以下的命令装的:
wget http://erlang.org/download/otp_src_21.0.tar.gz
tar -xvzf otp_src_21.0.tar.gz
cd otp_src_21.0
./configure --prefix=/usr/local/erlang --with-ssl -enable-threads -enable-smmp-support -enable-kernel-poll --enable-hipe --without-javac
make && make install
3. 配置erl环境变量
vim /etc/profile
export ERLPATH=/usr/local/erlang
export PATH=$ERLPATH/bin:$PATH
source /etc/profile
4. 安装rebar3
这一步也是我自己失误之后的教训,如果不装rebar3直接安装emqtt_benchmark,在make的时候会报错。
后来也是看了github上别人的问题才解决了:Hello, I can't compile this. · Issue #45 · emqx/emqtt-bench · GitHub
安装rebar3 :
git clone https://github.com/erlang/rebar3.git
cd rebar3
./bootstrap
./rebar3 local install
5. 安装emqtt_benchmark
yum -y install git
cd /app/install/emqtt_benchmark
git clone https://github.com/emqx/emqtt-bench.git #这个地址和原来老版的emqtt不一样了!
cd /app/install/emqtt_benchmark/emqtt_bench
make
## 调整系统参数并且开始压测
sysctl -w net.ipv4.ip_local_port_range="500 65535"
echo 1000000 > /proc/sys/fs/nr_open
ulimit -n 1000000
./emqtt_bench sub -h 192.168.2.111 -c 32219 -i 1 -t bench /%i -q 2
然后。。。还是有问题。。。
我make成功之后,运行./emqtt_bench sub -c 50000 -i 10 -t bench/%i -q 2报错
百度、谷歌都搜了也没有相关的解决方法。我只能自己在github上问了!希望有人回复吧
escript: exception error: undefined function counters:new/2 · Issue #58 · emqx/emqtt-bench · GitHub
今天依然是连个压力测试都没完成的。