Conozco el método para obtener la memoria promedio utilizada por cada proceso de Apache2 usando ps. Lo he observado y está llegando a tener alrededor de 18 MB (aunque parecía haber aumentado en los últimos 2 días de 18 MB promedio a 25 MB).
Nuestro servidor ofrece una API que acepta algunos datos y los almacena en una base de datos mysql. La API está escrita en PHP. He usado las funciones PHP mem_get_usage y mem_get_peak_usage para comprender el uso de la memoria, pero no se acercan a los 18 MB... (en su mayoría se muestran por debajo de 1 MB)
Así que no entiendo qué consume esta enorme memoria por proceso de Apache. Esto se ha convertido en un cuello de botella ya que nuestra RAM total es limitada y con este consumo nos vemos obligados a limitar maxrequestworkers, lo que genera retrasos en el servicio a los clientes cuando hay mucho tráfico.
Salida típica de ps:
www-data 30024 0.0 0.3 494384 26124 ? S 04:27 0:03 /usr/sbin/apache2 -k start
www-data 30077 0.0 0.3 494368 26136 ? S 04:28 0:04 /usr/sbin/apache2 -k start
www-data 30078 0.4 0.3 494360 25960 ? S 04:28 0:21 /usr/sbin/apache2 -k start
www-data 30080 0.1 0.3 494376 26140 ? S 04:28 0:05 /usr/sbin/apache2 -k start
www-data 30115 0.2 0.3 494448 26180 ? S 04:28 0:11 /usr/sbin/apache2 -k start
www-data 30124 0.1 0.3 494376 26212 ? S 04:28 0:07 /usr/sbin/apache2 -k start
www-data 30132 0.0 0.3 494376 26108 ? S 04:28 0:03 /usr/sbin/apache2 -k start
www-data 30135 0.0 0.3 494376 26164 ? S 04:28 0:04 /usr/sbin/apache2 -k start
www-data 30219 0.0 0.3 494352 26108 ? S 04:29 0:03 /usr/sbin/apache2 -k start
¿Alguna sugerencia sobre cómo monitorear el uso de memoria por proceso apache2 y cómo reducirlo/optimizarlo?