我服务又双叒叕奔溃了,含泪干货分享

  • Erlang:18.3

vm_memory_high_watermark的配置在rabbitmq.conf文件中,所以我们修改rabbitmq.conf相关的配置就可以了,本来博主也以为过程就是这样的,简单的很,然后就陷入一个接一个的坑中了。

博主的rabbitmq安装方式采用的是apt-get install rabbitmq-server直接一键安装的,所以很多细节都不是很清楚。第一步我们要知道相应的配置文件都在哪个目录下面,如果配置文件都没找到,那玩个锤子。

找线上正在运行的配置文件,我们可以通过ps -ef|grep rabbitmq来检索,通过这个命令我们可以得到正在运行的rabbitmq相关的路径信息,如下所示:

我们可以很清晰的找到,rabbitmq的安装地址是:/usr/lib/rabbitmq/lib/rabbitmq_server-3.5.7/sbin/,我们进入这个目录中看一下:

我们想要的配置文件位置就在rabbitmq-defaults中,打开文件我们就可以得到,我们心心念念的rabbitmq.conf配置文件就在/etc/rabbitmq/下面,大家是不是觉得找到这个就完事了,只要修改重启就game over了,错了。3.5.7版本是没有rabbitmq.conf文件的,全部走的都是默认的配置,需要我们自己创建配置。

第一个坑:

3.7.0之前的配置文件和之后的配置文件格式是不一样的,如下图所示:

3.7.0之前的采用的是json格式,之后采用的是sysctl format格式,所以如果配置文件搞错,那一切都是白搭。

开开心心修改完配置文件,通过

rabbitmqctl stop

rabbitmq-server start

重启后,用rabbitmqctl status检查状态,发现没有变化,还是修改之前的配置。搞的我一度怀疑是重启的命令没生效,最后无意中看到rabbitmq控制台的路径信息,也就是我们的第二个坑。

第二个坑:

3.5.7版本的rabbitmq配置文件后缀为config,而非conf

果然博主将后缀名称修改为config,重启服务之后,马上就生效了。

这边还需要注意的配置有:

  • vm_memory_high_watermark_paging_ratio:队列开始将消息分页到磁盘以释放内存的高水位标记限制的分数

  • disk_free_limit:abbitMQ在其上存储数据的分区的磁盘可用空间限制。当可用磁盘空间低于此限制时,将触发流控制。

  • channel_max:与客户端协商的最大允许通道数

这些配置和服务稳定可靠息息相关,具体得根据实际业务来设置。

第三个坑:

配置文件都配置完毕之后,大部分服务的消费都恢复正常了,也没有上面提到的报错信息了,但是有一个服务的消费还是为0,这也是博主遇到的第三个坑了。

像这种队列有消费者,但是消费速度为0的情况,mq本身服务各个指标都监控没有问题的的前提下,几乎可以肯定是应用程序本身的问题。

应用服务外部的配置有:redis、mysql、rabbitmq,rabbitmq排除掉了,redis、mysql查看对应的监控发现都没有任何异常指标,而且redis、mysql都设置了操作的超时时间,所以不可能长达几个小时没返回数据的情况,剖析到这里,我们基本可以将问题的聚焦点聚集在应用服务代码本身了。

但是应用服务内存、io、带宽、cpu都正常,然后检查线程的时候发现,http的请求线程一直长时间占用,然后顺藤摸瓜,将所有的http请求代码全部找出来,发现了如下代码:

config.setServiceURL(awsAuthenticationVo.getServiceUrl());

config.setConnectionTimeout(8000000);

config.setSoTimeout(8000000);

超时时间设置的过分长,计算一下时间,超时时间为好几天,这就是第三个大坑,http超时时间设置过长。

修改了超时时间,重启服务,消费者开始正常消费了,持续观察一段时间之后,没有发现消费者突然不消费的情况了,至此问题终于全部修复完毕。

总结:

遇到这种问题,排查难度会很大,因为得一步步分析,逐步排查。通过这次bug,我终于明白为什么阿里、腾讯这些大公司,要求完全理解jdk版本之后才能进行升级。就像上面rabbitmq要是对它相关配置都不了解的情况下,就安装了,出问题之后可想而知。

-----------------------

**公众号:**林老师带你学编程
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

总结

面试难免让人焦虑不安。经历过的人都懂的。但是如果你提前预测面试官要问你的问题并想出得体的回答方式,就会容易很多。

此外,都说“面试造火箭,工作拧螺丝”,那对于准备面试的朋友,你只需懂一个字:刷!

给我刷刷刷刷,使劲儿刷刷刷刷刷!今天既是来谈面试的,那就必须得来整点面试真题,这不花了我整28天,做了份“Java一线大厂高岗面试题解析合集:JAVA基础-中级-高级面试+SSM框架+分布式+性能调优+微服务+并发编程+网络+设计模式+数据结构与算法等”

image

且除了单纯的刷题,也得需准备一本【JAVA进阶核心知识手册】:JVM、JAVA集合、JAVA多线程并发、JAVA基础、Spring 原理、微服务、Netty与RPC、网络、日志、Zookeeper、Kafka、RabbitMQ、Hbase、MongoDB、Cassandra、设计模式、负载均衡、数据库、一致性算法、JAVA算法、数据结构、加密算法、分布式缓存、Hadoop、Spark、Storm、YARN、机器学习、云计算,用来查漏补缺最好不过。

image

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
op、Spark、Storm、YARN、机器学习、云计算,用来查漏补缺最好不过。

[外链图片转存中…(img-MUlScVu5-1713691455231)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值