Мы решили обновить нашу инфраструктуру для использования Jenkins с плагином Kubernetes.Мы подготовили гибридный кластер из 4 узлов следующим образом:
- 2 локальных узла: A и B
- 2 узла в AWS: C и D
В центре обработки данных задержки очень низкие (<1 мс): AB или CD. </p>
В Интернете задержки очень высоки (75 мс): AC, AD, BC, BD.
Мы заметили, что при наличии высокой задержки между мастером Jenkins и агентом Jenkins задание, похоже, ожидает 45 секунд, с момента завершения задания до момента, когда задание показывает «успех».Эта задержка происходит только для первой работы.Когда задержка низкая, эта задержка составляет менее 2 секунд.Время полностью повторяется, и доступной полосы пропускания достаточно (> 50 Мбит / с).
Что кажется удивительным, так это то, что дополнительное время происходит только после того, как работа завершена, независимо от того, сколько времени она занимает.Кроме того, при захвате пакета во время первого выполнения задания отображается 25 МБ данных от мастера к агенту.
Мы смогли воспроизвести это поведение, запустив как мастер, так и агент на месте, и введя задержкучерез тк.
Кто-нибудь сталкивался с подобной проблемой, и какое решение было применено?
Похоже, что Jenkins отправляет некоторые данные в конце и что среда RPC выполняет последовательные вызовы, которыелатентность переплете.Но что это за данные, и есть ли способ их избежать?Мы удалили все плагины не-Kubernetes, чтобы проверить теорию, что это может быть код плагина после сборки, но это не имело никакого эффекта.