Supplement · Core

6 failure drills OS và Tomcat

Chạy trong môi trường lab; luôn đặt timeout/cleanup và không dùng production credentials/data.

Lab 01 · Process/thread CPU map

Tạo Java workload gồm hot loop, lock contention và blocked I/O. Dùng ps/top -H, /proc, JFR và thread dumps để map native TID ↔ Java thread; phân biệt runnable, throttled và waiting. Gate: timeline nhiều snapshots + root-cause evidence.

Lab 02 · Memory, stack và cgroup

Thay thread count/stack size/direct buffer/heap trong container memory limit; đo RSS/PSS, heap-after-GC, NMT, cgroup events. Tái hiện Java OOME và OOMKilled riêng; gate: memory budget giải thích được.

Lab 03 · Signals, PID 1 và FD/socket leak

So shell-form/exec-form entrypoint, SIGTERM/KILL, child reaping. Tạo leak file/socket và outbound connection churn; đo FD limits/ephemeral states rồi sửa try-with-resources/pooling/keepalive. Gate: drain và resource count trở baseline.

Lab 04 · Tomcat connector saturation

Load test embedded Tomcat với controlled threads/connections/accept queue và DB pool. Đo p99, active/queued/rejected/pool acquire; thay từng limit để chứng minh bottleneck dịch chuyển. Gate: capacity limit + safe config.

Lab 05 · Proxy, TLS và forwarded headers

Đặt Nginx trước Tomcat; test TLS termination/re-encrypt tùy lab, HTTP→HTTPS redirect, secure cookie và client IP. Gửi spoofed forwarded headers trực tiếp/qua proxy; cấu hình strip/trusted proxies/RemoteIpValve hoặc Boot strategy. Gate: không spoof và URL/scheme đúng.

Lab 06 · Redeploy leak và graceful shutdown

Trong external Tomcat lab, deploy WAR tạo non-daemon thread/ThreadLocal/driver leak rồi redeploy; inspect classloader retention/warnings và sửa cleanup. Sau đó SIGTERM dưới long request/async work, verify traffic removal/drain/deadline. Gate: old loader collectible và no dropped committed work.

Rubric

MứcTiêu chí
1Tái hiện symptom và đọc metric cơ bản.
2Map OS↔JVM↔Tomcat queues/resources bằng evidence.
3 · SeniorMitigation bounded, shutdown/security đúng và verify secondary effects.