PDF de programación - Optimización del rendimiento de una stack LAMP

Imágen de pdf Optimización del rendimiento de una stack LAMP

Optimización del rendimiento de una stack LAMPgráfica de visualizaciones

Publicado el 25 de Junio del 2017
372 visualizaciones desde el 25 de Junio del 2017
334,5 KB
26 paginas
Creado hace 8a (16/12/2011)
Optimización del rendimiento de una stack LAMP

Josué Álvarez Moreno

Optimización del
rendimiento de
una stack LAMP

1 De 26

Optimización del rendimiento de una stack LAMP

Josué Álvarez Moreno

Table of Contents

Objetivos....................................................................................................................................................3
Material necesario:.....................................................................................................................................3
Conceptos básicos......................................................................................................................................3
¿Que es Apache?...................................................................................................................................3
¿Qué es ab?.......................................................................................................................................3
¿Optimización?......................................................................................................................................3
¿Cómo se mide el rendimiento de un servidor?....................................................................................4
Optimización de Apache............................................................................................................................7
Módulos de Apache...............................................................................................................................7
Midiendo el rendimiento con páginas dinámicas.......................................................................................9
Optimizando PHP....................................................................................................................................12
El problema de PHP............................................................................................................................12
Instalando y configurando APC..........................................................................................................13
Squid como reverse-proxy.......................................................................................................................15
Optimización de MySQL.........................................................................................................................20
Midiendo el rendimiento de la base de datos con SQLBench.................................................................20
¿Cómo ver la configuración actual?....................................................................................................22
¿Qué tipo de tablas debo usar, InnoDB o MyISAM?..........................................................................24
¿Cómo cambiar el motor por defecto de MyISAM a InnoDB?..........................................................24
Conclusiones............................................................................................................................................26


2 De 26

Optimización del rendimiento de una stack LAMP

Josué Álvarez Moreno

Objetivos

– Ser capaz de instalar una stack LAMP completa y configurar un sitio web.
– Medir el rendimiento de nuestro servidor, ajustar la configuración para obtener el mayor

rendimiento posible e identificar cuellos de botella.

Material necesario:

– Ubuntu 11.04 (salvo la instalación de paquetes, el contenido es independiente de la

distribución).

