linux
글 6편, 메모 0개
Redis 메모리 90% 알림 — BGSAVE fork, 스왑, TTL 없는 키
Redis 서버에서 OS 메모리 90% 알림이 왔습니다. 인스턴스 둘의 상한 합이 물리 메모리와 거의 같았고, BGSAVE fork 가 그 위를 넘기면서 스왑으로 밀렸습니다. 상한을 채우고 있던 건 세션이 아니라 TTL 없는 토큰 키였습니다.
rootless Docker — br_netfilter 로드 실패
root 없이 Docker를 돌리려는데 데몬이 br_netfilter 커널 모듈을 못 올려서 죽었습니다. rootless 데몬도 자기 네임스페이스 안에는 bridge를 만드는데, 그 구성에 딸린 컨테이너 간 통신 제한이 커널 모듈을 요구합니다.
eBPF 프로세스 exec 감시 — 실제로 걸린 것들
특정 프로그램이 실행되는 순간을 잡는 도구를 만들었습니다. eBPF가 뭔지부터 정리하고, 프로세스 이름이 15자에서 잘리는 것과 타임스탬프가 1970년으로 찍히는 것까지.
cgroup v1 경로 하드코딩 — v2에서 조용히 죽은 격리 로직
OS를 Ubuntu 22.04로 올린 뒤 컨테이너 생성이 몰릴 때 간헐적으로 실패했습니다. 코드는 그대로였는데, cgroup v1 경로를 하드코딩한 격리 로직이 cgroup v2 환경에서 매번 조용히 no-op이 되고 있었습니다.
cgroup v1 vs v2 — PSI와 메모리 압력
쿠버네티스 requests/limits는 cgroup으로 구현됩니다. v1은 리소스별로 트리가 쪼개져 있고, v2는 하나로 통합되면서 PSI가 생겨 OOM으로 죽기 전에 메모리 압력을 감지할 수 있습니다.
SFTP vs NFS — 실시간 I/O엔 왜 NFS인가
SFTP는 SSH 위의 파일 전송 서브시스템이라 요청-응답마다 왕복이 생기고, NFS는 커널 파일시스템이라 앱이 로컬 디스크처럼 씁니다. 배치 전송엔 SFTP, 실시간 I/O엔 NFS인 이유를 정리합니다.