logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

一次现网服务挂掉定位-HikariPool-1 - Connection is not available, request timed out after 30000ms.

运维接到用户反馈无法登录,拉我上线一起定位。首先我们先拉上用户进行复现,发现登录接口超时导致登录失败。遂让运维先查查有无错误日志,我这边通过啄木鸟(调用链查询系统)确认是哪一段耗时。还未等我打开啄木鸟,运维就发现有大量数据库连接报错。虽然该报错并不是登录服务(下图服务C的)的,但我知道登录接口肯定受这个报错影响了,因此就不再查看啄木鸟直接定位该报错了。且该接口QPS有点高。

文章图片
#spring#java#后端 +2
一次现网问题定位-接口偶发报500,PrematureCloseException: Connection prematurely closed DURING response

本系统做改造,使用spring cloud gateway替换nginx作为反向代理。如上图所示,系统整体网络结构未有变化,仅仅只是使用api-gateway替换掉nginx作为反向代理。替换的原因这里就不做介绍了。系统上线后,监控到接口偶发报500,api-gateway有报错日志(仅api-gateway报错,微服务无报错)。

#tomcat#java#http
spring cloud config升级闭坑-InvalidConfigDataPropertyException: Property ‘spring.profiles.active‘ import

spring cloud config server从远古版本升级到3.1.2(对应的spring cloud版本为2021.0.2)后,客户端读取配置失败,服务端报错google报错后发现,对于激活profile的配置包括(spring.profiles.active、spring.profiles.include等),从spring boot2.4开始,不在支持在xx-{profile}.pr

文章图片
#spring#java#后端
spring日志配置文件路径规则

背景项目之前是通过命令行参数-Dlogging.config指定日志配置文件的路径的,后面应用docker化时,需要将这个配置文件打到应用包中,因此翻了下spring boot源码,看都支持哪些路径。spring boot初始化入口如之前文章的分析,spring boot是通过LoggingApplicationListener监听到ApplicationEnvironmentPreparedEv

#spring#java#spring boot
使用HttpURLConnection调用SSE采坑记录

本系统为客服系统,对接了后端智能辅助系统;当消费者发文字时(问题),本系统会将文字发给辅助系统,辅助系统会返回相关回答,供客服参考。3、4两步均采用的SSE,本系统调用智能辅助时纯透传没有额外逻辑。本来我们系统基于Spring的RestTemplate写了一套类似feign的框架,简化调用后端。

#状态模式
一次现网服务挂掉定位-HikariPool-1 - Connection is not available, request timed out after 30000ms.

运维接到用户反馈无法登录,拉我上线一起定位。首先我们先拉上用户进行复现,发现登录接口超时导致登录失败。遂让运维先查查有无错误日志,我这边通过啄木鸟(调用链查询系统)确认是哪一段耗时。还未等我打开啄木鸟,运维就发现有大量数据库连接报错。虽然该报错并不是登录服务(下图服务C的)的,但我知道登录接口肯定受这个报错影响了,因此就不再查看啄木鸟直接定位该报错了。且该接口QPS有点高。

文章图片
#spring#java#后端 +2
spring-cloud-consul-discovery避坑

背景背景如上一篇文章《request.getRequestDispatcher().forward()的妙用以及DispatcherType 对Filter配置的影响》,项目要将服务从虚拟机从迁入docker中,方便自动化部署以及弹性扩容等。闭坑一-应用看到的ip及port是docker的内部ip、端口,外部无法访问应用看到的是docker内部ip及端口,这个是宿主机虚拟出来的,对外部不可见;如果

文章图片
#spring boot#java#spring cloud
Jedis分析一-Pipeline is currently not supported for JedisClusterConnection.

项目组最近准备将Redis由哨兵模式组网切换到集群组网,切换后应用访问redis时报错,“Pipeline is currently not supported for JedisClusterConnection.”。初步定为Jedis在集群模式下不支持pipeline。org.springframework.data.redis.connection.jedis.JedisClusterCon

#redis#java
redis集群模式下key过期事件监听

项目组准备将自建的redis切到公司云平台的redis服务;自建的redis用的是哨兵模式,而云平台的提供的redis服务用的是集群模式。切换前先分析redis用到了那些功能,redis集群模式下是否兼容。分析代码时发现,用到了RedisMessageListenerContainer,该类用于监听redis发出的消息(redis的发布订阅功能)。我们使用到了redis键过期通知的特性,来实现超时

#redis#java
ES报错处理-mapper [xx.xx] of different type, current_type [text], merged_type [keyword]

我司有一套开源使用规范,衰退期的软件或版本需要升级到GA版本。我们ES服务端是6.8.x的,根据ES官方推荐版本,springdataelasticsearch使用的是3.2.x,配套的springboot版本为2.2.x.我们当前使用的版本已经比较老了,我们需要将springboot升级到2.6.x,并将springdataelasticsearch升级到4.3.x。..............

#elasticsearch#java
到底了