– Una stack LAMP (# apt-get install lamp-server^ ).


ab (Apache HTTP server benchmarking tool, incluida con Apache).

Conceptos básicos

¿Que es Apache?
Software para servir páginas web. Está disponible para una gran variedad de plataformas y es de código
abierto.

¿Qué es ab?
Es un programa creado por la fundación Apache que sirve para medir el número de peticiones por
segundo que puede servir el servidor Apache.

¿Optimización?
Sí. Debido a la gran variedad de hardware que existe y a los diferentes tipos de contenido que pueden
servirse (un blog pequeño, un portal tipo Terra, una aplicación web escrita en PHP...), ajustar la
configuración de Apache para extraer el mayor rendimiento posible de nuestra máquina es algo
necesario.

3 De 26

Optimización del rendimiento de una stack LAMP

Josué Álvarez Moreno

¿Cómo se mide el rendimiento de un servidor?
Existen muchas formas de hacerlo (test de carga, de bases de datos, de ancho de banda, conexiones
simultáneas...). Nosotros vamos a utilizar “ab”, que nos permite simular cientos de conexiones
simultáneas a un servidor. Veamos un ejemplo:

$ ab -n500 -c10 -k http://184.72.155.144/test.html
-n Es el número de conexiones totales que van a realizarse.
-c Es el número de clientes que va a haber conectados simultáneamente.
-k Realiza múltiples peticiones dentro de una sesión HTTP (KeepAlive).
http://184.72.155.144/test.html URL sobre la cual se realizará la petición.

Y esta es la salida correspodiente a un test de estrés con la configuración por defecto usando
mpm-prefork:

This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 184.72.155.144 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Finished 500 requests

Server Software: Apache/2.2.14
Server Hostname: 184.72.155.144
Server Port: 80

Document Path: /test.html
Document Length: 170 bytes

Concurrency Level: 10
Time taken for tests: 10.825 seconds # Tiempo total que ha durado el test
Complete requests: 500
Failed requests: 0
Write errors: 0
Keep-Alive requests: 500
Total transferred: 241010 bytes

4 De 26

Optimización del rendimiento de una stack LAMP

Josué Álvarez Moreno

HTML transferred: 85000 bytes
Requests per second: 46.19 [#/sec] (mean)
Time per request: 216.495 [ms] (mean)

# Peticiones por segundo, de media.
# Tiempo que ha tardado de media en servirse cada
# peticion, en milisegundos

Time per request: 21.649 [ms] (mean, across all concurrent requests)
Transfer rate: 21.74 [Kbytes/sec] received

min mean[+/-sd] median

Connection Times (ms)

Connect: 0
Processing: 164 211
Waiting: 164
211
164 215
Total:

4

25.7 0
145.0 201
145.0 200
160.3 201

max
208
2876
2876
3084

Percentage of the requests served within a certain time (ms)
50% 201
66% 202
75% 202
80% 202
90% 204
95% 207
98% 380
99% 401
100% 3084 (longest request)

216 milisegundos por petición suena muy bien. Veamos el resultado si usamos mpm-worker:
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Finished 500 requests

Server Software: Apache/2.2.17
Server Hostname: 127.0.0.1

5 De 26

Optimización del rendimiento de una stack LAMP

Josué Álvarez Moreno

Server Port: 80

Document Path: /index.html
Document Length: 170 bytes

Concurrency Level: 10
Time taken for tests: 0.206 seconds
Complete requests: 500
Failed requests: 0
Write errors: 0
Keep-Alive requests: 500
Total transferred: 199510 bytes
HTML transferred: 43000 bytes
Requests per second: 2427.36 [#/sec] (mean)
Time per request: 4.120 [ms] (mean)
Time per request: 0.412 [ms] (mean, across all concurrent requests)
Transfer rate: 945.86 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.3 0 3
Processing: 0 4 3.6 4 24
Waiting: 0 4 3.6 4 23
Total: 0 4 3.6 4 24

Percentage of the requests served within a certain time (ms)
50% 4
66% 5
75% 5
80% 6
90% 7
95% 9
98% 18
99% 21
100% 24 (longest request)

Ten en cuenta que esto es un archivo HTML estático, con archivos más complejos o dinámicos (PHP,
Ruby...) este tiempo aumenta considerablemente. Veamos como podemos optimizar la configuración
para servir este archivo lo más rápido posible.

6 De 26

Optimización del rendimiento de una stack LAMP

Josué Álvarez Moreno

Optimización de Apache.

¿Debo usar mpm-prefork o mpm-worker?
Dado que nuestro objetivo es tener una stack LAMP completa y la documentación de PHP no
recomienda el uso de mpm-worker por posibles problemas de estabilidad y seguridad
(http://www.php.net/manual/en/install.unix.apache2.php

ahora en adelante, salvo que se indique lo contrario específicamente, se asume que Apache está
configurado para usar mpm-prefork.
Ajustar la configuración de Apache
Editando el archivo apache2.conf (o httpd.conf, según nuestra distribución), hemos de añadir al final lo
siguiente:

), es preferible el uso de mpm-prefork. De

– MaxClients: Número máximo de clientes simultáneos. Para obtener el valor óptimo de esta

directiva, dividimos el total de RAM de nuestro sistema entre el tamaño medio de los procesos
apache2 (o httpd, según nuestra distribución). En mi caso con 612 MB de RAM, dejando para el
sistema operativo 200 me sale 80.

– HostnameLookups Off: Cuando Apache recibe una petición, resuelve la dirección IP y

almacena el nombre de dominio en el log. Pero debido al diseño de Apache, el cliente tendrá
que esperar hasta que la resolución se complete para que se sirva su petición, así que lo
desact
  • Links de descarga
http://lwp-l.com/pdf4649

Comentarios de: Optimización del rendimiento de una stack LAMP (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad