Операции с дисками
Одна вещь, которая может замедлиться в Docker, - это когда процесс, выполняющийся в контейнере, выполняет много вызовов ввода-вывода в файловой системе контейнера.Файловая система контейнера - это объединенная файловая система , которая не оптимизирована по скорости.
Здесь тома докера полезны.В дополнение к предоставлению местоположения в файловой системе, которое сохраняется после удаления контейнера, производительность диска на томе докера является хорошей.
Образ докера Jenkins определяет местоположение JENKINS_HOME
как том докера,так что, пока ваши задания Jenkins выполняют свои операции с дисками в этом месте, у вас все будет в порядке.
Если вы решите, что доступ к диску на этом томе все еще слишком медленный, вы можете настроить место монтирования этого тома наваш хост докера, чтобы он мог быть подключен к быстрому накопителю, такому как SSD.
Другая хитрость заключается в том, чтобы сделать том докера подключенным к RAM с помощью tmpfs .Обратите внимание, что такой том не обеспечивает постоянство и что данные в этом месте будут потеряны при остановке или удалении контейнера.
Исчерпание памяти JVM / сборщик мусора
Как и ДженкинсJava-приложение, возникает другая потенциальная проблема: исчерпание памяти.В случае, если JVM, на которой выполняется процесс Jenkins, слишком ограничен в памяти, сборщик мусора Java будет работать слишком часто.Вы можете убедиться, что когда вы поймете, что ваше Java-приложение использует слишком много ЦП (сборщик мусора использует ЦП).В этом случае выделите больше памяти JVM:
docker run-p 8080:8080 -p 50000:50000 --env JAVA_OPTS="-Xmx2048m -Djava.awt.headless=true" jenkins/jenkins:lts
Сеть
Контейнеры Docker имеют виртуальный сетевой стек и пользовательские настройки сети.Вы также хотите убедиться, что все операции, связанные с сетью, выполняются быстро.
DNS-сервер может быть проблемой, проверьте его, выполнив ping <some domain name>
из контейнера Jenkins.