记一次由于 TCP 连接过多引起的错误 java.net.SocketException: Too many open files

Java网络编程与DDOS防御:从Socket原理到系统韧性建设 网络编程是构建现代分布式系统的核心技术,其基础在于对TCP/IP协议栈和Socket通信机制的深入理解。Socket作为网络通信的端点,通过操作系统提供的系统调用实现进程间跨网络的数据交换,其工作模式(阻塞/非阻塞)和协议选择(TCP/UDP)直接影响着程序的并发性能与资源效率。在工程实践中,高并发场景下的线程池管理与连接复用是保障系统稳定性的关键,不当的资源分配可能导致本地端口耗尽或内存泄漏。从安全视角看,理解网络协议的潜在滥用风险,如SYN Flood或HTTP Flood的攻击原理,能够帮助开发者构建 阅读详情

背景

最近项目开始集成测试,测试同学会不停打入数据测试稳定性
所以问题就这么出现了

现象以及分析

项目启动报错
Caused by: java.net.UnknownHostException: xxxxmysql
at java.net.InetAddress.getAllByName0(InetAddress.java:1281)
at java.net.InetAddress.getAllByName(InetAddress.java:1193)
at java.net.InetAddress.getAllByName(InetAddress.java:1127)
at com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:132)
at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:63)
… 14 common frames omitted
Caused by: java.net.SocketException: Too many open files
at java.net.Socket.createImpl(Socket.java:478)
at java.net.Socket.getImpl(Socket.java:538)
at java.net.Socket.setTcpNoDelay(Socket.java:998)
at com.mysql.cj.protocol.StandardSocketFactory.configureSocket(StandardSocketFactory.java:94)
at com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:147)
at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:63)

两部分报错

第一部分 说不识别配置的host 这个一直没动过,hosts文件是有配置的
第二部分 重点来了 说打开的文件过多,报的socket错误,在创建socket时报了错,看上下文异常信息,应该是mysql驱动在连接数据库的时候报错了,不能打开太多连接咯?

解决过程

首先查看 tcp 连接信息 netstat
发现了大量TIME_WAIT状态的连接 正常肯定不是这样的
在这里插入图片描述
有一个奇怪的应用程序 总也调用名为xxxserv的服务 而且状态都是TIME_WAIT
查看相关同事代码 发现 有用HttpClient 调用这个服务 而且.没有连接池,没有用完关闭,一次一个新连接

还有一个查询方法 netstat -ant|awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print (a,S[a])}’
LISTEN 28
CLOSE_WAIT 15
ESTABLISHED 45
TIME_WAIT 110
这里会看到 每种状态的连接数量

解决方案:
在tomcat 启动脚本tomcat/bin/catalina.sh 前添加ulimit 如下:
#!/bin/sh
ulimit -n 19660
当然相关同事代码也是需要更改的 只不过 在tomcat设置后 更加保险

.NET到底是啥?Runtime、BCL、SDK、CLI四层拆解 .NET不是一门语言,也不是操作系统,而是一个分层演进的跨平台开发平台。其核心由Runtime(执行引擎,负责JIT编译IL字节码)、BCL(基础类库,封装OS能力的预编译二进制集合)、SDK(含Roslyn编译器与CLI工具链的开发套件)和CLI(底层构建协议,比IDE更真实的控制入口)四大部件构成。这种分层结构决定了.NET既能实现C#语法统一,又能支撑Windows专属API(如WMI、注册表)与Linux/macOS跨平台运行并存的技术现实。理解这四者关系,是解决Runtime版本冲突、自包含部署失 阅读详情

相关推荐

Tomcat部署实战:从环境配置到性能调优的通用错误与避坑指南

在Java Web开发领域,应用服务器是承载业务逻辑的核心运行环境。其工作原理在于通过特定的容器管理Servlet生命周期、处理HTTP请求与响应,并管理线程、连接等系统资源。合理配置应用服务器对于保障Web应用的稳定性、性能和安全性具有至关重要的技术价值,是生产环境高效运行的基石。无论是单体应用还是分布式微服务架构,其部署与配置都是开发者必须掌握的基础技能。本文将聚焦于广泛使用的Apache Tomcat服务器,针对其环境配置、应用部署、连接器调优、会话管理等核心环节,结合内存泄漏、性能调优等高频热词,深

weixin_30512043的博客 335

解决jdbc连接本地mysql数据库时报错Caused by: java.net.UnknownHostException: mysql

今天在写代码的时候遇到的问题,解决问题后记录下~ The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.Na...

Caizizhe的博客 8204

JMeter性能调优实战:从JVM优化到脚本编写的进阶技巧

