eBPF 求证坊间传闻:Java GC 日志可导致整个 JVM 服务卡顿?
· ☕ 9 åˆ†é’Ÿ
实现世界的 Java 应用,都会记录 GC 日志。但不是所有人都知道小小的日志可能导致整个 JVM 服务卡顿。本文尝试用 eBPF 等分析方法,去证明具体环境下,问题的存在与否。

eBPF 求证坊间传闻:mmap + Java Safepoint 可导致整个 JVM 服务卡顿?
· ☕ 7 åˆ†é’Ÿ
Java 离不开 Safepoint。但不是所有人都知道方便的 mmap 映射文件,可能会导致整个 JVM 服务由于 safepoint 到达延时而卡顿。本文尝试用 eBPF 等分析方法,去证明具体环境下,问题的存在与否。

分析 Java 应用在 Istio 下的 warm up
· ☕ 7 åˆ†é’Ÿ
Java 应用的 warm up(预热),包括类加载、编译、应用自身初始化(如连接池)等。在 Istio 环境下,两个技术栈叠加,又有微妙的化学反应

k8s 容器热替换/重启主进程 - gdb execve syscall 法
· ☕ 8 åˆ†é’Ÿ
k8s 环境下,在不停止或重启 container 的情况下,重启应用进程(pid:1),甚至重新加载运行新版本的应用。本文以 gdb 作为工具,调用 execve syscall,去实现这个目标。

k8s 容器热替换/重启主进程 - gdb exec 法
· ☕ 6 åˆ†é’Ÿ
k8s 环境下,在不停止或重启 container 的情况下,重启应用进程(pid:1),甚至重新加载运行新版本的应用。本文以 gdb 作为工具,调用应用容器自带的 libc 的 close & exec 法函数,去实现这个目标。

调试与观察 istio-proxy Envoy sidecar 的启动过程
· ☕ 7 åˆ†é’Ÿ
学习 Istio 下 Envoy sidecar 的初始化过程,有助于理解 Envoy 是如何构建起整个事件驱动和线程互动体系的。其中 Listener socket 事件监初始化是重点。而获取这个知识最直接的方法是 debug Envoy 启动初始化过程,这样可以直接观察运行状态的 Envoy 代码,而不是直接读无聊的 OOP 代码去猜现实行为。但要 debug sidecar 初始化有几道砍要过。本文记录了我通关打怪的过程。

调试 Istio 网格中运行的 Envoy sidecar C++ 代码
· ☕ 5 åˆ†é’Ÿ
调试在 Istio 网格中运行的 Envoy sidecar C++ 代码。 它有助于在代码级别深入研究 sidecar。 它使我们在解决 Istio 问题或编写更好的 EnvoyFilter 或 eBPF 跟踪程序时更有信心。 本文介绍如何使用 VSCode 和 lldb 调试 Envoy istio-proxy sidecar。

K8s CSI & ceph 构架图解,还有一些闲话
· ☕ 5 åˆ†é’Ÿ
云存储的学习困难,难于 K8s CSI 框架复杂性,再加上如 ceph 分布式存储的复杂性。本文试图用互动式图例,让读者串联起两个领域的知识点。从而对整个流程有一个总体的感知;避免盲目深入一个一个零散的知识点孤岛而迷路。

基于 libbpf 的 TCP 连接延迟监视工具 tcpconnlat 分析 - eBPF基础知识 Part5
· ☕ 6 åˆ†é’Ÿ
通过分析 BCC 的基于 libbpf 的 TCP 连接延迟监视工具 tcpconnlat 实现,来了解一个经典 BPF 程序是如何加载,绑定,以及与内核互动的。