hipe_compile 设置为true以使用HiPE预编译RabbitMQ的部分,HiPE是Erlang的即时编译器,启用HiPE可以提高吞吐量两位数,但启动时会延迟几分钟。 Erlang运行时必须包含HiPE支持。如果不是,启用此选项将不起作用。HiPE在某些平台上根本不可用,尤其是Windows。 hipe_compile = false cluster_keepalive_interval 节点应该多长时间向其他节点发送keepalive消息(以毫秒为单位),keepalive的消息丢失不会被视为关闭 rabbitmq/rabbitmq-env.conf(二进制安装) /etc/rabbitmq/rabbitmq-env.conf(rpm 安装) RABBITMQ_SERVER_CODE_PATH 在使用HiPE
在终端中执行 $ erl -sname gandalf Erlang R15B02 (erts-5.9.2) [source] [64-bit] [smp:8:8] [async-threads:0] [hipe 启动另外一个终端,执行 $ erl -sname bilbo Erlang R15B02 (erts-5.9.2) [source] [64-bit] [smp:8:8] [async-threads:0] [hipe sname gandalf -setcookie abc Erlang R15B02 (erts-5.9.2) [source] [64-bit] [smp:4:4] [async-threads:0] [hipe sname bilbo -setcookie abc Erlang R15B02 (erts-5.9.2) [source] [64-bit] [smp:8:8] [async-threads:0] [hipe
默认情况下 $ erl Erlang R15B03 (erts-5.9.3) [source] [64-bit] [smp:8:8] [async-threads:0] [hipe] [kernel-poll 需要加上+K true参数 $ erl +K true Erlang R15B03 (erts-5.9.3) [source] [64-bit] [smp:8:8] [async-threads:0] [hipe
--hostname my-rabbit --name some-rabbit\ -e RABBITMQ_DEFAULT_VHOST=my_vhost rabbitmq:3-management 启用HiPE 要在启动时启用HiPE编译器,请使用RABBITMQ_HIPE_COMPILEset to 1。 根据官方文件: 设置为true以使用HiPE预编译RabbitMQ的部分,HiPE是Erlang的即时编译器。这将以增加启动时间为代价来增加服务器吞吐量。
优化 hipe_compile 在 /etc/rabbitmq/rabbitmq.config 我们可以将 hipe_compile 选项打开: Explicitly enable/disable HiPE {hipe_compile, true} 其原理类似于 JIT, 可以对RabbitMQ进行预编译, 以增加启动时间为代价降低CPU的负载, 进而提高RabbitMQ的吞吐量, 我们还是以 4w/s
shell,输出如下: Erlang/OTP 22 [erts-10.4.2] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1] [hipe -v 这将显示以下输出: Erlang/OTP 22 [erts-10.4.2] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1] [hipe
configure --prefix=/usr/local/erlang --enable-smp-support --enable-threads --enable-kernel-poll --enable-hipe configure --prefix=/usr/local/erlang --enable-smp-support --enable-threads --enable-kernel-poll --enable-hipe
esl-erlang_21.3.6-1_centos_7_amd64.rpm yum clean all erlang检查 # erl -version Erlang (SMP,ASYNC_THREADS,HIPE dump_log_write_threshold, [1000]}, {vm_memory_high_watermark, 0.5}, {disk_free_limit, "200MB"}, {hipe_compile 1.0}).此值也可以设为整数(单位为bytes)或者使用数字单位(如.”50MB”).默认情况下,可用磁盘空间必须超过50MB.参考 Disk Alarms 文档.Default: 50000000 hipe_compile 将此选项设置为true,将会使用HiPE预编译部分RabbitMQ,Erlang的即时编译器.这可以增加服务器吞吐量,但会增加服务器的启动时间. HiPE compiling: |---------------------------------------------------------| |######
usr/local/erlang --enable-smp-support --enable-threads --enable-sctp --enable-kernel-poll --enable-hipe enable-sctp启用流控制协议支持(Stream Control Transmission Protocol,流控制传输协议) –enable-kernel-poll启用Linux内核poll –enable-hipe
/configure --enable-threads --enable-smp-support --enable-kernel-poll --enable-hipe make && make install
Automatic configure script builder (debianutils m4 perl) $ apt-get -y install autoconf# Needed for HiPE 是否安装成功,如果出现类似以下的提示即表示安装成功:$ erlErlang/OTP 19 [erts-8.1] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe
[root@localhost src]# erl Erlang/OTP 17 [erts-6.1] [source] [64-bit] [async-threads:10] [hipe] [kernel-poll {unix,linux}}, {erlang_version,"Erlang/OTP 17 [erts-6.1] [source] [64-bit] [async-threads:30] [hipe
1.0}, 即与内存相关联1:1,也可定制为多少byte. vm_memeory_high_watemark, 设置内存低水位线,若低于该水位线,则开启流控机制,默认值为0.4,即内存总量的40% hipe_compile
1.0},即与内存相关联1: 1, 也可定制为多少byte vm_ memory_ high_ watermark 设置内存低水位线,若低于该水位线,则开启流控机制,默认值是0.4,即内存总量的40% hipe
--prefix=/app/erlang --with-ssl --enable-threads --enable-smp-support --enable-kernel-poll --enable-hipe
iZ25e3bt9a6Z erlang]# erl Erlang/OTP 18 [erts-7.3] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe linux}}, {erlang_version, “Erlang/OTP 18 [erts-7.3] [source] [64-bit] [smp:8:8] [async-threads:64] [hipe
root@localhost /]# erl Erlang R16B03-1 (erts-5.10.4) [source] [64-bit] [smp:4:4] [async-threads:10] [hipe
prefix=/usr/local/erlang --with-ssl --enable-threads --enable-smp-support --enable-kernel-poll --enable-hipe
/configure --prefix=/usr/local/erlang --enable-hipe --enable-threads --enable-smp-support --enable-kernel-poll
hipe_compile:开启Erlang HiPE编译选项(相当于Erlang的jit技术),能够提高性能20%-50%。 在Erlang R17后HiPE已经相当稳定,RabbitMQ官方也建议开启此选项。