NGINX, OpenResty 및 백엔드 추적과 문제 해결
Yichun Zhang, OpenResty Inc. 창립자 겸 CEO
운영 중인 nginx 프로세스가 메모리, CPU 시간 또는 디스크 I/O 리소스를 지나치게 많이 사용하고 있나요? 온라인 환경에서 무작위로 매우 느린 요청이 발생하지만 오프라인에서는 재현할 수 없나요? 알 수 없는 NGINX 오류 로그 메시지가 나타나지만 실제 원인을 파악하지 못하고 있나요? 프로덕션 환경에서 무작위로 발생하는 nginx 프로세스 충돌과 코어 덤프로 골머리를 앓고 있나요?
NGINX Conf 2018 세션에서 Yichun은 NGINX와 OpenResty 환경에서 발생하는 다양한 실제 성능 및 기타 동작 문제를 살펴보고, 프로덕션 서비스를 중단하지 않으면서 동적 추적과 기타 고급 사후 디버깅 기술을 활용해 운영 환경에서 원인을 신속하게 정확히 찾아내는 방법을 설명합니다.
Yichun은 GDB, SystemTap, BCC/eBPF와 같은 다양한 오픈 소스 디버깅 프레임워크의 장단점을 설명하고 비교하며, 프로덕션 환경에서 Docker 컨테이너를 추적할 때 발생하는 고유한 과제도 간략히 다룹니다. 이어서 이러한 디버깅 기술을 통합하고 사용성, 확장성 및 확장 가능성을 한 차원 높인 새로운 OpenResty Trace 플랫폼을 소개합니다. 특히 CDN 네트워크의 마이크로서비스 메시나 트래픽 게이트웨이 클러스터와 같은 분산 온라인 시스템 환경에서의 활용을 중점적으로 설명합니다. 또한 OpenResty Trace에서 제공하는 범용 디버깅 언어를 사용해 사용자 지정 추적 도구를 작성하는 예제도 소개합니다.
Yichun은 실제 사례를 통해 OpenResty Trace 기반의 고급 추적 도구를 사용하여 NGINX 코어와 LuaJIT을 사용하는 OpenResty 코어를 추적하는 방법도 보여줍니다. 또한 FastCGI, uWSGI 또는 NGINX Unit을 통해 NGINX나 OpenResty 뒤에서 실행되는 PHP, Python, Perl, Ruby 등의 기존 백엔드 서비스를 추적하는 방법을 다룹니다. 마지막으로 NGINX, OpenResty 또는 이들의 백엔드 애플리케이션이 액세스하는 PostgreSQL, Memcached, Redis 등의 데이터 서비스를 추적하는 사례를 소개합니다.