filebeat:Failed to publish events caused by: write tcp 5044: write: connection reset by peer

简介: filebeat:Failed to publish events caused by: write tcp 5044: write: connection reset by peer

一、问题描述



filebeat的日志文件上一直在报这个错误:Failed to publish events caused by: write tcp 5044: write: connection reset by peer,从明面上看这个问题就是联通logstash时失败了,具体是什么原因却看不出来。刚开始网络上搜了下,发现网上的解决方法都是给logstash配置个连接超时的配置,就是在logstash的input里面配置如下即可:


input {
        beats {
                port => 5044
                codec => json
                client_inactivity_timeout => 36000
        }
}


笔者试了,不好使,根本原因还是我这里的报错不是这个导致的。


二、问题原因



上面的方法不好使,然后笔者就去检查了logstash的日志,有下面这块日志信息:

io.netty.util.internal.OutOfDirectMemoryError: failed to allocate 16777216 byte(s) of direct memory (used: 1029357059, max: 1037959168)
        at io.netty.util.internal.PlatformDependent.incrementMemoryCounter(PlatformDependent.java:640) ~[netty-all-4.1.18.Final.jar:4.1.18.Final]
        at io.netty.util.internal.PlatformDependent.allocateDirectNoCleaner(PlatformDependent.java:594) ~[netty-all-4.1.18.Final.jar:4.1.18.Final]
        at io.netty.buffer.PoolArena$DirectArena.allocateDirect(PoolArena.java:764) ~[netty-all-4.1.18.Final.jar:4.1.18.Final]
        at io.netty.buffer.PoolArena$DirectArena.newChunk(PoolArena.java:740) ~[netty-all-4.1.18.Final.jar:4.1.18.Final]
        at io.netty.buffer.PoolArena.allocateNormal(PoolArena.java:244) ~[netty-all-4.1.18.Final.jar:4.1.18.Final]
        at io.netty.buffer.PoolArena.allocate(PoolArena.java:214) ~[netty-all-4.1.18.Final.jar:4.1.18.Final]
        at io.netty.buffer.PoolArena.allocate(PoolArena.java:146) ~[netty-all-4.1.18.Final.jar:4.1.18.Final]
        at io.netty.buffer.PooledByteBufAllocator.newDirectBuffer(PooledByteBufAllocator.java:324) ~[netty-all-4.1.18.Final.jar:4.1.18.Final]
        at io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:185) ~[netty-all-4.1.18.Final.jar:4.1.18.Final]
        at io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:176) ~[netty-all-4.1.18.Final.jar:4.1.18.Final]
        at io.netty.buffer.AbstractByteBufAllocator.ioBuffer(AbstractByteBufAllocator.java:137) ~[netty-all-4.1.18.Final.jar:4.1.18.Final]
        at io.netty.channel.DefaultMaxMessagesRecvByteBufAllocator$MaxMessageHandle.allocate(DefaultMaxMessagesRecvByteBufAllocator.java:114) ~[netty-all-4.1.18.Final.jar:4.1.18.Final]
        at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:125) ~[netty-all-4.1.18.Final.jar:4.1.18.Final]
        at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:645) ~[netty-all-4.1.18.Final.jar:4.1.18.Final]
        at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:580) ~[netty-all-4.1.18.Final.jar:4.1.18.Final]
        at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:497) ~[netty-all-4.1.18.Final.jar:4.1.18.Final]
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:459) [netty-all-4.1.18.Final.jar:4.1.18.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858) [netty-all-4.1.18.Final.jar:4.1.18.Final]
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-all-4.1.18.Final.jar:4.1.18.Final]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_281]


看到这里就很简单明了了,logstash是用java写的,这里报的是直接内存这块使用已经满了,那就给直接内存增加点容量吧(注意:直接内存不属于堆栈范围,他是jvm虚拟机之外的内存,jvm是通过DirectByteBuffer来操作这块堆外内存的,这块内存常常会因为我们的忽视,导致内存溢出,直接内存详情请看这里:JVM内存结构详细总结)

然后笔者就去修改了logstash的jvm参数,就ok了。


三、问题解决



从报错上看 1037959168 该值将近1G,笔者直接提到了2G,参数如下

-XX:MaxDirectMemorySize=2048M


logstash配置截图如下:

7699cf05a0e4446caa5fc9c832ad5c23.png

logstash的运行截图如下:

image.png

(备注:这里当时配置的是2024不是2048,属于失误)


相关文章
|
消息中间件 存储 分布式计算
【Flume】Flume配置文件详细分析
【4月更文挑战第4天】【Flume】Flume配置文件详细分析
|
消息中间件 自然语言处理 JavaScript
[5.0] How RocketMQ Proxy Startup?
本文分享RocketMQ Proxy是如何启动的,代码基于: https://github.com/apache/rocketmq/tree/release-5.0.0
3291 0
[5.0] How RocketMQ Proxy Startup?
|
大数据 数据管理 Docker
【Datahub系列教程】Datahub入门必学——DatahubCLI之Docker命令详解
【Datahub系列教程】Datahub入门必学——DatahubCLI之Docker命令详解
1727 0
|
消息中间件 Java 开发工具
Spring Cloud【Finchley】实战-06使用/actuator/bus-refresh端点手动刷新配置 + 使用Spring Cloud Bus自动更新配置
Spring Cloud【Finchley】实战-06使用/actuator/bus-refresh端点手动刷新配置 + 使用Spring Cloud Bus自动更新配置
775 0
|
SQL 存储 Java
Java中使用ClickHouseDriver连接和基本操作
通过上述步骤,你可以轻松地在Java应用中集成ClickHouse数据库,执行基本的CRUD操作。需要注意的是,实际开发中应当根据实际情况调整数据库连接配置(如URL中的主机、端口、数据库名等),并根据应用需求选择合适的异常处理策略,确保代码的健壮性和资源的有效管理。此外,对于复杂查询和大批量数据处理,建议充分利用ClickHouse的特性(如分布式处理、列式存储优化等),以进一步提升性能。
1615 2
|
Unix Linux 编译器
解决在Windows平台上运行Golang程序时出现的syscall.SIGUSR1未定义错误。
通过这种结构,你的代码既可以在支持 SIGUSR1 信号的系统上正常工作,又可以在不支持这些信号的 Windows 系统上编译通过,确保跨平台的兼容性和功能的完整性。
421 0
|
Java 大数据 数据库连接
clickhouse使用及常见异常 【已解决】
clickhouse使用及常见异常 【已解决】
1778 0
|
人工智能 自然语言处理 安全
在线使用:Poe Ai网页版_pc版_poe ai中文官网入口
幸运的是,如今国内用户也可以轻松享受Poe AI的强大功能,突破网络屏障,开启属于自己的AI创作之旅!
6889 7
在线使用:Poe Ai网页版_pc版_poe ai中文官网入口
|
Oracle Java 关系型数据库
Win11 系统Java17的安装教程:最新版JDK 17.07下载、安装、卸载详解
Win11 系统Java17的安装教程:最新版JDK 17.07下载、安装、卸载详解
6294 0