- 博客(38)
- 收藏
- 关注
原创 java应用服务启动时间过长时间排查
文章摘要:排查发现k8s容器启动失败的原因是CommandLineRunner实现类中的数据库查询阻塞主线程。具体表现为SubscriptionRecordServiceImpl在启动时循环查询2万多次UserSubscription表,而关联的SubscriptionRecord表缺乏索引导致全表扫描。这使得Spring的readiness状态一直为OUT_OF_SERVICE,导致k8s探针检测失败。问题根源在于大数据量表查询缺乏优化,阻塞了应用启动流程。建议对相关表添加索引优化查询性能,或调整Comm
2025-12-18 17:59:54
348
原创 k8s java应用pod内存占用过高问题排查
摘要 运维监控发现Pod内存使用率偶尔达到91%告警阈值。排查发现:1) Pod内存限制为3G,而JVM配置堆内存2G;2) 实际内存占用包括堆2G、元数据230M、线程栈(534线程约534M)等,总计约2.9G;3) 随着元数据和线程数增长,内存占用接近Pod上限触发告警。根本原因是Pod内存配额不足,建议将Pod内存从3G调整为4G以解决该问题。JVM内存组成主要包括堆、元空间、线程栈、CodeCache等堆外内存。
2025-10-21 17:09:06
555
原创 k8s容器java应用频繁重启问题排查 OOM方向
本文摘要:排查Kubernetes中Java应用频繁重启问题,发现是由OOM导致但未生成预期的dump文件。分析显示,在OOM时执行的/quitJava.sh脚本仅等待5秒就强制终止进程,导致dump文件生成中断。建议修改脚本延长等待时间至60秒,并增加jstack线程快照。同时优化存活探针配置,添加GC和JVM内存监控日志,以便全面排查内存问题。最终确认并非探针引发重启,而是OOM问题导致的容器异常终止。
2025-10-16 15:48:44
1044
原创 java应用dubbo接口超时问题分析,数据库方向
本文通过ARMS工具排查了系统性能问题:1)Redis数据获取异常;2)Dubbo接口超时;3)Druid连接池耗尽。重点分析了连接池占满的两种原因:最小连接数不足导致新建连接延迟或最大连接数不足导致请求排队。针对性地提出了优化方案:按需扩大min-idle或max-active参数。问题截图直观展示了各环节的性能瓶颈。
2025-10-09 17:34:32
372
原创 java应用CPU过高问题排查
本文通过监控分析和火焰图定位,发现某MQ消费服务CPU高负载问题。排查发现热点方法因高流量(TPS 146)占用50%CPU。优化包括:1)去除不必要的Redis查询;2)减少冗余JSON序列化操作;3)优化游标查询逻辑。上线后CPU使用率在低峰期降低约30%。整个过程展示了从监控排查到代码优化的完整性能调优路径。
2025-09-29 15:02:12
521
原创 java服务dubbo超时问题排查,GC方向
摘要:Dubbo服务出现线程池耗尽和超时错误,排查发现并非数据库慢SQL、下游服务或Redis问题。通过监控分析,发现JVM CPU和内存使用率异常升高,GC停顿时间过长(500ms-1s),表明堆内存不足导致频繁GC。解决方案是调整JVM堆内存和代际比例,扩大1G内存后服务恢复正常,GC时间显著下降。问题根源在于服务部署后内存资源不足,而非业务流量突增。
2025-04-13 00:11:48
546
原创 MapStruct verbose mode by setting -Amapstruct.verbose=true as a compilation argument 问题解决
idea: Settings --> Build,Execution,Deployment --> Compiler 如下图修改。
2024-05-20 17:08:02
955
原创 spring.factories 注入bean,以切面为例
AspectSystem.out.println("加载-0--1-");System.out.println("进入切面");@BeanSystem.out.println("加载-0---");//测试代码,获取spring.factories文件中EnableAutoConfiguration的类名称。
2023-10-20 22:09:40
449
原创 Ant Design Pro + Ant Design + React 踩坑记录
Ant Design Pro + Ant Design + React 踩坑记录
2023-04-23 17:30:36
978
原创 spring bean加载条件和顺序的方式 @Conditional家族和@Profile使用
@Conditional家族和@Profile使用
2023-04-23 16:30:18
1511
原创 【java sdk开发】参考spring注入接口代理类方式,注入接口代理类开发、open-sdk开发、sdk基础开发
参考openfeign代理实现方式,实现open-sdk开发,让客户端只需关心自己的业务
2023-02-10 16:26:39
899
原创 Mybatis注解开发 @Select @Insert @Update @Delete
Mybatis注解开发 @Select @Insert @Update @Delete@Select用法如果未使用mybatis的动态标签,则不需要加<script></script>标签注意若数据库为在oracle,使用容易造成字段类型不匹配的问题@Mapperpublic interface RtcCheckParamBussDao { @Select(value = "<script>"+ "select count
2021-04-30 11:23:54
2523
2
原创 【GIT】 TAG发布版本
【GIT】 TAG发布版本#查看本地branch中的taggit tag -l#git tag 《标签名》,给当前branch打tag,不推荐使用git tag xxx_dev_20210325_v1# 给某个提交节点,打tag,提交节点在idea中找,最近一个git showgit tag xxx_dev_20210325_v1 039bf8b# 给某个提交节点,打tag,并添加注释git tag xxx_dev_20210325_v1 -m "add tags informatio
2021-04-30 10:44:33
677
原创 【ELK】Elasticsearch入门05 --基础语法 综合条件查询 排序 分页
【ELK】Elasticsearch入门05 --基础语法 综合条件查询 排序 分页 综合条件查询GET /test/_search{ "_source": {"excludes":"sex"}, "query" : { "bool": { ## 条件:must,表示[]中条件都需要符合 ## 条件:should,表示[]中条件只需要符合一个即可查出 ## 条件:must_not,表示[]中条件一个都不符合即可查出 "must" :
2021-04-29 17:00:42
725
原创 【ELK】Elasticsearch入门04 -- 基础语法 查询语法(全文检索、多字段匹配、词条匹配、模糊检索、结果过滤)
【ELK】Elasticsearch入门03 – 基础语法 查询语法(全文检索、多字段匹配、词条匹配、模糊检索、结果过滤) 查询所有数据GET /索引名/_search{ "query" : { "match_all": {} }}GET /test/_search{ "query" : { "match_all": {} }}返回{ "took" : 0, "timed_out" : false, "_shards" : {
2021-04-28 18:03:50
2197
原创 【ELK】Elasticsearch入门03 -- 基础语法 新增数据 修改数据 删除数据
【ELK】Elasticsearch入门02 – 基础语法 新增数据 修改数据 删除数据 新增数据POST /索引库名/_doc/id id值可有可无,若不指定则由es随机分配ID{ "字段名1" : "字段值1", "字段名2" : "字段值2"}POST /test/_doc/1{ "name":"zhang san", "age": "22", "sex":"false"}返回:{ "_index" : "test", "_type
2021-04-28 15:20:23
981
原创 【ELK】Elasticsearch入门02 -- 基础语法 查询索引库信息 创建索引库 创建映射字段 删除索引库
【ELK】Elasticsearch入门02 – 基础语法 查询索引库信息 创建索引库 创建映射字段 删除索引库 创建索引库PUT /test{ "settings": { ## 分片数量 "number_of_shards": 1, ## 副本数量 "number_of_replicas": 1 }}返回结果:{ "acknowledged" : true, "shards_acknowledged" : true
2021-04-28 15:03:02
257
原创 【ELK】 Elasticsearch入门01 — 基础概念
【ELK】 Elasticsearch入门01 — 基础概念 索引库:代表整个索引,相当于数据库类型:相当于数据库的表。注意:ES7.0已将该栏位废弃文档:相当于数据库中的一行数据字段:相当于数据库的列信息分片:将数据按等分存在不同的分片。每个片区可在一台服务器上,也可以在多台服务器上副本:每个分片的复制 当在单机上进行分片导入数据后,若以后在ES集群中添加新的节点,数据会自动平衡加入到新的节点中。例如1台扩2台那么之前ES的一半数据会挪到新节点上。ES数据类型
2021-04-28 11:26:44
287
原创 【ELK】Kibana Discover菜单使用
## Kibana Discover菜单使用 Discover菜单介绍 在搜索下拉框中列出了索引各个栏位的信息,根据提示可以筛选出对应的数据例如:搜索ID为11580040 不分词检索得到以下结果entityOrPersonId.keyword : 11580040我们可以点击展开文档的详细信息,文档详细信息为两种,一种按照字段key:value显示。一种为json。下图为按字段显示:下面为按JSON显示:{ "_index": "aml",
2021-04-28 10:05:05
1351
2
原创 【ELK】 Kibana Dev Tools使用简介
【ELK】 Kibana Dev Tools使用简介 进入页面如下图:测试搜索索引库字段,点击按钮即可查询索引字段结构在该页面可以对es的检索语句进行测试,测试通过后再将其加入代码中。
2021-04-27 17:50:13
476
原创 【ELK】Kibana Logs使用
【ELK】Kibana Logs使用选择Logs页面进入如下图进入页面,主要分为两块。一块是event.dataset,一块是Message如上图我们对Message的OLRP02关键字进行筛选,右侧的图为日志输出的峰值图。语句:message : OLRP0002(筛选message栏位中包含OLRP002的日志数据,分词)在点击检索条件输入框时会有提示性下拉框,如下图...
2021-04-27 17:26:51
1101
原创 Mysql解决java数据库链接失效问题The last packet successfully received from the server was 3 milliseconds ago错误
[Mysql+JAVA+druid] 解决java链接mysql报The last packet successfully received from the server was 3 milliseconds ago. The last packet sent successfully to the server was 1 milliseconds ago.错误 触发现象第一次调用报上图错误,第二次恢复正常。 引起原因查询数据库wait_timeout(服务器关闭非交
2021-04-27 16:22:35
19295
6
原创 创建mysql用户、数据库、授权
创建mysql用户、数据库、授权以下所有指令需要在数据库服务器使用mysql指令进入dba用户才可执行创建mysql用户创建report用户,如果不存在则创建并且所有ip都能访问,密码为123456create user if not exists 'report'@'%' identified by '123456';创建数据库创建base数据库,编码为utf8mb4,排序规则为utf8mb4_unicode_cicreate database if not exists base
2021-04-22 20:48:56
152
原创 mysql创建用户和授权
mysql创建用户和授权创建mysql用户若允许所有IP使用该用户则将访问IP修改为%create user if not exists '用户名'@'访问ip' identified by 'password';为用户添加权限grant 访问权限 on 库名.表明 to 'user'@'访问IP' identified by 'password' ;设置只读权限grant select on *.* to '用户名'@'访问IP' identified by 'password'
2021-04-22 20:38:16
228
原创 解决ORACLE导入imp/exp导入表空间名不同的办法,以及一些其他错误填坑
@ORACLE IMP/EXP使用,两个库表空间不同时的解决办法ORACLE IMP/EXP使用,两个库表空间不同时的解决办法,以及一些其他错误填坑导入导出表空间不一致报错Export file created by EXPORT:V19.00.00 via conventional pathWarning: the objects were exported by HBS_DCORE_BASE2, not by youimport done in US7ASCII character set
2021-03-17 15:18:57
6390
1
原创 Docker常用命令整理
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2021-03-07 16:53:47
141
原创 【5】Hystrix
使用Hystrix可以有效的避免雪崩效应的产生。雪崩效应的产生原因:因为服务器容器(Tomcat)支持的线程和并发数有限,当有一个请求调用一个微服务出现问题时(通常一个请求可能需要级联的调起多个微服务),那么这个请求会一直阻塞在服务器上,之后的请求在调用这个微服务时也会阻塞,最终导致整个服务器的资源耗尽(如Tomcat一般支持200的并发,而此时有200分请求阻塞)线程占满,从而导致请求无法进...
2019-09-01 17:59:39
141
原创 【4】ribbon负载均衡
通过Spring Cloud Ribbon的封装,我们在微服务架构中使用客户端负载均衡调用非常简单,只需要如下两步:▪️服务提供者只需要启动多个服务实例并注册到一个注册中心或是多个相关联的服务注册中心。▪️服务消费者直接通过调用被@LoadBalanced注解修饰过的RestTemplate来实现面向服务的接口调用。在客户端(消费者端)的p...
2019-09-01 16:10:08
133
原创 【3】springCloud基础知识
1.spring自带的RestTemplate类实现远程调用首先将RestTemplate注入到spring容器中@Configurationpublic class templates{ @Bean public RestTemplate restTemplate(){ return new RestTemplate(); //参数可以为okHttp与Ht...
2019-08-25 17:32:15
152
原创 【2】springboot数据库连接池
1.数据库连接池的种类DBCP 可设置最大最小连接数、以及超时时间等常用的配置。不过稳定性一般,速度较慢,在高并发的情况下性能有所下降,并且不提供连接池监控。 C3P0 基本的设置都具备,连接池的持续运行的稳定性相当不错,在大并发量的压力下稳定性也有一定保证,此外不提供连接池监控。 Druid 速度与C3P0差不多,并且具备监控功能(比如每条sql执行时间、并发数、读取行数等),阿里的开源...
2019-08-25 15:57:16
351
原创 【1】springBoot的一些基本使用
1.配置类在ssm中配置类一般都是写在xml中,在spring3.0之后开始转向java配置类。相比于xml配置,java配置结构清晰。例如:在传统ssm项目中的数据库连接配置<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"...
2019-08-25 15:21:35
138
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