RabbitMQ是一个消息队列系统
一 下载安装
RPM包下载
http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.3/rabbitmq-server-3.5.3-1.noarch.rpm
源码包下载
http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.3/rabbitmq-server-3.5.3.tar.gz
在安装RabbitMQ之前需要安装Erlang语言
http://www.rabbitmq.com/releases/erlang/erlang-17.4-1.el6.x86_64.rpm
rpm -ivh erlang-17.4-1.el6.x86_64.rpm
rpm --import https://www.rabbitmq.com/rabbitmq-signing-key-public.asc
rpm -ivh rabbitmq-server-3.5.3-1.noarch.rpm
chkconfig rabbitmq-server on
service rabbitmq-server start
安装好后,通过rabbitmqctl管理
日志轮转在/etc/logrotate.d/rabbitmq-server 中设置
二 ulimit设置
使用RabbitMQ处理高并发连接和队列时需要对操作系统的资源限制做些设置,主要是最大文件打开数量的设置。
有两个设置需要考虑:操作系统允许的最大文件打开数量(fs.file-max)和允许每个用于最大打开文件数量(ulimit -n),前者必须大于后者。
CentOS默认的soft 最大文件打开数量是1024,hard 最大文件打开数量是4096
# ulimit -n
1024
# ulimit -Sn
1024
# ulimit -Hn
4096
ulimit -n只能对当前会话生效,在启动RabbitMQ之前设置ulimit -n,RabbiMQ启动后的资源限制会生效。
[root@test71 ~]# ulimit -n 1024 [root@test71 ~]# service rabbitma-server start rabbitma-server: unrecognized service [root@test71 ~]# service rabbitmq-server start Starting rabbitmq-server: SUCCESS rabbitmq-server. [root@test71 ~]# rabbitmqctl status|grep pid [{pid,6142}, [root@test71 ~]# cat /proc/6142/limits|grep file Max file size unlimited unlimited bytes Max core file size 0 unlimited bytes Max open files 1024 4096 files Max file locks unlimited unlimited locks
可以看到在启动RabbitMQ之前没有设置ulimit -n,那么启动之后RabbitMQ的进程能够打开的最大文件数量就是系统默认设置的。
[root@test71 ~]# service rabbitmq-server stop Stopping rabbitmq-server: RabbitMQ is not running rabbitmq-server. [root@test71 ~]# ulimit -n 1024 [root@test71 ~]# ulimit -SHn 65536 [root@test71 ~]# ulimit -n 65536 [root@test71 ~]# ulimit -Sn 65536 [root@test71 ~]# ulimit -Hn 65536 [root@test71 ~]# service rabbitmq-server start Starting rabbitmq-server: SUCCESS rabbitmq-server. [root@test71 ~]# rabbitmqctl status|grep pid [{pid,6973}, [root@test71 ~]# cat /proc/6973/limits|grep files Max open files 65536 65536 files
可以看到启动RabbitMQ之前设置ulimit,启动以后RabbitMQ的进程的soft和hard限制都变成了65536.
然后再退出当前会话
Connecting to 172.28.10.71:22... Connection established. To escape to local shell, press 'Ctrl+Alt+]'. Last login: Sat Jul 4 05:08:17 2015 from 172.28.13.165 [root@test71 ~]# ulimit -n 1024 [root@test71 ~]# rabbitmqctl status|grep pid [{pid,6973}, [root@test71 ~]# cat /proc/6973/limits|grep files Max open files 65536 65536 files
可以看到之前设置的最大文件打开数量65535变成了系统默认的1024,所以ulimit -n只能对当前会话起作用,并且一定要是在启动程序之前进行设置,不能对正在运行的进程设置
如果需要RabbitMQ每次启动后的进程对文件的最大打开数量都符合需求,可以在启动脚本里面设置ulimit -SHn 65536
[root@test71 ~]# service rabbitmq-server start Starting rabbitmq-server: SUCCESS rabbitmq-server. [root@test71 ~]# ulimit -n 1024 [root@test71 ~]# rabbitmqctl status|grep pid [{pid,8084}, [root@test71 ~]# cat /proc/8084/limits|grep files Max open files 65536 65536 files [root@test71 ~]# ulimit -n 1024
可以看到在RabbitMQ的启动脚本设置了ulimit,最大文件打开数量也生效了。
查看操作系统总的允许打开的最大文件数量
cat /proc/sys/fs/file-max
或者
sysctl fs.file-max
如果要限制某一个用户的最大文件打开数量
设置/etc/security/limits.conf
root soft nofile 65536
root hard nofile 65536
然后重新登录查看ulimit -n
去掉启动脚本的ulimit设置
root@test71 ~]# service rabbitmq-server start Starting rabbitmq-server: SUCCESS rabbitmq-server. [root@test71 ~]# rabbitmqctl status|grep pid [{pid,9975}, [root@test71 ~]# cat /proc/9975/limits|grep files Max open files 65536 65536 files [root@test71 ~]# ulimit -n 65536
参考文章:
http://www.rabbitmq.com/getstarted.html