Skip to content

运维关注点与常见问题

lorgine edited this page Oct 18, 2019 · 2 revisions

运维关注点

作为系统管理员,需要重点关注PMQ的一些运维模块。运维关注点如下:

队列分配和堆积统计

队列分配和堆积统计
  1. 队列分配需要注意的点
上图中“队列已分配/总量”表示的是队列的使用情况。图中“正常类型4/198”的含义是:一共有198个队列,已经使用了4个。“失败类型4/400”含义是:一共400个失败队列,已经使用4个。

当大部分队列都已经被使用时,需要提前对消息队列进行扩容(正常队列不足就扩容正常队列,失败队列不足时就扩容失败队列)。

扩容步骤:
(1)在mysql中新建消息库
(2)通过“数据节点管理页面”创建数据库节点(把新建的消息库跟元数据库绑定)。

具体步骤请参考:快速部署文档中的“数据库初始化模块”。

  1. 堆积统计需要注意的点
(1)需要关注列表中“消息堆积量”比较大的消费者组。协助该消费者组的负责人处理消息堆积问题(堆积的解决办法:为topic扩容队列,增加消费者组的处理线程数)。

(2)关注列表左下方的消费者组总数、在线消费者组个数、离线消费者组个数。

报表数据

  • 队列报表
queueReport

通过上图队列报表可以查看各个队列每天的消息量、队列中的消息总量。注意:如果最小Id为红色,说明该队列中消息已经达到了存储的保留天数(已过期,会被清理器清理掉)。

  • topic报表
topicReport

通过topic报表可以监控每个topic的消息总量以及每日的消息量。通过查看topic的“队列治理”字段,为topic进行合理的队列分配。

  • 物理机报表

通过物理机报表查看:各个物理机的消息总量以及每天的消息量。

  • 冗余检查

冗余检查:用于检测PMQ的元数据库中是否存在脏数据。

  • mysql连接数

通过mysql连接数,查看每个消息库机器的最大连接数、当前连接数。

常见问题

  • 消息发送慢?

    如果消息发送慢,需要对topic进行扩容(即增加该topic存储消息的队列)或者使用批量发送功能。

  • 消息堆积(即消息处理慢)?

    如果消息堆积,处理方式如下:

    (1)增加处理线程数
    
consumerGroupTopic

如上图所示:在“消费者组管理”页面,找到堆积的消费者组,点击右侧的“订阅管理”按钮,进入到该消费者组的“订阅管理”页面。在“订阅管理”页面找到发生堆积的消费者组和topic,点击右侧的“编辑”按钮,然后在弹框中修改线程数。

  (2)对堆积的topic进行扩容

  (3)增加客户端应用的实例数(即多部署几台消费客户端应用实例)。
  • 失败消息如何处理?

    消息处理失败以后,会被发送到对应的失败队列,然后由重试线程去处理(达到重试次数以后就不在重试)。

  • 如何保障消息的高可靠?

    消息落库,broker服务端是无状态的。broker服务端和消息库都可以水平扩容。

  • 无操作权限?

    联系对应的消费者组或者topic负责人,让他把你添加为负责人即可。

  • “队列消费管理”页面中有字段变为红色?

    (1)偏移值小于最小Id时,偏移字段显示为红色。影响消费,需要及时处理!

    问题原因:消息会被定期清理,数据表的最小Id越来越大。如果你的消费者一直不消费(即偏移一直不变),就会出现偏移值小于最小Id的问题。
    
    解决办法:手动修改偏移,让偏移值大于当前数据表的最小Id。
    

    (2)待处理消息数为负时,待处理消息数显示为红色。影响消费,需要及时处理!

    问题原因:当偏移值大于数据表的最大Id时,会出现待处理消息数为负的问题。
    
    解决办法:手动修改偏移,让偏移值小于当前数据表的最大Id。
    
Clone this wiki locally