当前位置: 首页 > news >正文

RocketMQ-记一次生产者发送消息存在超时异常

目录

1、背景说明

2、排查

2.1、防火墙

2.2、超时时间设置

2.3、服务器资源检查

2.3.1、内存、CPU等

2.3.2、磁盘空间

​编辑

2.3.3、检查文件描述符

2.3.4、swap区

3、增加swap空间

3.1、创建目录

3.2、格式化

3.3、启动swap

3.4、查看效果


1、背景说明

在一次服务日志检查中,发现RocketMQ生产者,在向MQ发送消息时出现向服务端发现消息超时错误:org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeout

Exception in thread "main" org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeoutat org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendDefaultImpl(DefaultMQProducerImpl.java:640)at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1310)at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1256)at org.apache.rocketmq.client.producer.DefaultMQProducer.send(DefaultMQProducer.java:339)

2、排查

2.1、防火墙

如果是不同服务器之间、或者外网环境,检查防火墙设置

# 关闭防火墙
[root@localhost ~]# systemctl stop firewalld
# 查看防火墙状态
[root@localhost ~]# systemctl status firewalld

ubuntu操作系统使用 

# 检查 
(base) root@pd-2288H-V5:# service ufw status
● ufw.service - Uncomplicated firewallLoaded: loaded (/lib/systemd/system/ufw.service; enabled; vendor preset: enabled)Active: active (exited) since Tue 2024-06-11 17:06:23 CST; 1 weeks 2 days agoDocs: man:ufw(8)Process: 938 ExecStart=/lib/ufw/ufw-init start quiet (code=exited, status=0/SUCCESS)Main PID: 938 (code=exited, status=0/SUCCESS)Warning: journal has been rotated since unit was started, output may be incomplete.

2.2、超时时间设置

检查客户端初始化producer代码,在创建producer时,已经设置sendMsgTimeout时间。

默认producer.send(msg) 发送的超时时间3000ms

客户端与MQ都属于相同局域网,不存在网络阻塞,因此再增大超时时间并不合理

2.3、服务器资源检查

RemotingTooMuchRequestException问题出现时,MQ的并发并不大。

2.3.1、内存、CPU等

使用 top 命令

2.3.2、磁盘空间

MQ写入磁盘空间不足,也会导致消息写入失败

df -h

2.3.3、检查文件描述符

文件描述符是大于等于0的整数,其可以标明每一个被进程所打开的文件和 socket。最前面的三个文件描述符(0,1,2)分别与标准输入(stdin),标准输出(stdout)和标准错误(stderr)对应,后面打开的文件依此类推对应 3、4…… 。

从文件描述符的描述中得知,其是按照每个进程来分配的。于是上面的问题"我最多可以打开多少个文件"就可以进一步细化为下面几个问题

  • 一个进程最多可以打开多少个文件描述符
  • 一个用户最多可以打开多少个文件描述符
  • 一个系统最多可以打开多少个文件描述符
# 数字替换应用的PID
ls /proc/3274080/fd | sort -n | tail -n 1

检查当前最大句柄数

# 查看
ulimit -n
# 修改句柄数
ulimit -n 10240

查看全部

ulimit -a

2.3.4、swap区

在进一步检查中发现swap 可用空间不足

3、增加swap空间

3.1、创建目录

使用dd命令在某个目录(实际使用时换成其他目录,/tmp目录的数据会在重启后丢失)下新建一个2G的文件:

解释:1M是单位,1024是数目,合计1024M就是总大小1G

如果不足,可以重复进行新建 /tmp/swap2 等等

dd if=/dev/zero of=/tmp/swap bs=1M count=2048

3.2、格式化

格式化这个文件为swap格式:(用mkswap命令)

mkswap /tmp/swap

  

3.3、启动swap

启动swap,用swapon命令(就是将新建的swap添加到系统)

swapon /tmp/swap

swapon: /tmp/swap2:不安全的权限 0644,建议使用 0600。

3.4、查看效果

用swapon的-s参数

swapon -s

http://www.lryc.cn/news/378435.html

相关文章:

  • ls命令的参数选项
  • 网络安全:Web 安全 面试题.(文件上传漏洞)
  • 智源联合多所高校推出首个多任务长视频评测基准MLVU
  • Linux系统:线程概念 线程控制
  • LearnOpenGL - Android OpenGL ES 3.0 绘制纹理
  • 山东济南最出名的起名大师颜廷利:二十一世纪哲学的领航者
  • Nginx 负载均衡实现上游服务健康检查
  • 小程序使用接口wx.getLocation配置
  • Protobuf安装配置--附带每一步截图
  • 力扣1019.链表中的下一个更大节点
  • 查询mysql库表的几个语句
  • 【CT】LeetCode手撕—103. 二叉树的锯齿形层序遍历
  • 1958springboot VUE宿舍管理系统开发mysql数据库web结构java编程计算机网页源码maven项目
  • LVS DR模式
  • myslql事务示例
  • 解决Flutter应用程序的兼容性问题
  • 整合微信支付一篇就够了
  • 视创云展为企业虚拟展厅搭建,提供哪些功能?
  • c++ 常用的锁及用法介绍和示例
  • PostgreSQL源码分析——口令认证
  • Stability-AI(图片生成视频)
  • Linux机器通过Docker-Compose安装Jenkins发送Allure报告
  • 基于Gunicorn+Flask+Docker模型高并发部署
  • java:类型变量(TypeVariable)解析--基于TypeResolver实现将类型变量替换为实际类型
  • ru俄罗斯域名如何申请SSL证书?
  • python实现购物车的功能
  • 日元预计明年开始上涨
  • 8、PHP 实现二进制中1的个数、数值的整数次方
  • linux git凭证管理
  • WIC 图像处理初体验——读取像素的值