Optimice el rendimiento de Apache

Optimice el rendimiento de Apache

Estoy buscando formas de optimizar nuestro servidor web actual alojado internamente. Estoy tratando de suministrar tantoimportanteinformación abajo. Por favor, avíseme si necesita información adicional para poder ayudar.

El servidor ejecuta 1 único sitio web, que es una plataforma de pedidos de pizza en línea construida en Zend Framework (ver1). Según las estadísticas de tráfico del último mes, aproximadamente 6.000 páginas cargadas por día, concentradas principalmente a la hora de la cena. En ese período se alcanzaron picos de alrededor de 1500 cargas/hora.

Recientemente actualizamos de una línea ADSL de 2/2 mbit a fibra de 100/100 mbit y todavía tenemos problemas de rendimiento a la hora de la cena. Supusimos que el problema eran los 2 mbit. El sitio web es bastante ágil en períodos de baja carga.

Hardware

CPU: Intel(R) Xeon(R) CPU            5160  @ 3.00GHz (3000.13-MHz K8-class CPU)

Mem: 328M Active, 4427M Inact, 891M Wired, 244M Cache, 623M Buf, 33M Free
Swap: 16G Total, 468K Used, 16G Free
(6GB physical, 16GB swap)

Filesystem   Type     Size    Used   Avail Capacity  Mounted on
/dev/ad7s1a  ufs      4.8G    768M    3.7G    17%    /
devfs        devfs    1.0K    1.0K      0B   100%    /dev
/dev/ad7s1g  ufs      176G    5.2G    157G     3%    /home
/dev/ad7s1e  ufs      4.8G    2.8M    4.5G     0%    /tmp
/dev/ad7s1f  ufs       19G    3.5G     14G    19%    /usr
/dev/ad7s1d  ufs      4.8G    550M    3.9G    12%    /var

SO del servidor

FreeBSD 8.2-RELEASE

Software

apache-2.2.17
php5-5.3.8
mysql-server-5.5

Huella apache(ejemplo, tomado de # arriba)

31140 www              1  45    0   377M 41588K lockf   2   0:00  0.00% httpd
31122 www              1  44    0   375M 35416K lockf   2   0:00  0.00% httpd
31109 www              1  44    0   375M 38188K lockf   2   0:00  0.00% httpd
31113 www              1  44    0   375M 35188K lockf   2   0:00  0.00% httpd

Apache está utilizando el MPM previo al fork, APC (caché PHP alternativo). El módulo SSL está cargado, pero no se utiliza (ya que realmente no funciona, por lo que no se utiliza). Hay un archivo que contiene configuraciones para los módulos MPM, pero como veo, no está incluido en el archivo httpd.conf, la línea de inclusión está comentada. Por lo tanto, supongo que el MPM previo a la bifurcación también funciona con los valores predeterminados.

Aquí hay algunos otros valores de configuración de Apache que encontré, que están incluidos en https.conf

Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

UseCanonicalName Off
HostnameLookups Off

Cargar cuando se experimentan problemas de rendimiento

ingrese la descripción de la imagen aquí

Nota: solicitudes de API al backend

En cuanto a nuestra plataforma online, se comunica con nuestro sistema backend a través de una API (GET/POST). Para cotizaciones de precios de cestas (almacenadas en caché hasta que se agregue un nuevo artículo), productos (almacenados en caché), precios de productos (almacenados en caché). Y el servidor backend en realidad muestra una carga real cuando aparecen problemas de rendimiento en la web. Así que me acerco más a que son las solicitudes de API las que tardan una eternidad en completarse, lo que retiene a los clientes en el servidor web. Entonces mi pregunta es, ¿son las estadísticas proporcionadas anteriormente (tráfico/carga) y la configuración actual del software? En comparación con las especificaciones de la conexión a Internet y el hardware, ¿son signos de un servidor estresado? ¿Y podría aumentar el número máximo de clientes en el servidor web, según los recursos disponibles y la huella real de Apache?

Respuesta1

El rendimiento del sitio web es un tema importante. Por lo que veo, lo más probable es que el problema no sea Apache.

Sin embargo, hay algunas cosas que pueden ayudarte a mejorar tu rendimiento.

  • ¡Almacenamiento en caché! No sé cuánto almacena en caché su código PHP. Pero como no estás usando SSL y supongo que tienes muchos datos de sólo lectura, intentaBarniz

  • Permitirmod_expires

  • Perfile su sitio web/API backend conJMetro

Respuesta2

No, lo anterior no son signos de un servidor estresado.

Si bien es posible que esté experimentando una saturación de E/S de red (ya que no proporciona datos reales sobre ella), esto es extremadamente improbable con tan pocas solicitudes reales que ocurren durante las horas pico.

Debe ejecutar algunas pruebas en el backend HTTP para ver si se está ejecutando a su máxima capacidad. Si es así, entonces necesitas arreglar ESO.

Para referencia futura, debe configurar y utilizar elel estado del servidorcontrolador para monitorear Apache, como se documenta aquí:http://httpd.apache.org/docs/2.2/mod/mod_status.html

Respuesta3

El rendimiento de Apache se puede modificar con la configuración de Worker MPM y Prefork, alterar los subprocesos keepalive y max Spare podría ayudar a aumentar el rendimiento y consumir menos espacio de memoria. Puede encontrar la configuración óptima para Prefork y Worker enaquí

Respuesta4

Es posible que se esté quedando sin procesos (definidos por MaxSpareServersy StartServers). El valor predeterminado es solo 10, por lo que si sus tiempos de respuesta son altos, es posible que no sea suficiente para una solicitud cada 2 segundos (1500/hora).

Encienda el server-statusmódulo para monitorear los procesos en uso.Asegúrese de establecer reglas de acceso para que solo sea accesible internamente.

información relacionada