通过调试 Nginx 源码来定位有趣 Nginx 转发合并斜杠和编码问题
背景 前段时间出现了一个请求在测试环境签名成功,在线上环境签名失败的情况,排查原因是线上url中有双斜杠会被合并成一个传给后端,在测试环境中不会出现。这个就比较神奇了,Nginx 版本完全一样。 确认问题 方式是抓包确认:在线上Nginx和...
背景 前段时间出现了一个请求在测试环境签名成功,在线上环境签名失败的情况,排查原因是线上url中有双斜杠会被合并成一个传给后端,在测试环境中不会出现。这个就比较神奇了,Nginx 版本完全一样。 确认问题 方式是抓包确认:在线上Nginx和...
前面几篇文章介绍了利用调试MySQL源码的方式来调试锁相关的信息,这里利用这个工具来解决一个比较简单的问题,线上的表字段较多,这里简单成为了一个表 CREATE TABLE `t3` ( `id` int(11) NOT NULL AUTO...
获取 IDEA 激活码、PyCharm 激活码、WebStorm 激活码和 DataGrip 激活码,提供详细破解教程与永久激活方法。支持 IDEA 永久激活与破解,免费获取注册码与激活码,解决 2024/2025 版本激活问题,轻松实现所有 JetBrains 工具的激活。
这个是非常经典的一个场景,在网上搜索插入意向锁造成的死锁,绝大部分都会指向这个例子 表结构 CREATE TABLE `t1` ( `id` int(11) NOT NULL AUTO_INCREMENT, `a` varchar(5), ...
死锁的本质是资源竞争,批量插入如果顺序不一致很容易导致死锁,我们来分析一下这个情况。为了方便演示,把批量插入改写为了多条 insert。 先来做几个小实验,简化的表结构如下 CREATE TABLE `t1` ( `id` int(11) ...
Nginx 的 location 实现了对请求的细分处理,有些 URI 返回静态内容,有些分发到后端服务器等,今天来彻底弄懂它的匹配规则 一个最简单的 location 的例子如下 server { server_name website....
前面写了几篇文章来通过调试 MySQL 源码来分析死锁问题,有读者问如何用 IDE 调试源码,这篇文章简单介绍一下如何在 Mac 下调试。 之所以使用调试的方式来分析死锁问题是因为在解决 MySQL 死锁的过程中比较纠结,就算找到了原因,也...
最近我们在测试把 APM 平台迁移到 ES APM,有同学反馈了一个有意思的现象,部署在 docker 中 jar 包项目,在新版 APM 里进程启动完就退出了,被 k8s 中无限重启。 这篇文章写了一下排查的思路,主要包含了下面这些内容。...
这篇文章是介绍一下线程与栈相关的话题,文章比较长,主要会聊聊下面这些话题: 进程与线程的本质区别,线程与内存共享 Linux pthread 与 Guard 区域 Hotspot 线程栈的 Guard 区域实现原理 你可能没有怎么听说过的 ...
历时将近一年,我的第一本书《深入理解 JVM 字节码》终于出版了。 这本书的思路来源是掘金的小册子《JVM 字节码从入门到精通》,这本小册是我的第一个技术专栏,也是抱着为自己总结的心态把自己在 JVM 字节码的知识沉淀一下。在掘金上线后,虽...
线上有一个非常繁忙的服务的 JVM 进程 CPU 经常跑到 100% 以上,下面写了一下排查的过程。通过阅读这篇文章你会了解到下面这些知识。 Java 程序 CPU 占用高的排查思路 可能造成线上服务大量异常的 log4j 假异步 Kafk...