El webserver ideal

En esta nota voy a reunir las recetas para obtener el mejor rendimiento de su sitio web.

Antes de tocar algo, les sugiero hacer snapshot o backup. Si aun no están virtualizando…pues deberían. Aquí una nota relacionada

Ahora que tienen backup recién tomado, sabrían restaurarlo? Lo probaron? Cuanto tiempo demorarían en recuperarlo?
Todo eso les preguntara el cliente en una forma poco amigable. Se los aseguro!

Claro la mayoría de estos consejos solo se aplica a un VPS o server dedicado. Aclaro que nunca hay que seguir una guía que encuentran por ahí sin entender el porque, esta nota no es excepción.

Nginx
– El “worker_processes auto;” es una buena idea para que tengamos la cantidad de procesos de nginx igual a la cantidad de CPUs en el servidor
– Dejemos “client_max_body_size 20M” para poder subir archivos superiores a 1Mb (similar a los limites de PHP);
https://www.linode.com/docs/websites/nginx/configure-nginx-for-optimized-performance

PHP
– No habilitar el open_basedir, en este enlace el porque de esta medida. Se tiene que asegurar el server usando otro/s método/s.
– Usa memcache! “#apt-get install libmemcached-tools memcached php5-memcached”. Luego fijate abajo los tips para habilitarlo en tu CMS.
Controla sus parametros con #memcstat –servers=localhost, agregandole memoria de ser necesario en /etc/memcached.conf
– Los clásicos “upload_max_filesize=20M” y “post_max_size = 20M” para poder subir archivos de hasta 20Mb
– Setear timezone es buena idea

MySQL/MariaDB

– Traten de migrar a MariaDB en lo posible, es casi lo mismo pero mejor
– Miren el log de errores al importar las bases de datos, si tira algo como:

FECHA HORA [ERROR] Cannot find or open table SUBASE/SUTABLA_by from the internal data dictionary of InnoDB though the .frm file for the table exists. Maybe you have deleted and recreated InnoDB data
files but have forgotten to delete the corresponding .frm files of InnoDB tables, or you have moved .frm files to another database? or, the table contains indexes that this version of the engine
doesn’t support. See http://dev.mysql.com/doc/refman/5.5/en/innodb-troubleshooting.html how you can resolve the problem.

Hay que seguir este tutorial para aumentar el log de innodb. Estos son archivos ib_logfile0 e ib_logfile1 dentro de /var/lib/mysql/. Básicamente nos limitan operaciones con tablas grandes (su tamaño determina la transacción máxima)
Esta guía para mi trata muy bien al tema
Personalmente lo que hago es colocar un archivo en /etc/mysql/conf.d/optimize.cnf con un contenido como el siguiente:
[mysqld]
tmp_table_size = 24M
max_heap_table_size = 24M
innodb_buffer_pool_instances = 1
join_buffer_size = 16M
innodb_buffer_pool_size = 128M
innodb_log_file_size = 32M
max_connections = 30
skip-name-resolve

Esta basado en los consejos de mysqltuner.pl

– Habilitar innodb_file_per_table, de lo contrario el contenido de las tablas innodb se guarda en /var/lib/mysql/ibdata1 que lo hará crecer mucho (no baja de tamaño). Mas información y el procedimiento por si les pasa, lleva aquí casi una década.

– Setear los valores de wait_timeout e interactive_timeout. El primero es para consultas de sitios, el segundo para consola de MySQL. Esta todo detallado aqui y de manera predeterminada las consultas pueden correr 8! Horas. Es una pagina web lo que tenemos, nadie va a esperar tanto tiempo.

NFS
– Servidor: “#install nfs-kernel-server portmap”, luego exportamos los puntos de montaje siguiendo esta guía. A no olvidarse de exportar como async! De lo contrario toda escritura sobre NFS va a sufrir. Ejemplo: “/storage 192.168.2.0/24(rw,async,no_subtree_check)”
– Cliente: “#apt-get install nfs-common”, luego montamos con “#mount IP:/DirectorioDelNAS /DirectorioLocal”

WordPress
http://wp-cli.org/

Drupal
Instala drush, sin eso la vida es aburrida. Seria un CLI de administración de drupal
– Para habilitar memcache en drupal (ver PHP para instalarlo), van a hacer falta las lineas:
$conf[‘cache_backends’][] = ‘sites/all/modules/memcache/memcache.inc’;
$conf[‘cache_default_class’] = ‘MemCacheDrupal’;
$conf[‘cache_class_cache_form’] = ‘DrupalDatabaseCache’;

En sites/default/settings.php.
Para mas info, recurrir a la documentación oficial.
Finalmente: “$drush en memcache” para crear un indice nuevo

Deja un comentario

Para proteger el blog de SPAM, le pedimos que complete la tarea:WordPress CAPTCHA