通过nginx连接rabbitmq集群内存溢出
该情况的原因和解决办法如下:
1、RabbitMQ集群的内存使用过高,这可能是由于消息队列中的数据过多或者消息处理速度过慢导致的。需要检查RabbitMQ集群的内存使用情况,并调整消息队列的大小和数量,以及优化消息处理逻辑。
2、nginx配置不当,nginx作为反向代理服务器,如果配置不当,可能会导致内存泄漏或者过载。需要检查nginx的配置文件,确保正确地配置了代理和负载均衡等参数。
3、程序bug,应用程序中存在bug,导致内存泄漏或者错误处理。需要检查应用程序的代码,并修复相关bug。
1生产者:创建消息,发布消息到代理服务器(RabbitMQ)
(1)消息:有效荷载和标签
(2)有效荷载:消息的内容
(3)标签:用来描述消息(交换器的名称或者可选主题的标记),然后把消息交由RabbitMQ,由RabbitMQ进行后续处理
2消费者:连接到代理服务器(RabbitMQ),并订阅到队列(queue)上,接收代理服务器发布的消息并读取
(1)接收到的消息只包括有效荷载,即消息内容
1基本原理:首先创建一条TCP连接,TCP连接打开后(即通过认证),应用程序创建一条AMQP信道。
2信道:是建立在真实的TCP连接内的虚拟连接,AMQP命令是通过信道发送出去
3应用程序和RabbitMQ代理之间的连接用信道而不直接用TCP连接的原因
(1)一个信道处理一个线程,一个TCP连接可以承载多个信道,即多个线程可以使用同一个TCP连接,减少资源消耗,避免性能瓶颈
(2)一个TCP的创建和销毁对资源的消耗会很大,创建需要三次握手,销毁需要四次挥手。
4TCP协议的三次握手和四次分手
(1)建立连接的三次握手:
-第一次握手:客户端发送给服务端,请求连接
-第二次握手:服务端接收到客户端发送的请求连接的消息,回复给客户端请求连接
-第三次握手:上述两次握手本质上已经建立连接,但是此时客户端还会发送给服务端一个消息,确认连接,即表示连接成功
(2)销毁连接的四次挥手:
-第一次挥手:客户端发送给服务端,断开连接
-第二次挥手:服务端接收到请求断开连接的请求,发送确认消息
-第三次挥手:服务端发送给客户端,断开连接
-第四次挥手:客户端接收到服务端的消息,确认断开连接
注意:销毁连接需要四次挥手是因为TCP连接是双向连接,断开也需要双向断开和确认
rabbitMQ 架构为 rabbitMQ + keepalived 镜像模式。
rabbitmq01 1921681101
rabbitmq01 1921681102
vip 1921681110 在rabbitmq02 上
现在 rabbitmq01 故障 ,起不来,队列数据同步rabbbit02 有问题。
解决方法是将rabbitmq01 这个故障节点从集群中剔除,然后重新加入。
在rabbitmq02 1921681102服务器上
剔除rabbitmq01节点
# rabbitmqctl cluster_status
# rabbitmqctl forget_cluster_node rabbit@192-168-1-101
# rabbitmqctl cluster_status
在rabbitmq01 1921681101服务器上
停止rabbitmq相关进程
# systemctl stop rabbitmq-server
# ps aux | grep rabbit | grep -v grep | awk ‘{print $2}’| xargs kill -9
移除rabbitmq相关数据文件
# mkdir /kingdee/rabbitmqBackup
# mv /var/lib/rabbitmq/ /kingdee/rabbitmqBackup/
重新启动rabbitmq
# systemctl start rabbitmq-server
# ps aux | grep rabbit
创建rabbitMQ用户
# rabbitmqctl add_user mquser rabbitMQ@123
注:此密码为安装时设置的rabbitMQ密码
# rabbitmqctl list_users
# rabbitmqctl set_user_tags mquser administrator
# rabbitmqctl set_permissions -p / mquser '' '' ''
# rabbitmqctl stop_app
# rabbitmqctl join_cluster rabbit@192-168-1-102
# rabbitmqctl cluster_status
# rabbitmqctl start_app
# systemctl start keepalived
在rabbitmq02 1921681102服务器上
添加策略同步策略
# rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
RabbitMQ Cluster群集安装配置
https://wwwcnblogscom/elvi/p/7736661html
Network partition detected
Mnesia reports that this RabbitMQ cluster has experienced a network partition
There is a risk of losing data Please read RabbitMQ documentation about network partitions and the possible solutions
https://wwwrabbitmqcom/partitionshtml
0条评论