Боюсь, что в вашем случае помог параметр MaxRequestsPerChild , поскольку он позволяет перезапускать процесс после определенного количества запросов, так что утечка памяти есть, но больше не видна.
Дополнительно: MaxClients = ServerLimit * ThreadsPerChild
В вашем случае, если вам нужно только 7 одновременных пользователей (MaxClients = 7), вполне достаточно двух процессов (на всякий случай, если один не сможет минимизировать время простоя), поэтому конфигурация может быть такой:
<IfModule prefork.c>
StartServers 2
MinSpareServers 2
MaxSpareServers 20
ServerLimit 2
MaxClients 8
ThreadsPerChild 4
MaxRequestsPerChild 4000
</IfModule>
Я использую MaxClients 8 , просто чтобы сделать более равномерное распределение запросов между двумя процессами.