LinuxParty
Todo el mundo sabe lo difícil que es llevar a cabo la carga de su servidor web. En mi trabajo diario como ingeniero de hosting ignifica que muy a menudo hago la misma pregunta, "Wow, sitio web es muy interesante, pero ¿se puede hacer frente a un mayor tráfico con el tiempo?".
La situación "normal"
Un sitio web "normal" corre sobre Apache con mod_php capaz de soportar 20 solicitudes por segundo con facilidad, pero si te pones en 50 solicitudes por segundo (no es extraño con algunos sitios web como sitios web de los partidos políticos, etc)? La respuesta, en mi opinión es dejar de usar Apache, ya que como está ahora Apache no podrá soportar más.
¡SÍ! Nginx!
¿Qué demonios está Microcaching?
¿Qué es el microcaching? Bueno, la teoría es que los archivos de caché, durante un corto periodo de tiempo (como por ejemplo, 1 segundo) significa es que cuando un usuario pide la página se almacena en caché para que la próxima solicitud de cualquier otro, que vendrá de la caché, y con 100 usuarios que solicitado dentro de los siguientes 5 segundos, sólo 1 de cada 20 usuarios tendrán crearán la página completa (y con Nginx y un sitio bien estructurado no tiene ningún problema).
Yo no me lo creo!
Ya lo creo! Déjeme ponerle un ejemplo, tome este sitio web se encuentra en estos momentos. Digamos que tenemos un loadtest de 1000 solicitudes con 200 usuarios concurrentes. Si ejecuta este sitio web bajo Apache obtendría entre 10-40 peticiones por segundo, máximo! Y su servidor web se vendría abajo en alguna carga grave y se verían obligados a ampliar su tiempo de latencia. Bajo Nginx con PHP-FPM sin microcaching es lo mismo (tal vez unas pocas más peticiones pero su servidor tendría muchos procesos en ejecución php-fpm para procesar las solicitudes). Con microcaching obtiene la friolera de 300 a 450 solicitudes de un segundo!
Ok, me lo das!
Microcaching es realmente fácil de configurar, a continuación es un ejemplo de configuración que se puede ejecutar en cualquier sitio web hecho con PHP (en este caso es específico para Wordpress). Eche un vistazo:
# # your website # server { listen 80; server_name <your hostnames>; access_log <your access log> main; error_log <your error log>; root <your root folder>; location / { index index.php index.html index.htm; } if (!-e $request_filename) { rewrite ^(.+)$ /index.php?q=$1 last; } location ~ \.php$ { # Setup var defaults set $no_cache ""; # If non GET/HEAD, don't cache & mark user as uncacheable for 1 second via cookie if ($request_method !~ ^(GET|HEAD)$) { set $no_cache "1"; } # Drop no cache cookie if need be # (for some reason, add_header fails if included in prior if-block) if ($no_cache = "1") { add_header Set-Cookie "_mcnc=1; Max-Age=2; Path=/"; add_header X-Microcachable "0"; } # Bypass cache if no-cache cookie is set if ($http_cookie ~* "_mcnc") { set $no_cache "1"; } # Bypass cache if flag is set fastcgi_no_cache $no_cache; fastcgi_cache_bypass $no_cache; fastcgi_cache microcache; fastcgi_cache_key $server_name|$request_uri; fastcgi_cache_valid 404 30m; fastcgi_cache_valid 200 10s; fastcgi_max_temp_file_size 1M; fastcgi_cache_use_stale updating; fastcgi_pass localhost:9000; fastcgi_pass_header Set-Cookie; fastcgi_pass_header Cookie; fastcgi_ignore_headers Cache-Control Expires Set-Cookie; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; #fastcgi_intercept_errors on; include fastcgi_params; } }
También se debe poner en el formato de caché y su zona caché en nginx.conf, añadir estas líneas a su bloque http {}:
fastcgi_cache_path /var/cache/nginx2 levels=1:2 keys_zone=microcache:5m max_size=1000m; log_format cache '$remote_addr - $remote_user [$time_local] "$request" ' '$status $upstream_cache_status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
Pruébelo!
Animo todos a probarlo por sí mismos y verá la mejora en el rendimiento! Sé que es un gran cambio pasar de Apache a Nginx (config-wise) pero usted conseguirá un acceso muy rápido!
-
Internet
- La muerte lenta del hipervínculo
- Cómo cambiar dirección IP (modo gráfico), por qué querría hacerlo y cuándo no debería hacerlo
- 10 comandos "IP" útiles para configurar interfaces de red
- Cómo configurar conexiones IP de red usando 'nmcli' en Linux
- Configuración de una IP Estática en una Tarjeta de Red en Linux.
- ¿Migrar a la nube? Marque esta lista de verificación
- Nuevo estándar de Internet L4S: el plan silencioso para hacer que Internet se sienta más rápido
- Nextcloud y Roundcube se Fusionan para Impulsar la Descentralización en la Productividad en la Nube
- Los 10 mejores servidores proxy inversos de código abierto para Linux
- Una guía para principiantes para crear conexiones (Bonding) y puentes de red (Bridging) en Linux
- Conectar dos redes Locales alejadas creando de un Puente Transparente
- Crear un puente de red transparente "bridge" para conectar dos redes locales remotas
- Crear un Puente de Red o Bridge
- La propuesta de la ICANN / Verisign permitiría a cualquier gobierno confiscar nombres de dominio
- Listado errores HTTP, estados de respuesta del servidor