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

Spring Boot Admin健康检查引起的Spring Boot服务假死

问题现象

最近在spring boot项目中引入了 spring-boot-starter-actuator 后,测试环境开始出现服务假死的现象,

且这个问题十分怪异,只在多个微服务中的简称A的这个服务中出现,其他服务都没有出现这个问题,

之所以说他是假死,是因为只是http请求无法访问进去了,但是该服务的定时任务却可以定时执行。

问题排查

通过查看jvm的线程信息发现,假死的A服务中,存在很多目前正在waiting状态的http nio线程,

进一步跟踪这些线程的堆栈信息,发现他们都在Alibaba Druid连接池的获取Connection方法中等待获取到最新的Connection,

第一反应是不是连接泄露了,存在慢sql、阻塞住的sql,或者手动获取connection但是没有归还的现象,

于是通过在定时任务代码中打印连接池的状态,发现也没有这种情况,而且连接池的最大连接数设置的也挺大的。

初步定位

通过观察该连接池的链接对象,发现是一个sql server数据库,但是我们的项目配置连接的其实是mysql,

在代码中搜索发现了有一个手动创建连接池的地方,而这里是为了与一个客户的sql server数据库做同步使用的,但是在给其他的客户部署时,并不需要这个操作,代码如下:

在这里插入图片描述
这里的操作有一个最大的问题,就是当不设置Druid连接池的等待连接时间时,该时间是-1,即默认永远等待,永不超时

最终定位

有了上面的代码,则需要确认为什么获取不到connection?造成永远等待?

这很正常,因为其他的客户环境并没有sql server,完全无法连接上啊,这时候Druid连接池中的可用connection压根没有,

然后spring boot admin,又不停的通过http轮询检查服务健康状态,最终它的每次http请求都会陷入阻塞等待connection,加之http又没有设置连接超时时间,

最终健康检查http连接占满了服务的http连接,导致其他的请求无法进入。

解决与避免

这里存在几个问题

  1. 该代码应当在指定客户环境运行,其余客户不应当创建该连接池
  2. 连接池配置应当通过yml文件配置,这样可以尽快的发现系统中存在的相关io组件,并发现其配置的不正确性,spring boot支持多数据源配置。

相关文章:

Spring Boot Admin健康检查引起的Spring Boot服务假死

问题现象 最近在spring boot项目中引入了 spring-boot-starter-actuator 后,测试环境开始出现服务假死的现象, 且这个问题十分怪异,只在多个微服务中的简称A的这个服务中出现,其他服务都没有出现这个问题, 之所以说…...

java企业人事信息管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web企业人事信息管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境 为TOMCAT7.0,Myeclipse8.5开发,数据库为M…...

如何通过 useMemo 和 useCallback 提升你的 React 应用性能

背景 在 React 中,useMemo 和 useCallback 这两个 hook 是我们优化应用性能的有力工具。它们会返回 memoized 版本的值或函数,只在依赖项发生变化时才进行重新计算或定义。 Hook 介绍 useMemo useMemo 的作用是返回一个 memoized 值,它接…...

ArkTS - @Prop、@Link

一、作用 Prop 装饰器 和Link装饰器都是父组件向子组件传递参数,子组件接收父组件参数的时候用的,变量前边需要加上Prop或者Link装饰器即可。(跟前端vue中父组件向子组件传递参数类似) // 子组件 Component struct SonCom {Prop…...

Python中matplotlib库的使用1

1 matplotlib库简介 matplotlib是一个数学绘图库,可以将数据通过图形的方式显示出来,也就是数据可视化。 2 matplotlib库的安装 2.1 打开cmd窗口 点击键盘的“Win”“R”键,在弹出的“运行”对话框的“打开”栏中输入“cmd”,…...

位乘积计数-蓝桥

题目链接&#xff1a;1.位乘积计数 - 蓝桥云课 (lanqiao.cn) 解题思路&#xff1a;10的5次数量级暴力居然过了&#xff0c;看来测试样例很水&#xff0c;直接1遍历到n&#xff0c;再用一个循环判断每位数相乘乘机是否等于m即可。 下面是c代码&#xff1a; #include <iost…...

HCIA-Datacom题库(自己整理分类的)——OSPF协议判断

1.路由表中某条路由信息的Proto为OSPF则此路由的优先级一定为10。√ 2.如果网络管理员没有配置骨干区域,则路由器会自动创建骨干区域&#xff1f; 路由表中某条路由信息的Proto为OSPF&#xff0c;则此路由的优先级一定为10。 当两台OSPF路由器形成2-WAY邻居关系时&#xff0…...

【FPGA/verilog -入门学习16】fpga状态机实现

需求&#xff1a; 用两段式状态机设计序列码检测机。这个序列码检测机用于检索连续输入的 1bit 数据 &#xff08;每个时钟周期输入 1bit&#xff09;&#xff0c;当检测到一串“101100”的输入数据时&#xff0c;产生一个时钟周期的 高脉冲指示信号 状态图 //实现状态机切…...

记chrome的hackbar无法post php://input的问题

尽管hackbar支持post请求体&#xff0c;但是当请求体里面没有等于号的时候&#xff0c;无法post出去&#xff0c;这样如果需要使用php://input绕过waf的时候就没法做。 在开发人员工具的网络里面可以看到不使用等于号的情况下没有荷载。 之后在这里看到了解决方法&#xff0c;…...

相机解析驱动小记

用过了几款相机&#xff0c;对使用相机也有了一点心得&#xff0c;在此记录。 当你得到一款相机&#xff0c;你需要做的&#xff1a; 第一件事&#xff1a;在datasheet中阅读配置单&#xff0c;知道怎么配置、配置完输出来是什么。 配置输出尺寸&#xff1b;传输模式&#xf…...

