apache, getting the best version

26
Apache Instalación

Upload: ivan-ortega

Post on 18-Dec-2014

64 views

Category:

Software


1 download

DESCRIPTION

A introduction about apache, how can up performance of your Apache making some little things. You can make some changes about parameters and configurations, and get two time the performance your server.

TRANSCRIPT

Page 1: Apache, getting the best version

ApacheInstalación

Page 2: Apache, getting the best version

Pasos a seguir

[1] PREFIX hay que reemplazarlo por la ruta en la que se va a instalar Apache. Si no especifica ningún valor en PREFIX, el valor por defecto que se toma es /usr/local/apache2

Page 3: Apache, getting the best version

Configuración básica

/etc/httpd/conf/httpd.conf

Page 4: Apache, getting the best version

ApacheMejora del rendimiento

Page 5: Apache, getting the best version

Apache Tuning1. Cargar sólo los módulos necesarios2. Usar los módulos de multiprocessing apropiados3. DNS lookup4. Cambiando parametros

i. MaxClientsii. MinSpareServers, MaxSpareServers, y StartServersiii. MaxRequestsPerChildiv. KeepAlive y KeepAliveTimeoutv. Prueba de rendimiento

5. Compresión HTTP y caching6. Separar el contenido dinámico y el estático

Page 6: Apache, getting the best version

Apache Tuning1. [Cargar sólo los módulos necesarios]2. Usar los módulos de multiprocessing apropiados3. DNS lookup4. Cambiando parametros

i. MaxClientsii. MinSpareServers, MaxSpareServers, y StartServersiii. MaxRequestsPerChildiv. KeepAlive y KeepAliveTimeoutv. Prueba de rendimiento

5. Compresión HTTP y caching6. Separar el contenido dinámico y el estático

Page 7: Apache, getting the best version

1.Cargar solo modulos necesarios

● apachectl -M -> Lista los módulos corriendo en Apache

● a2dismod/a2enmod <nombre modulo> -> Desactiva/activa el módulo en cuestión

● apachectl configtest -> Testea que el módulo desactivado no ha afectado a la conf de Apache antes de relanzarlo.

Algunos de los módulos que suelen desactivarse [3]

Page 8: Apache, getting the best version

Apache Tuning1. Cargar sólo los módulos necesarios2. [Usar los módulos de multiprocessing apropiados]3. DNS lookup4. Cambiando parametros

i. MaxClientsii. MinSpareServers, MaxSpareServers, y StartServersiii. MaxRequestsPerChildiv. KeepAlive y KeepAliveTimeoutv. Prueba de rendimiento

5. Compresión HTTP y caching6. Separar el contenido dinámico y el estático

Page 9: Apache, getting the best version

2. Usar los módulos de multiprocessing apropiados

Cada proceso que genera varios procesos hijos, estos son agrupados y permiten usar la misma conexión.

Apache inicia varios subprocesos y cada petición es atendida por uno de estos.

Page 10: Apache, getting the best version

Worker vs Prefork● Más estable, ya que un error crítico

solo afectaría a una petición. ● Se pueden usar módulos / extensiones

que no sean Thread-Safe.● Requiere más recursos para atender

peticiones simultáneas● Favorece el uso intensivo de PHP. Los

aceleradores de PHP no son Thread-Safe, pueden usarse.

● Prefork es la configuración predeterminada en la mayoría de instalaciones.

● Un fallo crítico afecta a varias peticiones.

● Requiere que todos los módulos/extensiones que se vayan a usar sean Thread-Safe.

● Menos recursos para atender peticiones simultáneas.

● No se pueden usar aceleradores de PHP.

● Worker solo está disponible desde Apache 2.x .

Page 11: Apache, getting the best version

Worker vs PreforkPrefork en ● Un servidor bastante

poderoso● Manejando casi solo

contenido generado desde PHP.

● El contenido estático se sirve desde otro servidor.

Worker en ● Un servidor sencillo ● Más que todo contenido

estático. ● La mayoría del contenido

generado con PHP queda almacenado en cachés.

Page 12: Apache, getting the best version

Apache Tuning1. Cargar sólo los módulos necesarios2. Usar los módulos de multiprocessing apropiados3. [DNS lookup]4. Cambiando parametros

i. MaxClientsii. MinSpareServers, MaxSpareServers, y StartServersiii. MaxRequestsPerChildiv. KeepAlive y KeepAliveTimeoutv. Prueba de rendimiento

5. Compresión HTTP y caching6. Separar el contenido dinámico y el estático

Page 13: Apache, getting the best version

