APISIX에서의 지연 시간 이해와 관리: 포괄적인 기술 가이드
December 29, 2023
사용자들로부터 자주 받는 질문 중 하나는 APISIX에서의 정확한 지연 시간 측정에 관한 것입니다. APISIX를 사용할 때, 비정상적으로 높은 지연 시간을 어떻게 해결해야 할까요?
실제로, 지연 시간 측정에 대한 논의는 API 요청의 성능과 응답 시간을 중심으로 이루어집니다. 이러한 측면을 이해하는 것은 효율적인 API 서비스를 보장하는 데 중요하며, 특히 B2B 소프트웨어에서 클라이언트가 높은 API 가용성과 성능을 요구하는 경우 더욱 그렇습니다. 금융 시장 내 주식 거래 소프트웨어와 같은 민감한 시나리오에서는 지연 시간이 거래자에게 큰 영향을 미칠 수 있습니다.
그렇다면, 지연 시간이란 무엇이며 APISIX에서의 지연 시간은 무엇일까요? APISIX에서의 지연 시간은 클라이언트가 요청을 보내고 응답을 받는 전체 과정에 걸리는 시간을 의미합니다. 이 지연은 클라이언트 네트워크 지연, APISIX 내부 처리 시간, 그리고 업스트림 서비스와의 상호 작용 지연과 같은 요소로 구성됩니다.
이러한 지연 시간을 더 잘 이해하고 측정하기 위해, 우리는 이를 몇 가지 주요 구성 요소로 분류할 수 있습니다.
-
클라이언트에서 APISIX까지의 네트워크 지연: 이는 클라이언트가 APISIX로 요청을 보내는 데 걸리는 시간을 측정하며, 클라이언트와 APISIX 사이의 거리, 네트워크 혼잡 등과 같은 요소에 영향을 받습니다. 이 시간을 측정하기 위해 특수 도구를 사용할 수 있습니다.
-
APISIX 내부 처리 시간: 이는 APISIX가 내부적으로 다양한 작업을 실행하는 데 걸리는 시간을 포함하며, 라우팅 결정, 인증, 권한 부여, 그리고 플러그인을 통해 구현된 사용자 정의 로직 등이 포함됩니다.
-
업스트림 서비스 상호 작용 지연: APISIX가 업스트림 서비스(일반적으로 백엔드 애플리케이션이나 마이크로서비스)와 통신하는 경우, 이 상호 작용에 소요되는 시간이 전체 지연 시간에 포함됩니다. 이는 APISIX에서 업스트림 서비스로 요청이 전달되는 시간과 응답이 반환되는 시간을 포함합니다.
APISIX 지연 시간은 다음 공식을 사용하여 계산할 수 있습니다: APISIX 지연 시간 = 총 지연 시간 - 업스트림 상호 작용 지연 시간. 총 지연 시간은 요청을 보내고 응답을 받는 데 걸리는 시간을 나타내며, 업스트림 상호 작용 지연 시간은 APISIX와 업스트림 서비스 간의 통신 시간에 초점을 맞춥니다.
참고: Linux에서
upstream_response_time
은clock_gettime
(CLOCK_MONOTONIC_COARSE
)을 통해 계산되며, 일반적인CONFIG_HZ=250
값으로 최대 4밀리초까지 걸릴 수 있습니다. 동시에,request_time
을 계산하는 시간은 단조로운 시간이 아니라gettimeofday()
의 결과로, 벽시계 시간에 따른 결과입니다. 따라서 경우에 따라upstream_response_time
이request_time
보다 약간 더 클 수 있습니다.또한, 약한 네트워크 환경이나 대용량 파일 업로드/다운로드 시나리오에서는 클라이언트와 게이트웨이 간의 지연 시간이
apisix_latency
에 추가될 수 있습니다. 구체적인 문제는 사례별로 분석해야 합니다.
APISIX 지연 시간은 세 가지 유형으로 분류할 수 있습니다:
-
다운스트림 지연 시간: APISIX와 클라이언트 간의 네트워크 전송 지연 및 요청 본문 읽기와 같은 작업을 포함합니다. 이를 모니터링하고 분석하면 통신 성능에 대한 통찰을 얻어 최적화할 수 있습니다.
-
NGINX 지연 시간: APISIX는 요청 처리 및 라우팅을 위해 NGINX를 사용하므로, NGINX의 내부 실행 시간이 전체 지연 시간에 영향을 미칩니다. 이를 모니터링하기 위해 특수 도구를 사용할 수 있습니다.
-
Lua 플러그인 코드 실행 지연 시간: APISIX에는 수많은 Lua 플러그인이 있으며, 각 플러그인의 실행 시간은 중요한 요소입니다. 이를 분석하기 위해 특수 도구가 필요합니다.
지연 시간 문제를 해결하기 위해, 식별된 지연 시간 구성 요소를 기반으로 체계적인 분석을 수행할 수 있습니다. 해결책에는 네트워크 아키텍처 최적화, 클라이언트 네트워크 지연을 위한 CDN 활용, APISIX 내 문제가 있는 Lua 코드를 찾아내고, 업스트림 서비스 상호 작용에서 잠재적인 문제를 검토하는 것이 포함됩니다. 지속적인 모니터링과 분석을 통해 잠재적인 문제를 적시에 감지하고 해결할 수 있으며, 이를 통해 API 서비스를 더 잘 최적화하여 최종 클라이언트의 요구를 충족시킬 수 있습니다.
APISIX 지연 시간을 이해하고 관리하는 것은 최적의 API 성능을 보장하는 데 필수적입니다. 각 구성 요소를 철저히 분석하고, 지속적으로 모니터링하며, 전략적으로 최적화함으로써 API 서비스를 개선하여 가용성과 응답성을 높이고, 최종 사용자의 요구를 효과적으로 충족시킬 수 있습니다.
APISIX와 다른 게이트웨이 제품 간의 QPS 및 지연 시간 비교 데이터는 "Why Is Apache APISIX the Best API Gateway?"를 참조하십시오.