性能测试是确保软件系统稳定性和可扩展性的关键环节,其核心在于模拟真实用户负载以评估系统瓶颈。Apache JMeter作为一款广泛使用的开源负载测试工具,其原理是通过多线程模拟并发用户,向目标系统施加压力并收集性能指标。深入理解JMeter的工作原理并进行针对性调优,能极大提升测试的准确性与效率,避免因测试工具自身瓶颈导致结果失真,这对于精准定位系统性能问题具有重要技术价值。在实际的压测场景中,尤其是在高并发和分布式环境下,对JMeter进行JVM调优、连接池配置以及脚本逻辑优化,是保障测试数据可靠性的基础

weixin_33698043的博客 438

Mysql连接报错:Communications link failure

================================ ©Copyright 蕃薯耀2022-01-06 ​蕃薯耀的博客_优快云博客 一、问题描述 Mysql连接报错:Communications link failure: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure Caused by: java.net.ConnectException: Conne...

蕃薯耀的博客 1万+

Apache HttpClient可靠性测试全攻略:从单元测试到混沌工程

在微服务架构中,HTTP客户端作为系统间通信的核心组件,其可靠性直接影响应用稳定性。理解HTTP客户端的工作原理,特别是连接池管理、超时控制、重试机制等基础概念,是构建稳健分布式系统的关键。这些技术通过模拟网络异常、服务端故障等复杂场景,确保客户端在真实环境下的韧性,其价值在于提升系统容错能力与用户体验。在实际工程中,针对Apache HttpClient这类广泛使用的库,需要设计从单元测试到集成测试,再到契约测试与混沌测试的多层次验证体系。本文聚焦于通过模拟连接泄漏、慢速攻击等典型问题,结合MockSer

GOBY 栏目 736

SpringBoot内置Tomcat性能调优实战:从参数解析到压测验证

在Java Web开发中,Servlet容器是承载应用运行的核心组件,负责处理HTTP请求与响应。其工作原理基于多线程模型和连接池机制,通过优化线程调度与连接管理来提升并发处理能力。这项技术的价值在于能够显著提高应用吞吐量、降低响应延迟,是构建高可用分布式系统的关键环节。常见的应用场景包括电商大促、实时数据处理和高并发API服务等。本文聚焦于SpringBoot内置Tomcat的调优实践,深入解析max-threads、accept-count等核心参数配置,并结合连接池优化和内存管理策略,帮助开发者解决实

weixin_34014555的博客 342

Spring_SpringMvc_Mybatis 异常

已解决

liaoheniu的博客 287

家庭宽带IPv6避坑指南:如何通过DHCPv6-PD获取公网地址(附OpenWRT配置)

本文详细解析了家庭宽带IPv6的地址分配机制,重点介绍了通过DHCPv6-PD获取公网地址的方法,并提供了OpenWRT路由器的具体配置步骤。从路由器通告(RA)标记位到前缀委派(PD)流程,帮助用户解决IPv6部署中的常见问题,实现稳定高效的IPv6网络连接。

backprop5master的博客 1175

Mysql连接数据库异常汇总

一.The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server 异常信息: 二.No appropriate protocol (protocol is disabled or cipher suites are inappropriate) 异常信息 Caused by: javax.net.ss.

笨小孩的博客 1095

Windows非分页缓冲池内存泄漏实战:PoolMon与RAMMap高效排查指南

本文详细介绍了Windows系统中非分页缓冲池内存泄漏的实战排查方法。当系统出现卡顿且内存占用异常增长时,通过RAMMap工具快速定位非分页缓冲池异常,并利用PoolMon监控内核内存分配标签,精准锁定泄漏源。文章提供了从确认症状、安装工具到使用findstr命令溯源驱动文件的完整五步排查流程,并总结了常见泄漏标签与解决方案,帮助用户高效解决深层系统内存问题。

weixin_28455801的博客 1008

基于PLC的图书馆机器人设计与仿真

本文设计了一种基于PLC的图书馆机器人系统,该系统能提升图书馆自动化管理水平,选用西门子S7-1200系列PLC作为核心控制单元,结合电机驱动、传感器采集以及超声波避障等技术,设计出机器人行走、图书识别与分拣的功能模块,系统借助条形码扫描模块获取图书信息,将其分析后与设定的存放位置做对比,精准达成图书的存取和归还。仿真结果显示,机器人执行任务时运动控制响应时间是0.35秒,避障成功率为98.3%,图书识别准确率高达99.4%,在控制系统方面,运用STEP7-MICRO/WIN软件编程,结合WINCC设计组态

weixin_44553616的博客 1924

JDBC连接超时,检查网络问题或者数据库连接信息

JDBC连接超时,检查网络问题或者数据库连接信息。 2021-04-21 10:44:50.257 [restartedMain] ERROR com.zaxxer.hikari.pool.HikariPool - DateSourceHikariCP - Exception during pool initialization. java.sql.SQLNonTransientConnectionException: Could not create connection to database se

qq_41018670的博客 1605

免疫治疗新思路:用COMPASS算法挖掘单细胞数据中的代谢靶点(含差异分析技巧)