3. DNS lookupCada vez que hacemos una conexión a un cliente, Apache tiene que resolver el nombre del cliente, esto hace que tenga que hacer una petición al DNS. Apache tiene la posibilidad de ● crear una lista interna de hosts-ips● logresolve

Page 14: Apache, getting the best version

Apache Tuning1. Cargar sólo los módulos necesarios2. Usar los módulos de multiprocessing apropiados3. DNS lookup4. [Cambiando parametros]

i. MaxClientsii. MinSpareServers, MaxSpareServers, y StartServersiii. MaxRequestsPerChildiv. KeepAlive y KeepAliveTimeoutv. Prueba de rendimiento

5. Compresión HTTP y caching6. Separar el contenido dinámico y el estático

Page 15: Apache, getting the best version

i. MaxClients

+ Timeouts- RAM

MaxClients = Total RAM dedicated to the web server / Max child process size

- Timeouts

+ RAM

Page 16: Apache, getting the best version

ii. MinSpareServers, MaxSpareServers, y StartServers

● Estos parámetros condicionarán el multiprocesamiento de Apache● No dejar muchos procesos en espera si la carga del servidor es baja.

Page 17: Apache, getting the best version

iii.MaxRequestsPerChild y ThreadsPerChild

ThreadsPerChild. MaxRequestsPerChild.

Page 18: Apache, getting the best version

iv.KeepAlive y KeepAliveTimeout

● Varias peticiones sobre la misma conexión TCP● Timeout: Tiempo de espera hasta cerrar la conexión● Destaca con HTML con muchas imágenes

Page 19: Apache, getting the best version

v.Prueba de rendimiento<IfModule prefork.c>StartServers 3MinSpareServers2MaxSpareServers 3MaxClients 15MaxRequestsPerChild 5000</IfModule>

KeepAlive OnMaxKeepAliveRequests 100KeepAliveTimeout 2

● Hemos usado prefork ya que vamos a servir contenido estático

● Al usar prefork, establecemos el MaxRequestPerChild

Page 20: Apache, getting the best version

ab -n 1000 -c 160

Page 21: Apache, getting the best version

Apache Tuning1. Cargar sólo los módulos necesarios2. Usar los módulos de multiprocessing apropiados3. DNS lookup4. Cambiando parametros

i. MaxClientsii. MinSpareServers, MaxSpareServers, y StartServersiii. MaxRequestsPerChildiv. KeepAlive y KeepAliveTimeoutv. Prueba de rendimiento

5. [Compresión HTTP y caching]6. Separar el contenido dinámico y el estático

Page 22: Apache, getting the best version

5.Compresión HTTP y caching

+ Ancho de banda+ Recursos necesarios

En apache se puede habilitar la compresión habilitando el módulo mod_deflate.

Para configurar estos valores usamos mod_expires y mod_headers.

Page 23: Apache, getting the best version

Comparativa compresión

Page 24: Apache, getting the best version

Apache Tuning1. Cargar sólo los módulos necesarios2. Usar los módulos de multiprocessing apropiados3. DNS lookup4. Cambiando parametros

i. MaxClientsii. MinSpareServers, MaxSpareServers, y StartServersiii. MaxRequestsPerChildiv. KeepAlive y KeepAliveTimeoutv. Prueba de rendimiento

5. Compresión HTTP y caching6. [Separar el contenido dinámico y el estático]

Page 25: Apache, getting the best version

6. Separar el contenido dinámico y el estático

Podemos usar estas lineas en nuestras directivas de VirtualHostRewriteEngine OnRewriteRule “^/(.*).(jpg|jpeg|gif|png|swf|pdf|avi|mpeg|mpg|mp3)$” “http://www.yourwebsite.com/$1.$2″ [P]ProxyPassReverse / http://www.yourwebsite.com/

Esto lo podremos hacer mediante los módulos ● mod_proxy ● rewrite_module

Page 26: Apache, getting the best version

Referencias[1] http://httpd.apache.org/docs/2.2/es/install.html[2] http://bobcares.com/blog/configuring-apache-for-maximum-performance/#COMPRS[3] http://diariolinux.com/2014/05/31/desactivando-modulos-innecesarios-en-apache/[4] http://www.maestrosdelweb.com/editorial/entendiendo-los-modos-multiproceso-de-apache/[5] http://httpd.apache.org/docs/2.2/programs/logresolve.html[6] http://old.zope.org/Members/ike/Apache2/osx/configure_html[7] https://drupal.org/node/215516[8] http://www.websiteoptimization.com/speed//18/18-2t.html[9] http://httpd.apache.org/docs/2.2/mod/mod_proxy.html[10] http://www.developerfeed.com/how-proxy-static-content-apache-server