EasyExcel判断导入时是否符合给定模板

问题描述 在做系统的导入导出模块时需要在导入时判断用户导入的表格是否符合给定的模板&#xff0c;该系统导入导出使用的是EasyExcel&#xff0c;因此在实现该功能时是基于EasyExcel的 解决方案 创建Spring Boot项目&#xff0c;并添加如下依赖 <dependency><group…...

BDD - Python Behave Retry 机制

BDD - Python Behave Retry 机制 引言Behave RetryBehave Retry 应用feature 文件创建 step 文件Retry运行 Behave 并生成 rerun 文件重新运行失败的场景 引言 在日常运行测试用例&#xff0c;有时因为环境不稳定造成一些测试用例跑失败了&#xff0c;如果能将这些失败的测试用…...

链 表

3_1 删除链表中的节点 Answer-将被删节点下一个val复制到待删除节点&#xff0c;然后将待删节点直接连接到下下一个节点即可。 学到&#xff1a; /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) …...

一个可以用于生产环境得PHP上传函数

上传表单 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>文件上传</title> </head> <body><h1>选择要上传的文件</h1><!-- 定义一个包含文件输入字段的表单 --…...

PyTorch中常用的工具(3)TensorBoard

文章目录 前言3 可视化工具3.1 TensorBoard 前言 在训练神经网络的过程中需要用到很多的工具&#xff0c;最重要的是数据处理、可视化和GPU加速。本章主要介绍PyTorch在这些方面常用的工具模块&#xff0c;合理使用这些工具可以极大地提高编程效率。 由于内容较多&#xff0c…...

Langchain-Chatchat开源库使用的随笔记(一)

笔者最近在研究Langchain-Chatchat&#xff0c;所以本篇作为随笔记进行记录。 最近核心探索的是知识库的使用&#xff0c;其中关于文档如何进行分块的详细&#xff0c;可以参考笔者的另几篇文章&#xff1a; 大模型RAG 场景、数据、应用难点与解决&#xff08;四&#xff09;R…...

软件体系架构复习二

呃&#xff0c;前面复习的忘了发了。从后面开始吧 Unit 11--18 复习Tips&#xff1a; 重点在于对概念的理解&#xff0c;概念间关系的理解。 对具体的识别方法&#xff0c;处理方法等根据自己的兴趣做一些了解即可 。 如&#xff1a;关于 软件架构脆弱性的成因 &#xff0c; …...

产品经理学习-策略产品指标

目录&#xff1a; 数据指标概述 通用指标介绍 Web端常用指标 移动端常用指标 如何选择一个合适的数据指标 数据指标概述 指标是衡量目标的一个参数&#xff0c;指一项活动中预期达到的指标、目标等&#xff0c;一般用数据表示&#xff0c;因此又称为数据指标&#xff1b;…...

【c语言】日常刷题☞有趣的题目分享❀❀

︿(&#xffe3;︶&#xffe3;)︿hi~~ ヽ(&#xffe3;ω&#xffe3;(&#xffe3;ω&#xffe3;〃)ゝ本次刷题发现3个比较有趣的题目&#xff0c;分享给您&#xff0c;希望对您有所帮助&#xff0c;谢谢❀❀~ 目录 1.单词覆盖还原&#xff08;单词的连续性&#xff09; …...

LINUX 抓包工具Tcpdump离线安装教程

本次教程基于内网环境无法访问网络使用安装包进行安装抓包工具 1、首先给大家看下一共有6个安装包&#xff0c;依次进行解压&#xff0c;包我就放到csdn上了&#xff0c;需要的可以联系我进行下载 2打包然后传到服务器任意一个目录下&#xff0c;进入到当前目录&#xff0c;然后…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问&#xff08;基础概念问题&#xff09; 1. 请解释Spring框架的核心容器是什么&#xff1f;它在Spring中起到什么作用&#xff1f; Spring框架的核心容器是IoC容器&#…...

什么是VR全景技术

VR全景技术&#xff0c;全称为虚拟现实全景技术&#xff0c;是通过计算机图像模拟生成三维空间中的虚拟世界&#xff0c;使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验&#xff0c;结合图文、3D、音视频等多媒体元素…...

uniapp 实现腾讯云IM群文件上传下载功能

UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中&#xff0c;群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS&#xff0c;在uniapp中实现&#xff1a; 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

认识CMake并使用CMake构建自己的第一个项目

1.CMake的作用和优势 跨平台支持&#xff1a;CMake支持多种操作系统和编译器&#xff0c;使用同一份构建配置可以在不同的环境中使用 简化配置&#xff1a;通过CMakeLists.txt文件&#xff0c;用户可以定义项目结构、依赖项、编译选项等&#xff0c;无需手动编写复杂的构建脚本…...

Windows 下端口占用排查与释放全攻略

Windows 下端口占用排查与释放全攻略​ 在开发和运维过程中&#xff0c;经常会遇到端口被占用的问题&#xff08;如 8080、3306 等常用端口&#xff09;。本文将详细介绍如何通过命令行和图形化界面快速定位并释放被占用的端口&#xff0c;帮助你高效解决此类问题。​ 一、准…...

leetcode_69.x的平方根

题目如下 &#xff1a; 看到题 &#xff0c;我们最原始的想法就是暴力解决: for(long long i 0;i<INT_MAX;i){if(i*ix){return i;}else if((i*i>x)&&((i-1)*(i-1)<x)){return i-1;}}我们直接开始遍历&#xff0c;我们是整数的平方根&#xff0c;所以我们分两…...