通过nginx连接rabbitmq集群内存溢出

通过nginx连接rabbitmq集群内存溢出,第1张

该情况的原因和解决办法如下:

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

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 通过nginx连接rabbitmq集群内存溢出

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情