Lo estoy pasando mal con el servidor mysql (y como ven, con mi cuenta serverfault también, bueno, esa es otra historia). Tengo errores en consultas con "El servidor MySQL ha desaparecido...", estoy usando Debian Lenny, MySQL versión 5.0.51a-24+lenny2-log, y aquí está la configuración my.cnf
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
# Here is entries for some specific programs
# The following values assume you have at least 32M ram
# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
#
# * Basic Settings
#
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
language = /usr/share/mysql/english
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 0.0.0.0
#
# * Fine Tuning
#
wait_timeout = 28800
net_read_timeout = 60
net_write_timeout = 60
key_buffer = 384M
max_allowed_packet = 64M
thread_stack = 128K
thread_cache_size = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover = BACKUP
#max_connections = 100
table_cache = 4096
sort_buffer = 2M
read_buffer = 2M
read_rnd_buffer = 64M
myisam_sort_buffer_size = 64M
#thread_concurrency = 10
#
# * Query Cache Configuration
#
query_cache_limit = 64M
query_cache_size = 32M
#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
#log = /var/log/mysql/mysql.log
#
# Error logging goes to syslog. This is a Debian improvement :)
#
# Here you can see queries with especially long duration
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 2
#log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
# other settings you may need to change.
#server-id = 1
#log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
#binlog_do_db = include_database_name
#binlog_ignore_db = include_database_name
#
# * BerkeleyDB
#
# Using BerkeleyDB is now discouraged as its support will cease in 5.1.12.
skip-bdb
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
# You might want to disable InnoDB to shrink the mysqld process by circa 100MB.
#skip-innodb
#
# * Security Features
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem
[mysqldump]
quick
quote-names
max_allowed_packet = 32M
[mysql]
#no-auto-rehash # faster start of mysql but no tab completition
[isamchk]
key_buffer = 16M
#
# * NDB Cluster
#
# See /usr/share/doc/mysql-server-*/README.Debian for more information.
#
# The following configuration is read by the NDB Data Nodes (ndbd processes)
# not from the NDB Management Nodes (ndb_mgmd processes).
#
# [MYSQL_CLUSTER]
# ndb-connectstring=127.0.0.1
#
# * IMPORTANT: Additional settings that can override those from this file!
# The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/mysql/conf.d/
¿Hay algo que pueda modificar para detener este error?
¡Gracias!
Respuesta1
Veo dos posibilidades:
1. PHP tarda mucho tiempo:
Si está utilizando PHP, el tiempo de ejecución puede ser mayor que los tiempos de espera de MySQL. Es posible que desee verificar net_read_timeout
y net_write_timeout
comparar con PHP max_execution_time
. Si el tiempo de ejecución de PHP es superior a 60, entonces MySQL podría desconectarse.
2. servidor sobrecargado
Dado que su wait_timeout
variable es 8 horas (28800 segundos), es posible que le molesten las conexiones MySQL inactivas. Utilice la show processlist
consulta para ver cuántos subprocesos inactivos se están ejecutando. Si tiene muchos subprocesos inactivos, es posible que desee reducir la wait_timeout
directiva. Actualmente estoy usando un valor de 60 en servidores web de producción (y nadie se ha quejado todavía).
De todos modos, MySQL obviamente necesita algunos ajustes de configuración. Hay muchos artículos en la web que hablan sobre el ajuste de MySQL.
Respuesta2
El mensaje "desaparecido" es una señal de que el servidor se cansó de esperar y cerró la conexión.
Deberías poder reactivarlo abriendo una nueva conexión.
Respuesta3
"MySQL ha desaparecido" significa que su aplicación web no puede acceder al servidor MySQL. Indicaría que está caído o inalcanzable. Puedes consultar con otra aplicación web,phpMyAdmino la opción de línea de comando 'mostrar lista de procesos;' para ver qué está pasando internamente con el servidor MySQL.
Si su servidor no tiene suficiente memoria para ejecutar MySQL, es común que se apague así, verifique su uso de memoria y asegúrese de tener suficiente según su configuración.