История:
Мы перенесли установку Codeigniter 3 с Bluehost на T3.2xlarge.
Этот единственный экземпляр размещает apache2 и сервер mysql в качестве локальной базы данных.
На Bluehost инстанс работал нормально, была выполнена миграция, так как у самого Bluehost были сбои, и нам нужен был более надежный хостинг.
Ошибка
После миграции Страница случайным образом полностью отключается.
Попытка перезапустить apache2 с помощью:
перезагрузка службы sudo apache2
Не работает, требуется полная перезагрузка экземпляра EC2, чтобы служба снова заработала.
После перезагрузки EC2 запускаются apache2 и mysql, и страница работает без запуска служб после перезагрузки экземпляра.
Попытка отладки 1
Поскольку страница отключилась, когда были запущены интенсивные базы данных cron, я предположил, что сервер mysql был узким местом.
Миграция всей базы данных в бессерверную RDS должна устранить все узкие места, связанные с базой данных.
Те же интенсивные cron базы данных заканчиваются сейчас.
Чтобы еще больше исключить cron, являющийся причиной сбоя системы, я клонировал EC2 и использовал клон для запуска cron, в то время как оригинал размещает веб-страницу, на которую указывает домен.
Однако случайные отключения продолжаются.
Попытка отладки 2
Предполагая, что это проблема с памятью, после проверки phpinfi.php я увидел, что PHP имеет 128 МБ ОЗУ (на машине с 32 ГБ), поэтому просто посмотреть, поможет ли больше ОЗУ:
- memory_limit установлен на 8192Mb
- перезагрузить ЕС2
- перезапустить php7.4-fpm
- перезапустить апач2
phpinfo подтвердил, что memory_limit установлен на 8192M.
Случайные сбои продолжаются.
Попытка отладки 3
Проверка команды:
судо apache2ctl -t
возвращает:
Синтаксис ОК
Проверка команды:
нано /var/log/apache2/error.log
содержит:
[mpm_worker:notice] AH00295: обнаружен SIGTERM, завершение работы
Поэтому я предполагаю, что Apache по какой-то причине отключается, но не может перезапуститься.
Проверка команды:
перезагрузка службы sudo apache2
не выдает ошибки
Проверка команды:
перезапуск sudo apache2ctl
не выдает ошибки
Проверка команды:
/usr/sbin/apache2 -V
показывает:
[core:warn] [pid 24560] AH00111: переменная конфигурации ${APACHE_RUN_DIR}
не определен
apache2: синтаксическая ошибка в строке 81 файла /etc/apache2/apache2.conf:
DefaultRuntimeDir должен быть
действительный каталог, абсолютный или относительный для ServerRoot
Версия сервера: Apache/2.4.41 (Ubuntu)
Сервер построен: 2022-03-16T16:52:53
Магический номер модуля сервера: 20120211:88
Сервер загружен: APR 1.6.5, APR-UTIL 1.6.1
Скомпилировано с использованием: APR 1.6.5, APR-UTIL 1.6.1
Архитектура: 64-битная
МПМ сервера:
Сервер скомпилирован с....
-D APR_HAS_SENDFILE
-D АПР_HAS_MMAP
-D APR_HAVE_IPV6 (включены сопоставленные IPv4-адреса)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D АПРЕЛЬ_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D ДИНАМИЧЕСКИЙ_МОДУЛЬ_LIMIT=256
-D HTTPD_ROOT="/etc/apache2"
-D SUEXEC_BIN="/usr/lib/apache2/suexec"
-D DEFAULT_PIDLOG="/var/run/apache2.pid"
-D DEFAULT_SCOREBOARD="журналы/apache_runtime_status"
-D DEFAULT_ERRORLOG="журналы/журнал_ошибок"
-D AP_TYPES_CONFIG_FILE="mime.types"
-D SERVER_CONFIG_FILE="apache2.conf"
Где я вижу 2 вещи:
- возникла проблема с ${APACHE_RUN_DIR}
- Сервер MPM не возвращает MPM
Проверка команды:
апач2 -л
возвращает:
Скомпилировано в модулях:
core.c
mod_so.c
mod_watchdog.c
http_core.c
mod_log_config.c
mod_logio.c
mod_version.c
mod_unixd.c
Что не показывает модуль MPM.
Проверка команды:
апач2 -л
apache2ctl -l
возвращает:
Скомпилировано в модулях:
core.c
mod_so.c
mod_watchdog.c
http_core.c
mod_log_config.c
mod_logio.c
mod_version.c
mod_unixd.c
Проверка команды:
a2query-M
возвращает:
рабочий
Вопрос:
И вот тут я сейчас застрял.
Есть ли что-нибудь еще, что я могу проверить или прочитать из попытки отладки 3, чтобы понять, почему apache останавливается/не перезапускается и требует полной перезагрузки сервера?