Configurando y Optimizando un servidor. my.cnf

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: El apache, y el 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.

1 vi  /etc/my.cnf

por defecto en mi my.cnf sólo venia lo siguiente:

1 [mysqld]
2 set-variable=local-infile=0
3 datadir=/var/lib/mysql
4 socket=/var/lib/mysql/mysql.sock
5 user=mysql
6 # Default to using old password format for compatibility with mysql 3.x
7 # clients (those using the mysqlclient10 compatibility package).
8 old_passwords=1
9
10 [mysqld_safe]
11 log-error=/var/log/mysqld.log
12 pid-file=/var/run/mysqld/mysqld.pid

He añadido una serie de parámetros nuevos

1 [mysqld]
2 set-variable=local-infile=0
3 datadir=/var/lib/mysql
4 socket=/var/lib/mysql/mysql.sock
5 user=mysql
6 # Default to using old password format for compatibility with mysql 3.x
7 # clients (those using the mysqlclient10 compatibility package).
8 old_passwords=1
9
10 # nueva configuracion
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
14 long_query_time = 2
15 log-queries-not-using-indexes
16 query_cache_limit=1M
17 query_cache_size=32M
18 query_cache_type=1
19 max_connections=500
20 interactive_timeout=100
21 # Reducido wait_timeout para prevenir que clientes inactivos retengan una conexion.
22 wait_timeout=30
23 connect_timeout=10
24 # establecido a 128 para que no use mas memoria
25 thread_cache_size=128
26 key_buffer=64M
27 join_buffer=1M
28 max_allowed_packet=16M
29 table_cache=512
30 record_buffer=1M
31 sort_buffer_size=2M
32 read_buffer_size=2M
33 max_connect_errors=10
34
35 [mysqld_safe]
36 log-error=/var/log/mysqld.log
37 pid-file=/var/run/mysqld/mysqld.pid
38 # nueva configuracion
39 open_files_limit=8192
40
41 # nueva configuracion
42 [mysql]
43 no-auto-rehash
44 #safe-updates
45
46 # nueva configuracion
47 [isamchk]
48 key_buffer=64M
49 sort_buffer=64M
50 read_buffer=16M
51 write_buffer=16M
52
53 [myisamchk]
54 key_buffer=64M
55 sort_buffer=64M
56 read_buffer=16M
57 write_buffer=16M
58
59 [mysqlhotcopy]
60 interactive-timeout
  • 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.

 

FUENTE: http://www.pedroventura.com/sysadmin/configurando-y-optimizando-un-servidor-my-cnf/