Hay muchos tipos de webs y 5 mil online es mucho tráfico, aunque hay webs sencillas que con algo de cache puedes solucionar grandes problemas, por ejemplo si envias tráfico de facebook, el cache es fundamental y con una web wordpress puedes tener hasta 10 mil online, pero son solo de 60 a 100 usuarios por segundo, cosa que es bastante, pero esa es la experiencia de un cliente, la cuenta aquí : 10 000 usuarios en linea desde facebook
Aunque se te pueden salir los ojos, es tráfico regular de facebook y el consumo de recursos es menor, aunque la web sea wordpress, una buena configuración lo soluciona, más que nada cacheando la mayor cantidad de datos posibles, y no solo de wordpress si no más que nada del lado del servidor. Por otro lado tengo clientes que hacen lo mismo sin cache en wordpress si no solo del lado del servidor, necesitan más poder de procesamiento, más RAM etc pero tampoco es complicado si el tráfico viene de facebook.
Pero bueno en este caso vamos a ver tráfico natural, que no viene de facebook, a una web php + mysql, a la que no se le puede poner cache de ningún tipo, más que nada por que el php captura datos y los guarda en la base de datos, así que funciona sin cache, sin cloudflare y nada por el estilo, así que no se cachea para evitar problemas con los datos.
Para esta web tenemos un:
Intel(R) Xeon(R) CPU E5530 @ 2.4 GHz/code>
Estaba hasta confiado de que era un dual pero revisando me di cuenta que no, aunque se compro un dual o es me dijeron :P
cat /proc/cpuinfo |grep "model name"
model name : Intel(R) Xeon(R) CPU E5504 @ 2.4 GHz
model name : Intel(R) Xeon(R) CPU E5504 @ 2.4 GHz
model name : Intel(R) Xeon(R) CPU E5504 @ 2.4 GHz
model name : Intel(R) Xeon(R) CPU E5504 @ 2.4 GHz
model name : Intel(R) Xeon(R) CPU E5504 @ 2.4 GHz
model name : Intel(R) Xeon(R) CPU E5504 @ 2.4 GHz
model name : Intel(R) Xeon(R) CPU E5504 @ 2.4 GHz
model name : Intel(R) Xeon(R) CPU E5504 @ 2.4 GHz
Memoria 16 GB de RAM.
Discos: raid10 sas15k 4 x 146gb
Puerto: 1gbit
Se probo litespeed y se probo apache, el resultado fue similar aunque al final se dejo apache.
Litespeed a ido bien, pero el gasto es casi innecesario pudiendo hacer lo mismo con apache, el mayor problema fue centos y cpanel, muchos ajustes al kernel para que apache y php pudieran funcionar de la mejor manera posible, ayer se hicieron los últimos ajustes por eso dice que apache llega online 17 horas.
Server uptime: 17 hours 53 minutes 27 seconds
Server load: 1.82 2.71 2.99
Total accesses: 14181471 - Total Traffic: 162.5 GB
CPU Usage: u69.75 s42.61 cu0 cs0 - .174% CPU load
220 requests/sec - 2.6 MB/second - 12.0 kB/request
602 requests currently being processed, 294 idle workers
PID Connections Threads Async connections
total accepting busy idle writing keep-alive closing
17887 102 yes 44 20 1 29 28
19274 111 no 50 14 1 42 18
19341 106 no 44 20 1 56 4
18304 10 no 0 0 2 0 1
17954 2 no 0 0 0 0 0
16410 120 no 53 11 0 33 33
19342 85 yes 47 17 0 27 10
18469 127 no 54 10 1 34 38
16955 16 no 0 0 1 0 10
18737 20 no 0 0 0 0 16
19475 24 yes 11 53 0 13 0
19542 10 yes 5 59 0 5 0
19073 120 no 50 14 4 40 25
18536 2 no 0 0 0 0 0
19543 3 no 0 0 0 3 0
18670 121 yes 50 14 2 40 30
18804 34 no 0 0 1 0 21
18871 108 no 53 11 2 27 26
18938 119 no 49 15 0 43 26
18939 2 no 0 0 0 0 1
19140 77 yes 43 21 1 24 8
19141 99 no 49 15 1 36 10
Sum 1418 602 294 18 452 305
A pesar de que el servidor solo ejecuta php y mysql, con contenido estático casi nulo la actividad de la red es bastante, más que nada el tráfico entrante.
Como bien saben no voy a decir la configuración usada, no tiene caso hacerlo, todas las webs y servidores son diferentes así que hay que ajustar y ajustar hasta llegar a la configuración perfecta.
Solo diré que en webs de alto tráfico no es solo configurar los servicios, tocar el kernel es importante para que todo trabaja bien, al menos en este se han resuelto varios problemas con php gracias a configuraciones del kernel.
Mis consejos:
– Revisar la red.
– Ulimit es importante.
– Y en centos :/ con su viejo revisar a fondo la config que tiene muchas cosas por defecto mejorables.
En este servidor con 5 mil online en horas pico podemos ver:
cat nf_conntrack_count
162642
Decir que default en algunos servidores es de 32 mil y en la mayoría de 63 mil, así que aveces hay que revisar que este bien.
– Revisar dmesg.
– Revisar Messeges.
Estos dos los son importantes para saber si algo fallo o se queda sin recursos, con eso podremos ajustar a nuestras necesidades y optimizar mejor el rendimiento.
Por el lado de apache en este servidor solo diré que el ServerLimit es de 160, más que eso daba problemas.
Aveces es importante y necesario hacer un cluster para la base de datos, usar un sistema mas complejo para 5 mil personas online, pero en este caso lo dejamos tal cual en el mismo servidor para ahorrar costes ( ya hay 3 servidores más sirviendo contenido estático con un uso de unos 110 tb de transferencia mensual )
Por lo demás algunas de las cosas que nos ha hecho mantener todo en el mismo servidor son:
– Load average estable.
– Uso de memoría aceptable.
– Uso de red – > bien, suficiente para las necesidades tomando en cuenta que se tiene 1gbit.
Todo marcado en la siguiente imágenes:
La imagen es un poco fea, pero son cosas de la vida de cuando intenta bajarle uno el peso a un PNG.
Lo del mysql no es cosa de configuración, se a trabajado bastante en eso y han de optimizar el código unos programadores.
Por lo demás el server tiene 4 mil visitas en linea regularmente, en horas pico hasta 5 mil visitantes y más.
Como dije más arriba he probado litespeed pero que lo he quitado para seguir mejorando la configuración de apache y el rendimiento ahora es casi el mismo, al menos viendo la carga y la fluidez con la que van las páginas web no se nota apenas diferencia usando litespeed o la configuración final de apache.
Como notas especiales;
– Este server es suficiente para mantener 5 mil usuarios en linea con este sistema php / mysql, pero eso no significa que un servidor de las mismas características aguante otro sistema con 5 mil usuarios recurrentes, puede ustedes tengan 3 mil usuarios en linea y estén usando 5 servidores, cosa que es normal o con 20 mil usuarios en linea estén usando 3 servidores, también es normal. Cada página web requiere una configuración distinta y hardware distinto, aunque eso no quiere decir que no se pueda mejorar la configuración y reducir servidores.
– Este sistema a sufrido una reducción de hardware, anteriormente estaba en Raid10 SSD, dual Xeon ( 32 cores ) 48 gigas de ram, con el mismo tráfico, pero pensamos que trabajando más en la configuración se podría ahorrar bastante en gastos / hardware y así fue.
– Este servidor solo es php / mysql, atendiendo 5 mil visitas simultaneas, pero el sistema es más complejo que eso, hay más servidores sirviendo contenido estatico con nginx y varnish.
– Repito cada sistema requiere una configuración distinta así que si están buscando una configuración para solucionar sus problemas de carga es mejor que contraten a alguien que lo haga ya que el método no esta en buscar algo en google y ver si te sirve si no estudiar tu servidor y páginas web que aloja para lograr una mejor configuración.
Eso es todo !
PD otro día hablare con más detalles de alguna que otra configuración y una web con 6 mil personas en linea con un sistema mucho más complejo aunque sin cPanel, usando nginx y django.