RabbitMQ铲配置备用交换全国铲除问题跑道,怎么解决

科技需要真相和数据,立志成为最有范儿的测试人社区.
+ &&>>>>内容
+ 关于本文作者
我也很想让世界变得更美好,可是上帝却不开放源代码。
| 访问的主页
基于开源中国开发
最新文章热门文章随机文章
"Save Binary World"
使用合作网站账号快速登录,更多精彩等着您:rabbitmq设置日志级别和路径
& 因为服务器挂载了一块新硬盘,老大把rabbitmq的日志文件给移动新硬盘里了,但rabbitmq的日志一天天的增大,为了节约空间和只看有用的信息,老大要求对rabbitmq进行日志分级,这可把我愁坏了,网上google一把,居然资料都没有,让我自己只能慢慢摸索着整.
& 系统:centos 5.5
1.准备工作
当然你系统安装了rabbitmq,和php支持rabbitmq,如果没有安装这两个,请去看
2.创建rabbitmq-env.conf和rabbitmq.config
一般情况下,RabbitMQ的默认配置就足够了。如果希望特殊设置的话,有两个途径:
一个是环境变量的配置文件 rabbitmq-env.conf
一个是配置信息的配置文件 rabbitmq.config
注意:这两个文件默认是没有的,如果需要必须自己创建
把rabbitmq-env.conf和rabbitmq.config创建于/etc/rabbitmq目录下,其中rabbitmq-env.conf这个文件的位置是确定和不能改变,必须是在/etc/rabbitmq目录下.
touch /etc/rabbitmq/rabbitmq-env.conf
touch /etc/rabbitmq/rabbitmq.config
rbbitmq-env.conf包括rabbitmq的一些环境变量:
RABBITMQ_MNESIA_BASE=/usr/local/rabbitmq-server/data&&& //需要使用的MNESIA数据库的路径
RABBITMQ_LOG_BASE=/var/log/rabbitmq&&&&&&&&&&&&& //log的路径
RABBITMQ_PLUGINS_DIR=/usr/local/rabbitmq-server/plugins&& //插件的路径
rabbitmq.config这是一个标准的erlang配置文件,它必须符合erlang配置文件的标准。
它既有默认的目录,也可以在rabbitmq-env.conf文件中配置。
3.设置rabbitmq日志级别和路径
vi /etc/rabbitmq/rabbitmq.conf
{rabbit, [{log_levels, [{connection, warning}]}]}
也可以这样写成
{rabbit, [{log_levels, [{connection, error}]}]}
ps:最后的]有.号的,希望不要忽略了.
vi /etc/rabbitmq/rabbitmq-env.conf
RABBITMQ_LOG_BASE=/vol/pic/log/rabbitmq
重启rabbitmq
service rabbitmq-server restart
/etc/init.d/rabbitmq-server restart
rabbitmqctl stop
nohup /usr/local/sbin/rabbitmq-server start & /usr/local/sbin/nohup.out &
好了,这下再也不怕日志大了,当然目前还在研究怎么让rabbitmq自动分割日志,并不重启rabbitmq服务,希望有知道的朋友告诉下.
夜空- 本站版权
1、本站所有主题由该文章作者发表,该文章作者与享有文章相关版权
2、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和的同意
3、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、原文链接:
Powered by如果你觉得本站对你有帮助,欢迎向本站赞助 :P
系统架构 最近更新
12:29:23, +10682
12:14:27, +9375
18:21:18, +4852
23:38:40, +6567
00:58:19, +7090
17:50:23, +4796
22:09:17, +6941
22:07:31, +3590
22:06:18, +4623
江西唐门计算机系统有限公司
广州君实信息科技有限公司
云南恒翌科技有限公司
UC优视 | UC浏览器
正易龙科技有限公司
你可能感兴趣的标签博客分类:
1.必需掌握的指令
rabbitmqctl add_user rainbird password
rabbitmqctl set_permissions -p "/" rainbird ".*" ".*" ".*"
删除测试用户:
rabbitmqctl delete_user guest
所有指令列表(很简单的英文):
&UserName& &Password&
delete_user
&UserName&
change_password &UserName& &NewPassword&
list_users
&VHostPath&
delete_vhost &VHostPath&
list_vhosts
set_permissions
[-p &VHostPath&] &UserName& &Regexp& &Regexp& &Regexp&
clear_permissions [-p &VHostPath&] &UserName&
list_permissions
[-p &VHostPath&]
list_user_permissions &UserName&
list_queues
[-p &VHostPath&] [&QueueInfoItem& ...]
list_exchanges [-p &VHostPath&] [&ExchangeInfoItem& ...]
list_bindings
[-p &VHostPath&]
list_connections [&ConnectionInfoItem& ...]
/ 不能删除
删除/以后,新建立的vhost不能正常使用(即便不删除/,新建立的vhost也是不能正常使用).不知道为什么,有待研究.
3.关于持久化
示例里没有一点儿和持久化相关的东东,而这却是笔者最关心的,想想作为消息服务器如果不能保证消息一定被接收到,算什么事儿啊?比着网上狂转的python版本从php-amqp的库里一点一点儿翻,找到了如下持久化的设置:
接收端声明队列和交换机自动建立:
$ch-&queue_declare($_QUEUE,false,true,false,false);
第三个参数设置true保证服务器重启后,自动建立队列
第五个参数设置成false防止接收端没连接的时候丢失消息
$ch-&exchange_declare($EXCHANGE, 'direct', false, true, false);
第四个参数设置true保证重启后,自动建立交换机
第五个参数设置false防止接收端断开后,交换机被删除
发布端声明消息持久:
$message = new AMQPMessage(serialize($object), array('content_type' =& 'text/plain', 'delivery_mode' =& 2));
同时满足了上面三个条件,就可以保证未接收的消息在服务器意外重启以后依然存在了.
4.持久化的后遗症
比如说你初始化了一个队列msgs.你会发现它真的持久了!每次服务器端重启后,通过list_queues命令查看的时候都存在.但是时间久了,这个msgs我们并不需要了,怎么办呢?笔者发现,想清除这个队列只能删除它所在的vhost,然后再重建vhost,再设置vhost的权限.
rabbitmqctl delete_vhost /
rabbitmqctl add_vhost /
rabbitmqctl set_permissions -p / rainbird '.*' '.*' '.*'
要注意,如果这个操作过程中有接收端处于连接状态它们不会自动断开,但也不会再收到消息,需要手动重新连接一下.
5.关于修改监听ip和监听端口
出于一些需要,比如我们有多个ip,我们希望rabbitmq仅运行在指定的ip上.或者考虑到安全问题,我们希望修改一下rabbitmq的监听端口.默认安装完成以后,在/etc下面会有一个rabbitmq的空目录,这时候我们需要手工创建rabbitmq.conf,并写入相关内容.
vi /etc/rabbitmq/rabbitmq.conf
RABBITMQ_NODE_IP_ADDRESS=0.0.0.0
RABBITMQ_NODE_PORT=2222
保存以后重启服务就生效了.
这个东东网上又没介绍,翻了半天+无限尝试才搞出来.
6.关于运行接收端cpu100%问题
第一眼看到接收端会运行一个while等待消息的时候,笔者就知道这个进程肯定cpu占用会100%.在代码里几处while尝试添加usleep无效后,笔者最后还是在官方的问题列表里找到了答案:
vi +286 amqp_wire.inc
293 while ($read & $n && (false !== ($buf = fread($this-&sock, $n - $read))))
usleep(50000);
$read += strlen($buf);
笔者的出发点是对的,只是没找对while.可能有人会奇怪为什么要用usleep(50000)呢?实际上笔者有遇到运行php起来的daemon导致cpu100%的情况.当时笔者加的是usleep(500000)也就是半秒钟.这样就可以使进程看上去cpu占用为0.没想到再降一个数量级也是可以正常的,这次算赚到了.
7.学到了error_log函数
以前有见过这个函数,以为是向系统日志里写log的时候才用得到呢,没想到还可以像下面这样用:
function debug_msg($s)
//error_log($s);
在不同的地方写上debug_msg,最后不用的时候时候,直接注释掉error_log,不错的小技巧!
暂时就摸索出来这么多东西了,准备拿几个不重要的任务跑跑稳定性试试.
浏览 16294
你是之前君融贷的吗对啊 你也是呗 哈哈哈
浏览: 495708 次
百度网盘的挂了吧???
UfgovDBUtil 是什么类
帮大忙了,非常感谢
十分感谢作者无私的分享,仔细阅读后很多地方得以解惑。
你再客户端搞这么多拦截器干什么
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 热备用服务器怎么配置 的文章

 

随机推荐