この質問がunix.stackechange/stackoverflow/devops.stackexchangeに属しているかどうかはわかりません。
Unix/Linux関連かもしれないと思ってここで開きました。
Active DirectoryクエリをREST呼び出しでラップするWSO2 Apimanagerの背後にあるUbuntuのdockerコンテナで実行されるカスタムjava / springboot APIがあります。
リクエストの約1%が実際に非常に遅いことがわかります(〜130秒または〜260秒は遅いリクエストです)。私たちが見ることができる1つは、要求が遅い場合は毎回約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]"
Spring Boot APIと通信しているドメインコントローラでLDAPクエリの遅いクエリロギングを有効にし、Active Directoryがクエリにすばやく応答することを確認しました(最も遅いクエリは約2〜3秒です)。
次に、APIを使用してUbuntuホストでtcpdumpを使用してさらに深く掘り下げ、次のことを見つけました。
ADドメインコントローラ:10.xx.xx.79
springboot APIをホストするLinuxサーバー:10.xx.xx.97
どういうわけか、Spring Boot APIまたはspringboot API自体をホストするLinuxシステムのように見えます。まれに、バインド解除要求は広告LDAPに送信されないため、サーバーのバインド解除に2〜4分かかるまでAPI呼び出しは中断されます。
本当に奇妙なことは、このようなことが7日間発生し、springboot APIが3ヶ月以降に変更されていなかったため、このようなことが発生し始めたときにAPIに関しては何も変更しなかったことです。
なぜこれが起こるのですか?なぜこれが起こるのか、どうすればわかりますか?どうすればもっと深く掘り下げることができますか?