У меня есть проект, построенный в Lumen (php Framework), размещенный на док-контейнере, построенном из alpine в качестве базового образа с использованием сервера apache2 с php 7.x
Вот часть моего Dockerfile:
FROM alpine:3.8
MAINTAINER Latheesan Kanesamoorthy
RUN apk add \
--no-cache \
--update \
apache2 \
composer \
nano \
bash \
curl \
php7 \
php7-apache2 \
php7-curl \
php7-dom \
php7-mbstring \
php7-pdo_mysql \
php7-session \
php7-sockets \
php7-tokenizer \
php7-xml \
php7-xmlwriter \
&& mkdir -p /run/apache2 \
&& ln -sf /dev/stdout /var/log/apache2/access.log \
&& ln -sf /dev/stderr /var/log/apache2/error.log
Целью этого проекта является получение http-запросов (т.е. событий webhook из внешней системы) и их обработка.
Когда проект развернут, он работает в течение нескольких дней, прежде чем эта ошибка начнет появляться в наших журналах данных:
[core: warn] [pid 9] (99) Адрес недоступен: AH00056: подключение к прослушивателю включено [::]: 80
Когда возникает эта ошибка, сайт / проект не является общедоступным, но Apache все еще работает. Если я перезапущу контейнер, все вернется в нормальное состояние.
Проведя дальнейшее расследование, я заметил, что это происходит каждый раз, когда мой API срабатывает одновременно. То есть 3 дня назад проект получил одновременно 145 запросов, и с тех пор приложение больше не доступно.
Apache отказывается обслуживать любой новый запрос, но контейнер запущен и работает, и для него достаточно памяти / дискового пространства.
Есть идеи, что вызывает это? мне нужно оптимизировать mpm.conf для большего количества рабочих / дочерних процессов и т. д.? В настоящее время я использую стандартный конфиг.