MS AD와 통신하는 springboot API의 p99 스파이크

MS AD와 통신하는 springboot API의 p99 스파이크

이 질문이 unix.stackechange/stackoverflow/devops.stackexchange에 속하는지 확실하지 않습니다.

유닉스/리눅스 관련일지도 모른다고 생각해서 여기에서 열었습니다.

Active Directory 쿼리를 REST 호출로 래핑하는 WSO2 Apimanager 뒤에 있는 우분투의 docker 컨테이너에서 실행되는 사용자 정의 java/springboot API가 있습니다.

요청의 약 1%가 실제로 매우 느린 것을 알 수 있습니다(~130초 또는 ~260초는 느린 요청입니다). 우리가 볼 수 있는 한 가지는 요청이 느린 경우 매번 약 130초 또는 약 260초가 소요되고 이 경우 로그 문은 다음과 같다는 것입니다.

2021-05-11 14:56:55.114 5b86b59d-d4bf-447b-96fc-9256af8b6113;activemq-loginmodule;  INFO 8 --- [nio-8080-exec-2] at.<redacted>.commons.service.LoggingFilter  : method=GET, uri="/aduser/<ad-user>/roles?filters=api-*%2Cmq-*", response_status=200, remote_address=10.0.0.11, response_time_ms=130141, request_body="[empty]", header_x_forwarded_host="wso2-apimanager.domain.com", header_x_forwarded_proto="https", header_x_forwarded_port="443", header_x_forwarded_for="10.10.0.20", header_x_<redacted>_requestid="5b86b59d-d4bf-447b-96fc-9256af8b6113;activemq-loginmodule;", header_accept="application/json", header_host="ad-api.domain.com:8080", header_connection="Keep-Alive", header_user_agent="Synapse-PT-HttpComponents-NIO", cookies=[empty], response_body="[empty]"

스프링 부트 API와 통신하는 도메인 컨트롤러에서 LDAP 쿼리에 대해 느린 쿼리 로깅을 활성화했으며 Active Directory가 쿼리에 빠르게 응답하는 것을 확인했습니다(가장 느린 쿼리는 약 2-3초입니다).

그런 다음 API를 사용하여 우분투 호스트에서 tcpdump를 사용하여 더 깊이 파고들어 다음을 발견했습니다.

AD 도메인 컨트롤러: 10.xx.xx.79

springboot API를 호스팅하는 Linux 서버: 10.xx.xx.97 느린 API 호출

빠른 API 호출

어떻게든 스프링 부트 API 또는 springboot API 자체를 호스팅하는 Linux 시스템처럼 보입니다. 드문 경우지만 바인딩 해제 요청을 광고 LDAP에 보내지 않으므로 서버가 바인딩 해제되는 데 2~4분이 걸릴 때까지 API 호출이 중단됩니다.

정말 이상한 점은 이런 일이 7일 동안 발생했고 springboot API가 3개월 이후로 변경되지 않았기 때문에 이런 일이 발생하기 시작했을 때 API 측면에서는 아무 것도 변경하지 않았다는 것입니다.

왜 이런 일이 발생합니까? 왜 이런 일이 일어나는지 어떻게 알 수 있나요? 어떻게 하면 더 깊이 파고들 수 있을까요?

관련 정보