Rabbitmq 问题记录

摘要:
0.启用web页面管理sudorabbitmq-pluginsenablerabbitmq_managementsudorabbitmqctladd_usermytestmytestsudorabbitmqctlset_user_tagsmytestadministratorsudorabbitmqctlset_permissions-p/mytest".*"".*"".*"1.client-˃r

Rabbitmq 问题记录第1张

0.启用web页面管理
sudo rabbitmq-plugins enable rabbitmq_management
sudo rabbitmqctl add_user mytest mytest
sudo rabbitmqctl set_user_tags mytest administrator
sudo rabbitmqctl set_permissions -p / mytest ".*" ".*" ".*"

1. client -> rabbitmq-server使用连接池
a.每个进程独占连接池,连接池默认值:max_size=30 min_size=2 ttl=1200
b.连接使用协程池来处理事业,协程池默认值:executor_thread_pool_size=64

2. client与rabbitmq-server 连接的心跳保持
a. client与rabbitqm-server协商心跳检查时间(默认60s), 取两边最小值作用心跳检查时间
b. 心跳包是特定类型的数据(frame_type=8,内容为空),上层应用感知不到心跳,底层连接(amqp)直接处理,接发不需要端响应
c. client与rabbitqm-server都周期性地发送心跳(最新发送数据的时间点作为起点)
d. 两端使用2个心跳时间作为超时时间(最近收到数据的时间点作为起点)
e. 发送心跳间隔单个心跳时间

3. oslo_messaging 的Connection.
a. publish
1.池化管理Connection, 周期性地检查和发送心跳(Threading)
2.获取时触发Connection超时(池)检查
3.发送msg后等待confirm(类型(60, 80))

b. consume
非池化Connnection, 周期性地检查和发送心跳(Threading),等待处理msg

5. Rabbitmq配置(openstack)
[oslo_messaging_rabbit]
rabbit_hosts = "mgm-net0:5672,mgm-net2:5672"
rabbit_userid = openstack
rabbit_password =rabbit_pass
kombu_reconnect_delay = 1.0
rabbit_retry_interval = 1
rabbit_retry_backoff = 2
rabbit_max_retries = 0
rabbit_durable_queues = true
rabbit_ha_queues = true
heartbeat_timeout_threshold = 60
heartbeat_rate = 2
rabbit_qos_prefetch_count = 5

6.neutron-server服务进程数量
a. api-server 默认等于CPU核数
b. rpc-worker 默认等于1(RPC任务较多,建议适当调整)
c. rpc_state_report_workers 默认等于1(实际等于n+1)
d PeriodicWorker 默认等于1(只能等于1,plugin的周期性任务,如dhcp-agent/router-agent周期性管理等)

7.问题处理
1.心跳Timeout "missed heartbeats from client, timeout: 60s"
a. 仅有publish Connection产生超时
b. https://github.com/celery/kombu/pull/489
2.重启Cluster的某个节点,"operation basic.publish caused a channel exception not_found: no exchange"
a.集群的节点数据没有同步
b.https://bugzilla.redhat.com/show_bug.cgi?id=1399237

文档:
https://blog.csdn.net/zyz511919766/article/details/41896823
https://geewu.gitbooks.io/rabbitmq-quick/content/index.html

免责声明:文章转载自《Rabbitmq 问题记录》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇创建指定python版本的虚拟环境OGG 11g Checkpoint 详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

rabbitMQ Connection timed out

在VM中部署了一个rabbitMQ server ,在物理机上按照rabbitMQ官网上的 java的教程访问VM中的rabbitMQ报如下错误: Exception in thread "main" java.net.ConnectException: Connection timed out: connect at java.net.DualStac...

RabbitMQ消息队列

  一、简介 RabbitMQ是一个在AMQP基础上完整的、可复用的企业消息系统,遵循Mozilla Public License开源协议。MQ全称Message Queue(消息队列),它是一种应用程序对应用程序的通信方式。应用程序通过读写入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接他们。消息传递指的是程序之间通过在消息中发送数据通信,...

springboot postgresql druid连接池和jpa,jdbctemplate执行sql查询

1.maven依赖配置(pom.xml) 1 <dependency> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter</...

sqlalchemy 数据库操作

1、简介 一种ORM 2、安装 pip3 install -i https://pypi.douban.com/simple sqlalchemy 3、连接数据库 from sqlalchemy importcreate_engine engine =create_engine( "mysql+pymysql://root:密码@1...

SpringBoot整合redis哨兵主从服务

前提环境:   主从配置  http://www.cnblogs.com/zwcry/p/9046207.html   哨兵配置  https://www.cnblogs.com/zwcry/p/9134721.html 1.配置pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xm...

python并发编程:阻塞IO

阻塞IO(blocking  IO) 在Linux中,默认情况下所有的socket都是blocking,一个典型的读操作流程大概是这样:   当用户进程调用了recvfrom这个系统调用,kernel就开始了IO的第一个阶段:准备数据。对于network io来说,很多时候数据在一开始还没有到达(比如,还没有收到一个完整的udp包),这个时候kernel...