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

news2024/10/6 14:35:05

目录

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 timeout
    at 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 firewall
     Loaded: 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 ago
       Docs: 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.coloradmin.cn/o/1847237.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

音视频开发—FFmpeg 打开摄像头进行RTMP推流

实验平台:Ubuntu20.04 摄像头:普通USB摄像头,输出格式为YUV422 1.配置RTMP服务器推流平台 使用Nginx 配置1935端口即可,贴上教程地址 ubuntu20.04搭建Nginxrtmp服务器) 2.配置FFmpeg开发环境 过程较为简单,这里不…

深度学习Week17——优化器对比实验

文章目录 深度学习Week17——优化器对比实验 一、前言 二、我的环境 三、前期工作 1、配置环境 2、导入数据 2.1 加载数据 2.2 检查数据 2.3 配置数据集 2.4 数据可视化 四、构建模型 五、训练模型 1、将其嵌入model中 2、在Dataset数据集中进行数据增强 六、模型评估 1、Accur…

IMU用于飞行坐姿校正

为了提升长途飞行的舒适度并预防乘客因不良坐姿导致的身体不适,来自荷兰上海两所大学的研究团队携手开发出一种创新的“舒适穿戴”设备,专为识别飞行中的坐姿设计。 研究团队制作了两种原型设备:一种追求极致舒适,另一种为紧身设…

增强-MIGO物料消耗需要将物料描述写到会计凭证的摘要里面

财务比较闲提的需求,有些物料消耗需要将物料描述写到会计凭证的摘要里面, 找了一下增强点,随便搞了一下,可以了。

20240620日志:TAS-MRAM的电阻开放分析

TAS-MRAM的电阻开放缺陷分析 1 MRAM介绍开放电阻的缺陷 1 MRAM介绍 MRAM(Magnetic random access memory),磁随机存储器,利用磁性材料的状态来存储数据。MRAM的存储单元通常由一个磁隧道结( M T J 茅台酒 MTJ^{茅台酒} MTJ茅台酒&#xff0c…

STM32小项目———感应垃圾桶

文章目录 前言一、超声波测距1.超声波简介2.超声波测距原理2.超声波测距步骤 二、舵机的控制三、硬件搭建及功能展示总结 前言 一个学习STM32的小白~ 有问题请评论区或私信指出 提示:以下是本篇文章正文内容,下面案例可供参考 一、超声波测距 1.超声波…

通过 Setapp 使用 240 多款 Mac 生产力工具以及 GPT-4o

Setapp 是一项革命性的订阅服务,可以使用 240 多款 Mac 应用程序的综合套件,并配有强大的人工智能助手。 通过 Setapp 为你的工作效率和生产力增添魔力。 Setapp 官网:访问(提供 7 天试用) Setapp 的主要功能 AI 助手…

人工智能对决:ChatGLM与ChatGPT,探索发展历程

图: a robot is writing code on a horse, By 禅与计算机程序设计艺术 目录 ChatGLM:

数据结构-图的存储结构-邻接矩阵

图的结构十分复杂,不仅各个结点的度不同,各个顶点之间的路径也不尽相同。但是图的主要组成部分比较清晰,分为顶点信息和边或者弧的信息。 邻接矩阵 邻接矩阵就是用一维数组存储图中顶点的信息,用一个二维数组表示图中各个顶点之间…

区块链技术:重塑金融市场监管的新引擎

一、引言 随着金融市场的不断发展和创新,监管面临的挑战也日益严峻。传统的监管模式已难以满足现代金融市场的需要,而区块链技术的出现为金融市场监管带来了新的机遇。本文将探讨区块链技术在金融市场监管中的作用,以及它如何重塑监管模式&a…

组装盒示范程序

代码; #include <gtk-2.0/gtk/gtk.h> #include <glib-2.0/glib.h> #include <stdio.h>int main(int argc, char *argv[]) {gtk_init(&argc, &argv);GtkWidget *window;window gtk_window_new(GTK_WINDOW_TOPLEVEL);gtk_window_set_title(GTK_WINDO…

GPT 模型简史:从 GPT-1 到 GPT-4

文章目录 GPT-1GPT-2GPT-3从 GPT-3 到 InstructGPTGPT-3.5、Codex 和 ChatGPTGPT-4 GPT-1 2018 年年中&#xff0c;就在 Transformer 架构诞生⼀年后&#xff0c;OpenAI 发表了⼀篇题 为“Improving Language Understanding by Generative Pre-Training”的论文&#xff0c;作者…

这几种常见的性能调优方法和技巧,你掌握了吗?

性能调优是在软件开发过程中非常重要的一步&#xff0c;它可以提高软件的响应速度、资源利用率和整体性能。本文将介绍几种常见的性能调优方法和技巧&#xff0c;帮助开发人员提升软件的性能。 一、代码优化 1、一个好的编程规范的习惯不仅可以促进团队和谐&#xff0c;在代码的…

浅谈配置元件之LDAP默认请求

浅谈配置元件之LDAP默认请求 在进行LDAP&#xff08;轻量级目录访问协议&#xff09;相关测试时&#xff0c;JMeter提供了“LDAP 默认请求”配置元件来帮助用户便捷地设置LDAP查询的基本参数。本文介绍如何在JMeter中配置和使用“LDAP 默认请求”元件的指南。 1. 简介 “LDA…

怎么同时管理多个微信号

微信登录上软件就可以实现统一管理&#xff0c;能够自动加人&#xff0c;定时发圈&#xff0c;自动通过&#xff0c;自动回复

板凳--------第60章 SOCKET:服务器设计

60.1 迭代型和并发型服务器 1016 1.迭代型&#xff1a; 服务器每次只处理一个客户端&#xff0c;只有当完全处理完一个客户端的请求后才会去处理下一个客户端。只适用于快速处理客户端请求的场景&#xff0c;因为每个客户端都必须等待&#xff0c;直到前面所有的客户端都处理完…

NGINX_六 nginx 日志文件详解

六 nginx 日志文件详解 nginx 日志文件分为 **log_format** 和 **access_log** 两部分log_format 定义记录的格式&#xff0c;其语法格式为log_format 样式名称 样式详情配置文件中默认有log_format main $remote_addr - $remote_user [time_local] "req…

如何有效管理信息技术课堂

有效管理信息技术课堂是确保学生学习效果、维护课堂秩序和提升学生兴趣的关键。以下是一些详细的方法和策略&#xff0c;旨在帮助教师更好地管理信息技术课堂&#xff1a; 一、制定明确的课堂规则 强调课堂纪律&#xff1a;确保学生明确了解并遵守课堂纪律&#xff0c;如准时…

数据中心:AI范式下的内存挑战与机遇

在过去的十年里&#xff0c;数据中心和服务器行业经历了前所未有的扩张&#xff0c;这一进程伴随着CPU核心数量、内存带宽(BW)&#xff0c;以及存储容量的显著增长。这种超大规模数据中心的扩张不仅带来了对计算能力的急剧需求&#xff0c;也带来了前所未有的内存功率密度挑战&…

【HarmonyOS NEXT】鸿蒙 如何在包含web组件的页面 让默认焦点有效

页面包含web组件Button组件等&#xff0c;把页面的默认焦点放到Button组件上&#xff0c;不起效果。 因为web组件默认会在组件加载完成后获取焦点&#xff1b; 可以在web的网页加载完成时onPageEnd回调中&#xff0c;将设置默认获焦的组件通过focusControl.requestFocus方法主…