Troubleshooting
文章平均质量分 93
night field
https://nightfield.com.cn
展开
-
Apache HttpClient 模拟 SSO 登陆丢失 cookie 问题解决
背景需要用 Java 访问一个被 SSO 保护的特殊接口获取信息。方案设计假如我们用浏览器来实现这个功能,步骤简单如下:输入目标 API 地址(浏览器自动重定向到 SSO 登陆页面)输入用户名密码登陆(浏览器重定向回到 API 地址,并附带认证信息)获取目标 API 的资源信息其中需要用户操作的是步骤 1 和步骤 3。但要求是用 Java 来实现上述功能,关键点在于如何获取认证信息。有了认证信息,我们便能直接 call 目标 API。所以我们需要模拟浏览器的登陆行为,此时的初步想法原创 2022-04-16 22:06:39 · 1862 阅读 · 0 评论 -
Big Key 导致 Redis 频繁重连的问题排查
背景监控是系统的重要模块,我们给产线的 Redis 机器配置了全方位的监控,包括机器性能指标测试以及 Redis 服务测试等等。今天收到了 PagerDuty 告警,报告说 Redis 服务间歇性异常。问题描述Redis 是一个集群,三主三从,每个节点各配置了一个监控,监控的测试逻辑大致是,用 INFO,CLUSTER SLOTS,CLUSTER NODES 等命令查看节点以及集群的基本信息是否正常,然后给主节点(master) set 一个 dummy key,看是否在规定时间内能同步到从节点(sl原创 2021-11-30 16:25:59 · 1479 阅读 · 0 评论 -
Connection Timeout 问题排查
背景我们组开发维护了一个 Agent 工程,帮客户采集一些客户有用的网络数据。客户需要下载一个 MSI,然后安装并注册。问题描述某个客户下载安装 Agent 之后,提示注册失败。其实 Agent 注册就是一个用户登陆验证服务,然后创建一个 Machine ID 的过程。所谓 Machine ID,就跟用户帐号一样,是 Agent 的一个唯一标识。注册的流程大致如下:注册的主要目的是为 Agent 创建一个 Machine ID,为此需要获取一个 token,而这个 token 可以通过用户登陆来获原创 2021-03-01 16:54:36 · 12740 阅读 · 7 评论 -
Netty的ChannelPool导致内存泄漏的排查经历
背景接到了线上机器的报警,登上服务器,发现是Java进程挂了,看日志报了OOM:java.lang.OutOfMemoryError: Java heap space问题描述内存溢出,那当然是看dump文件了。这里推荐大家在产线机器上都加上JVM参数-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath={path}/{to}/{dump},这样,JVM在OOM的时候,会自动做一个内存dump,相当于保存现场。拿到dump文件,放到MAT里面分析,以下是原创 2020-08-31 10:07:56 · 1407 阅读 · 0 评论 -
Quartz Task在Tomcat中重复运行问题解决
问题描述Spring Quartz是很常用的定时任务框架。把一个Quartz的工程部署到Tomcat中启动,意外地发现,每个Task都在同一时间跑了两次,而本地在开发的过程中却没有问题。问题排查为了防止多线程问题,有部分Task上是加了锁的,类似如下方式:@Componentpublic class ExampleTask{ private ReentrantLock lock = new ReentrantLock(); protected void executeInternal()原创 2020-06-09 16:12:15 · 344 阅读 · 0 评论 -
SpringBoot服务无法读取系统变量,我重新认识了profile和bashrc
背景CentOS服务器上,我们用Systemd部署了一个SpringBoot服务。关于如何部署,可以参考这篇文章。这个SpringBoot服务会用ProcessBuilder去调用机器上一个C++的可执行文件。问题描述SpringBoot程序跑得很正常,但是我们发现C++程序却没有log输出,也就是说它从没被执行过。查看了ProcessBuilder的返回值,是127。127的意思是系统找...原创 2020-03-07 19:44:55 · 2003 阅读 · 0 评论 -
Java类卸载之后无法删除源文件,PF4J
背景我们有一个Plugin的管理系统,可以实现Jar包的热装载,内部是基于一个Plugin管理类库(PF4J)[https://github.com/pf4j/pf4j],类似于OSGI,现在是GitHub上一个千星项目。以下是该类库的官网介绍A plugin is a way for a third party to extend the functionality of an appl...原创 2019-12-12 10:34:43 · 621 阅读 · 6 评论 -
表重复更新引发的问题
1. 问题描述我们的工程部署在两个DC上,双活。两边的服务器以及逻辑都是一样的,也分别都有自己的业务。数据库用的Oracle,之间有同步,用的是Quest的DB同步产品shareplex。shareplex的原理是,read进程读取分析数据库的redo log,把需要更新的数据放到queue里面,export进程读取queue的数据,发送到对端的queue里面,由对端的import进程写入对端数...原创 2019-11-16 11:54:12 · 226 阅读 · 0 评论 -
Redis OOM问题排查
1. 问题描述看到Redis报了OOM的错误,而且服务响应速度非常慢,页面上丢了很多数据,赶紧起来查看问题。2. 问题排查我们的系统架构是双边双活的,两个DC(Primary和GSB)都会有数据写进来,通过API把数据存到数据库(双边数据库有复制),同时写到Redis队列一份(这里把Redis当成MQ来用),然后有个Job从redis队列里面把数据取出来,写到两边,流式地处理数据。对于...原创 2019-11-16 11:50:02 · 4018 阅读 · 5 评论