El tema es la configuracion por defecto de los servidores no es la optima para albergar una web, un servidor puede estar configurado para ser un servidor web, un servidor de correo, un servidor de juegos o simplemente se puede usar esa máquina como un ordenador normal.
Para ello hay que configurar varios aspectos, inicialmente: The apache, and MySQL.
Lo primero que hice es optimizar el MySQL, y con esto el rendimiento del servidor mejoró notablemente.
Conectados como root en la máquina (los paths aqui indicados son los míos, verificar los vuestros.)
Lo primero un backup
1 | cp /etc/my.cnf /etc/my.cnf.backup |
abrimos el archivo con vuestro editor favorito.
por defecto en mi my.cnf sólo venia lo siguiente:
2 | set-variable=local-infile=0 |
4 | socket=/var/lib/mysql/mysql.sock |
6 | # Default to using old password format for compatibility with mysql 3.x |
7 | # clients (those using the mysqlclient10 compatibility package). |
11 | log-error=/var/log/mysqld.log |
12 | pid-file=/var/run/mysqld/mysqld.pid |
He añadido una serie de parámetros nuevos
2 | set-variable=local-infile=0 |
4 | socket=/var/lib/mysql/mysql.sock |
6 | # Default to using old password format for compatibility with mysql 3.x |
7 | # clients (those using the mysqlclient10 compatibility package). |
11 | # este parámetro es fundamental, hay que registrar las consultas lentas, todas las que duren mas de 2 segundos. |
12 | # asi se puede ver las consultas que se hacen y que tienen que ser optimizadas |
13 | log-slow-queries=/var/log/mysql-slow-queries.log |
15 | log-queries-not-using-indexes |
20 | interactive_timeout=100 |
21 | # Reducido wait_timeout para prevenir que clientes inactivos retengan una conexion. |
24 | # establecido a 128 para que no use mas memoria |
36 | log-error=/var/log/mysqld.log |
37 | pid-file=/var/run/mysqld/mysqld.pid |
- query_cache_size:
MySQL 4 proporciona una característica que puede resultar muy útil – una caché de consultas. En una situación en la base de datos tiene que ejecutar varias veces las mismas preguntas en el mismo conjunto de datos, devolviendo el mismo resultado cada vez, MySQL puede cachear resultados, evitando la sobrecarga de ejecución a través de los datos una y otra y es extremadamente útil en servidores con mucha carga. - key_buffer_size:
El valor de key_buffer_size es el tamaño del búfer utilizado con los índices. Cuanto mayor sea el buffer, más rápido terminará el comando SQL y el resultado será devuelto. Se supone que lo mejor es ajustar el key_buffer_size con al menos un cuarto de la memoria del servidor, pero no más de la mitad de la cantidad total. Idealmente, será lo suficientemente grande como para contener todos los índices (el tamaño total de todos los archivos. MYI en el servidor). - table_cache:
El valor predeterminado es 64. Cada vez que MySQL tiene acceso a una tabla, se coloca en la caché. Si el sistema accede a muchas tablas, es más rápido para tener estas en la caché. MySQL al ser multi-threaded, puede ejecutar muchas consultas sobre sobre una tabla a la vez, y cada uno de éstas abrirá una tabla. - sort_buffer:
El sort_buffer es muy útil para acelerar las operaciones de myisamchk (razón por la cual se fija mucho más alto para ese fin en los archivos de configuración por defecto), pero también puede ser útil cuando se realizan todos los días un gran número de ordenaciones o clasificaciones. - thread_cache:
Si se tiene un servidor con mucha carga que está recibiendo una gran cantidad de conexiones rápida, hay que configurar la thread_cache lo suficientemente alto para que el valor d threads_created en SHOW STATUS deja de aumentar. Esto debe tomar parte de la carga fuera de la CPU. - tmp_table_size:
(no incluido en el archivo de configuracion, pero este parámetro también se puede configurar).”Created_tmp_disk_tables” son el número de tablas temporales implícitos en el disco creado durante la ejecución declaraciones y “Created_tmp_tables” están basados en memoria. Obviamente, es malo si tiene que ir a la disco en lugar de la memoria todo el tiempo.
SOURCE: http://www.pedroventura.com/sysadmin/configurando-y-optimizando-un-servidor-my-cnf/