我怎么判断是磁盘/CPU问题还是内存问题呢?[阿里云消息队列MQ]

MQ最近老出现broker busy,然后进一步报system busy,有大佬遇到过不?查看sotre.log发现一个特别耗时的写入,大概2s,我怎么判断是磁盘/CPU问题还是内存问题呢?[NOTIFYME]putMessage in lock cost time(ms)=2478

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
4 条回复 A 作者 M 管理员
  1. 有exporter监控吗, 看看pagecahe的耗时分布呢一般看pagecache的监控一眼可以知道。 可能是磁盘本身性能不足, 也可能是刷盘参数设置不合理, 建议都可以排查下。此回答整理自钉群“群2-Apache RocketMQ 中国开发者 钉钉群”

  2. 你可以使用linux的top命令进行观察的。

  3. 要判断是磁盘/CPU问题还是内存问题,可以通过一些系统监控工具获取相关信息。

    对于磁盘问题,可以通过 iostat 命令来查看硬盘 I/O 相关信息,包括磁盘读写速率、磁盘队列长度、I/O 响应时间等。如果磁盘读写速率低或磁盘队列长度长,就可能是磁盘性能问题。

    对于 CPU 问题,可以通过 tophtop 命令来查看 CPU 占用率和负载情况。如果 CPU 占用率高或 CPU 负载高,就可能是CPU性能问题。

    对于内存问题,可以通过 free 命令来查看系统内存使用情况,如果内存使用率比较高,就可能是内存不足而导致的问题。

    另外还有一些常用的系统监控工具,如 sarvmstatdstat 等,可以综合使用这些工具来获取更全面的系统监控信息,以便更准确地判断系统瓶颈所在。

  4. 如果是Linux系统上,可以使用命令top或htop来查看系统的负载情况。在命令行中输入”top”或”htop”,会显示当前系统的进程、CPU、内存、磁盘等信息。

  5. 对于这种情况,可以先观察MQ的系统负载情况,查看CPU、内存、磁盘等资源的使用情况。如果发现某个资源使用率很高,就可以初步判断出问题所在。

    另外,可以通过观察store.log中打印的日志信息,找出耗时的操作所在的代码位置,进一步分析代码逻辑是否存在性能问题。

    针对这个特别耗时的写入问题,可以尝试优化写入逻辑,比如使用批量写入的方式,减少单次写入的次数,或者将写入操作移到异步线程中执行,避免阻塞主线程。