Хорошо, это на серии очень загруженных серверов Apache 2.4, использующих prefork MPM за AWS ELB. Поскольку мы стоим за ELB, глупо не включать поддержку активности, однако мы хотели бы, чтобы дочерние процессы регулярно перезаправлялись. Перед включением поддержки активности это обрабатывалось параметром MaxConnectionsPerChild. Но с поддержкой активности, по сути, существует только одно соединение, поэтому MaxConnectionsPerChild будет несколько неэффективным. FWIW, серверы слишком заняты для KeepAliveTimeout или чего-то подобного, чтобы когда-либо включиться — обычно они получают несколько сотен запросов в секунду, 24/7, практически без простоя.
Кроме того, почти все запросы являются атомарными, без последующих запросов на изображения, CSS и т. д. Настоящая причина поддержки активности заключается в том, что все соединения исходят из одного источника — балансировщика нагрузки.
Итак, вот проблема... Мы думали, что для того, чтобы время от времени перезапускать дочерние процессы, мы могли бы использовать такие настройки:
KeepAlive On
KeepAliveTimeout 20
MaxKeepAliveRequests 1500
MaxConnectionsPerChild 4
Опять же, KeepAliveTimeout практически не влияет. Таким образом, мысль заключается в том, что при этой настройке постоянное соединение будет сбрасываться каждые 1500 запросов, а затем после 4 сбросов дочерний элемент будет переработан, т. Е.; перезапускать дочерний процесс каждые 6000 запросов. Однако это заставляло дочерние процессы перезапускаться примерно раз в минуту, что не соответствовало уровню трафика. В качестве теста мы изменили настройки на:
KeepAlive On
KeepAliveTimeout 20
MaxKeepAliveRequests 6000
MaxConnectionsPerChild 4
Ожидается четырехкратное увеличение продолжительности жизни детей. Однако дочерние процессы теперь циклически повторяются каждые 50 секунд до 2 минут без какой-либо очевидной закономерности.
Я начинаю думать, что эти две настройки не взаимодействуют, как я думал. Любые идеи по этому поводу? И/или метод «наилучшей практики» для обеспечения случайного повторного использования дочерних процессов в этой ситуации?