Docker
Docker 이미지 생성 서비스가 느려질 때 원인 좁히기
OG 이미지나 썸네일 생성 서비스가 느려지면, 컨테이너 리소스, 이미지 캐시, 네트워크 요청을 확인해야 한다.
OG 이미지 같은 동적 이미지를 생성하는 Docker 서비스가 느려지면, 사용자는 SNS 공유할 때마다 오래 기다려야 한다.
컨테이너의 리소스 사용량을 본다
docker stats service-name
메모리나 CPU가 한계까지 올라가 있으면, 컨테이너 리소스 제한을 높이거나 불필요한 프로세스를 종료해야 한다.
컨테이너 로그에서 에러를 찾는다
docker logs --tail=100 service-name
이미지 처리 라이브러리 에러, 폰트 로드 실패, 외부 API 타임아웃 등이 보일 수 있다. 특히 같은 에러가 반복되면 해당 부분을 최적화해야 한다.
이미지 처리 파이프라인을 추적한다
docker exec service-name ls -la /tmp/
생성 중인 이미지 파일이 임시 디렉토리에 쌓여 있다면, 정리 로직이 제대로 작동하지 않는 것이다. 디스크 공간이 가득 차면 성능이 급격히 떨어진다.
캐싱 전략을 확인한다
같은 이미지를 반복해서 생성하는 것은 비효율적이다. 이미 생성한 이미지는 캐시해서 재사용하는 게 훨씬 빠르다.
docker inspect service-name | grep -i env
캐시 경로가 제대로 설정되었는지, 캐시 만료 시간이 너무 짧지는 않은지 확인한다.
포트와 네트워크를 점검한다
외부 API를 호출해서 데이터를 받아 이미지를 만드는 경우, 네트워크 지연이 성능을 크게 좌우한다:
docker logs service-name | grep -i 'api\|request\|timeout'
API 응답이 지연되는지, 재시도 로직이 있는지 확인한다.
결과를 측정해서 남긴다
최적화 전후의 생성 시간을 기록해 두면, 변경이 실제로 효과가 있었는지 알 수 있다.