это мой первый вопрос на stackoverflow.com.Я надеюсь, что большой текст не слишком запутывает:)
У нас есть проблема с нашей базой данных DB2 Express, работающей как экземпляр динамического контейнера, которая влияет на все контейнеры DB2, работающие одновременно.Я постараюсь описать инфраструктуру настолько подробно, насколько смогу.
Мы используем Jenkins в качестве CI-сервера, который содержит несколько конвейеров для построения, тестирования и развертывания нашей разработки.В результате конвейер запускает несколько разных контейнеров (например, Apache, JBOSS, DB2) для запуска автоматических тестов GUI приложения, которое мы реализуем.В процессе разработки работают два вида конвейеров: один для проверки собственных ветвей (мы называем это функционально-ориентированными тестами), второй для проверки окончательного слияния с разработкой (мы называем это тестом разработки).В случае функционально-управляемых тестов был реализован конвейер для запуска контейнеров, запуска проверки предварительного высокого уровня и окончательного отключения всех зависимых контейнеров.Тестовый конвейер разработки выполняет почти то же самое, что и функционально-управляемое тестирование, но начинается с выключения всех запущенных контейнеров предыдущего задания, запуска новых контейнеров и запуска их после завершения задания.
Каждый контейнер DB2, даже созданный заданием, начинается с пустой базы данных, заполненной по сценариям SQL (создайте объекты базы данных, вставьте исходные данные в таблицы,…).Во время проверок GUI приложение читает или записывает в базу данных.Мы реализовали тест соединения как проверки работоспособности.
В этом созвездии мы хотим запустить бесплатное количество функционально-ориентированных тестов.Конечно, у нас есть физический предел, но если мы попытаемся запустить более 3 функционально-ориентированных тестов, все контейнеры DB2 получат нездоровый статус.Это также влияет на контейнер DB2 теста разработки, который не зависит от тестов, управляемых функциями.
В нашем анализе мы обнаружили, что каждый нездоровый контейнер DB2 выдает два вида сообщений об ошибках:
- su: execute / bin / bash: ресурс временно недоступен
- {{}} KB-1956: SQL30082N Ошибка обработки безопасности по причине «15» («Ошибка обработки»)
Оба типа сообщений об ошибках выглядят как проблема запуска процессов из-за отсутствия ресурсов.Наши проверки с помощью команды «ulimit» не выявили никаких отклонений ни в работающем контейнере, ни на хост-сервере.Мы устанавливаем «максимальное количество пользовательских процессов» от 4096 до неограниченного.Хост имеет ту же настройку.Мы попытались настроить Dockerfile с помощью запуска команд на этапе запуска.Но без какого-либо эффекта.
Статус нездоровый возник не всегда в одной строке наших сценариев.В большинстве случаев контейнеры изменяют статус во время заполнения базы данных, но и тесты GUI приводят к этому эффекту.Мы попытались воспроизвести эффект на другой машине.Эти проверки выполняются без конвейера, но с использованием тех же сценариев SQL.Мы не могли воспроизвести эффект таким образом.
Мы используем эту среду:
ОС: CentOS7 (VM): 7.5.1804 База данных DB2 Express версии 11.1 в качестве контейнера (на основе CentO)
Есть ли у вас какие-либо идеи?о причине и как мы можем это исправить?
С уважением, Майкл