本文介绍了如何利用COMPASS算法从单细胞转录组数据中系统推断免疫细胞的代谢活性,为肿瘤免疫治疗提供新的靶点发现思路。文章详细阐述了COMPASS结合流平衡分析的核心原理,并提供了从差异分析到可成药性评估的完整转化路径,旨在帮助研究者精准定位代谢弱点,开发新型免疫代谢疗法。

weixin_29275257的博客 366

java.net.SocketException: Too many open files分析及解决办法

java.net.SocketException: Too many open files在错误影响到基础 TCP 协议时抛出 为什么发生此问题? 这些异常指出操作系统 (OS) 资源问题和操作系统与 JVM 进程用完文件描述符的原因 在几个并发用户连接到服务器之后通常会发生此问题。Java 打开许多文件,以便读取运行应用程序所必需的类。大量应用程序会使用许多文件描述符,这会...

wensonlee的专栏 349

绝对旋转编码器学习笔记(基本原理,与PC通信等,不定期更新中)

前言 最近开始学习编码器相关内容,目的在于搞清楚编码器的原理,与上位机的联系等问题。笔记资料来源为网络,整理的同时也会有一些总结和感悟。由于研究方向需求,主要研究数字旋转编码器。 1.编码器的定义 编码器(encoder)是将信号(如比特流)或数据进行编制、转换为可用以通讯、传输和存储的信号形式的设备。——摘自《百度百科》 通常来说,编码器可以将角度位移、直线位移、转速等物理量转换为电信号。这里的电信号根据不同原理的编码器输出脉冲、二进制数码等不同的类型,下面会提到。 2.编码器的分类 编.

黑化咸鱼的博客 1万+

基于DO-178C/331的飞控软件研发环境的研究

本研究提出了一套基于DO-178C/331标准的飞控系统软件开发和验证框架。通过优化模型库的设计、代码生成配置和测试验证流程,显著提升了飞控系统软件的开发效率和安全性。未来的研究可以进一步扩展模型库的功能,以适应更复杂的飞控系统需求。

qq_41854911的博客 561

java.net.SocketException: Too many open files(打开的文件过多)

打开的文件过多  

7267

离散小波变换(概念与应用)

离散小波变换(概念与应用)

weixin_46713695的博客 4414

TroubeShooting-java.net.SocketException: Too many open files

Caused by: java.net.SocketException: Too many open files at java.base/java.net.Socket.createImpl(Socket.java:462) at java.base/java.net.Socket.getImpl(Socket.java:522) at java...

如果能重来... 302

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

服务器异常java.io.IOException: Too many open files(系统最大文件打开数限制)

后台服务器(Linux) 在转音源的时候 报java.io.IOException: Too many open files 在网上查了一些资料 记录如下: 打开的文件过多,一般来说是由于应用程序对资源使用不当造成,比如没有及时关闭Socket或数据库连接等。但也可能应用确实需要打开比较多的文件句柄,而系统本身的设置限制了这一数量。 异常 1   Java.NET.SocketEx

luckykapok918的专栏 6145

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【java.io.IOException: Too many open files】

打开的文件过多,一般来说是由于应用程序对资源使用不当造成,比如没有及时关闭Socket或数据库连接等。但也可能应用确实需要打开比较多的文件句柄,而系统本身的设置限制了这一数量。   异常 1   java.net.SocketException: Too many open files   at java.net.PlainSocketImpl.accept(Compiled Code)

瞳孔裏旳阳光的专栏 561

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

java.net.SocketException: Too many open files解决方法

一、错误现象 tomcat启动后,会出现前台页面无法访问,从日志中看错误: Java.NET.SocketException: Too many open files 2.错误原因 Linux默认打开文件1024,对于并发量大的无法满足要求; 3.解决方法 可以通过修改/etc/security/limits.conf文件中的内容,在最后一行加入如下命令: * - no...

java学习之简单开发快乐学习 653

Linux下运行tomcat出现java.net.SocketException: 打开的文件过多错误

tomcat报“too many open files”的错误,解决办法如下:   报此错误是由于系统内核对进程打开文件个数的限制,默认为1024 [root@localhost ~]# ulimit -n 1024 修改参数,增大这个限制:   #vi /etc/security/limits.conf   增加下面这一行内容:...

jsx112的专栏 601

java 此文件正由,java.net.SocketException: Too many open files(打开的文件过多)方法二...

问题描述以下两个堆栈跟踪指示同一个问题并报告相同的消息:打开的文件过多丅异常 1java.net.SocketException: Too many open filesat java.net.PlainSocketImpl.accept(Compiled Code)at java.net.ServerSocket.implAccept(Compiled Code)at java.net.Ser...

weixin_39615741的博客 659
上一篇: Synchronized锁机制详解
下一篇: Mac下Homebrew切换源
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值