Optimizar my.cnf vps 4 GB de RAM

  • Autor Autor xaiborweb
  • Fecha de inicio Fecha de inicio

xaiborweb

Programador
No recomendado
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
hola compañeros tengo un vps con la siguientes.

características: KVM OpenStack, 1 vCore(s) 2.4 GHz, 4 GB de RAM 40 GB SSD, linux ubuntu 16 y panel de control vestacp

estoy corriendo una base de datos de 2 gb con pocas tablas pero algunas con 5 millones de registros y alrededor de 50 usuarios activos constantemente, la peticiones son muy lentas y como no soy muy experto en el tema les agradecería si me ayudan a optimizar y mejorar el rendimiento mysql.

HTML:
[client]
port=3306
socket=/var/run/mysqld/mysqld.sock

[mysqld_safe]
socket=/var/run/mysqld/mysqld.sock

[mysqld]
sql_mode=ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
user=mysql
pid-file=/var/run/mysqld/mysqld.pid
socket=/var/run/mysqld/mysqld.sock
port=3306
basedir=/usr
datadir=/var/lib/mysql
tmpdir=/tmp
lc-messages-dir=/usr/share/mysql
log_error=/var/log/mysql/error.log

symbolic-links=0

skip-external-locking
key_buffer_size = 512M
max_allowed_packet = 512M
table_open_cache = 512
sort_buffer_size = 2M
net_buffer_length = 32K
read_buffer_size = 2M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
tmp_table_size = 64M
max_heap_table_size = 32M
query_cache_size = 64M
query_cache_limit = 4M

#innodb_use_native_aio = 0
innodb_file_per_table

max_connections=200
max_user_connections=60
wait_timeout=120
interactive_timeout=60
long_query_time=5

!includedir /etc/mysql/conf.d/

gracias 😉
 
Pues va a depender que optimizado esta la base de datos y que tipo de web es, no es tan simple de solo dar valores hay que tomar muchas cosas en cuenta.

Podes comenzar con esto.

Insertar CODE, HTML o PHP:
[client]
port=3306
socket=/var/run/mysqld/mysqld.sock

[mysqld_safe]
socket=/var/run/mysqld/mysqld.sock

[mysqld]
sql_mode=ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
user=mysql
pid-file=/var/run/mysqld/mysqld.pid
socket=/var/run/mysqld/mysqld.sock
port=3306
basedir=/usr
datadir=/var/lib/mysql
tmpdir=/tmp
lc-messages-dir=/usr/share/mysql
log_error=/var/log/mysql/error.log
slow_query_log_file=/var/log/mysql/slow.log

symbolic-links=0

skip-external-locking
key_buffer_size = 32M
max_allowed_packet = 32M
table_open_cache = 512
sort_buffer_size = 2M
net_buffer_length = 32K
read_buffer_size = 2M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
tmp_table_size = 64M
max_heap_table_size = 64M
query_cache_size = 16M
query_cache_limit = 1M

#innodb_use_native_aio = 0
innodb_buffer_pool_size = 2048M
innodb_log_file_size = 256M
innodb_log_buffer_size = 8M
innodb_log_files_in_group = 2
innodb_buffer_pool_instances = 2
innodb_file_per_table

max_connections=200
max_user_connections=60
wait_timeout=120
interactive_timeout=60
slow_query_log = 1
long_query_time= 5

!includedir /etc/mysql/conf.d/

Si quieres ver que queries están "lentas" podes revisar esto en el archivo slow.log para que tengas una idea que es lo que esta mal y como solucionarlo.

UN DBA te puede orientar mejor.
 
Última edición:
¿Tienes las tablas indexadas? También debes mirar si te conviene más usar innodb o myisam
 
¿Tienes las tablas indexadas? También debes mirar si te conviene más usar innodb o myisam

pues no se mucho del tema pero la creación de las tablas las hice asi
HTML:
CREATE TABLE `link_movies_es` (
 `id` int(12) NOT NULL AUTO_INCREMENT,
 `id_movie` int(10) NOT NULL,
 `tipo` int(1) NOT NULL,
 `url` varchar(120) COLLATE utf8_unicode_ci NOT NULL,
 `audio` varchar(3) COLLATE utf8_unicode_ci NOT NULL,
 `calidad` int(1) NOT NULL,
 `fecha` date NOT NULL,
 `id_user` int(7) NOT NULL,
 `reportado` int(1) NOT NULL,
 PRIMARY KEY (`id`),
 UNIQUE KEY `url` (`url`),
 UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1479366 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
creo que son InnoDB
 

Reo que lo mejor que puedes hacer es buscar a alguien que te lo haga. Es fácil pero mejor pagar y tenerlo bien hecho que ponerte a investigar y cagarla.
 
Con 5 millones de registros y 50 usuarios simultáneos algo no esta bien allí... Primero, para que tantos millones de registros por tan pocos usuarios?

Es por ahí que debes empezar, siendo un crap o auto publisher, entonces este tipo de cosas considera tomar en cuenta que no van tan lejos...
 
supuestos ... disco ( es ssd ) ram ( un poco acotada ) la bd .. puede ser que necesite reajustes internos ... seteo de mysql ... habras al menos corrido un mysqltuner para que te alguna orientacion y el resto del sistema ( web so como anda la carga )
 
Pues va a depender que optimizado esta la base de datos y que tipo de web es, no es tan simple de solo dar valores hay que tomar muchas cosas en cuenta.

hola gracias por su ayuda ya esta mucho mejor la carga mysql dejo mi configuración por si alguien la quiere probar.

HTML:
[client]
port=3306
socket=/var/run/mysqld/mysqld.sock

[mysqld_safe]
socket=/var/run/mysqld/mysqld.sock

[mysqld]
sql_mode=ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
user=mysql
default_storage_engine=InnoDB
innodb=FORCE
pid-file=/var/run/mysqld/mysqld.pid
socket=/var/run/mysqld/mysqld.sock
port=3306
basedir=/usr
datadir=/var/lib/mysql
tmpdir=/tmp
lc-messages-dir=/usr/share/mysql
log_error=/var/log/mysql/error.log
expire_logs_days=5
performance_schema=off

symbolic-links=0

skip-external-locking
key_buffer_size = 64M
max_allowed_packet = 64M
max_connect_errors = 1000000
table_open_cache = 512
sort_buffer_size = 2M
net_buffer_length = 32K
read_buffer_size = 2M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
tmp_table_size = 64M
max_heap_table_size = 64M
query_cache_size = 16M
query_cache_limit = 1M
query_cache_type = 1

innodb_flush_method = O_DIRECT
innodb_buffer_pool_size = 2G
innodb_log_file_size = 256M
innodb_log_buffer_size = 16M
innodb_log_files_in_group = 2
innodb_buffer_pool_instances = 2
innodb_file_per_table = 1

max_connections=1000
max_user_connections=500
wait_timeout=100
interactive_timeout=100
long_query_time=5

!includedir /etc/mysql/conf.d/
 
yo correría un tuning-primer y un mysqltuner mañana ... y miraría que nos dice la cosa ... asi al ojo .. te diria que esos parametros sobrepasan bastante la ram que tienes disponible
 
Última edición:

Temas similares