Error “Too many connections” en MySQL
En ocasiones en las que se cuenta con un servidor MySQL que recibe muchas conexiones es posible que en algún momento se alcance el límite de conexiones posibles y el DBMS quede “inaccesible” para algunos sistemas. Esto puede convertirse en un problema y la solución es bastante trivial.
Por defecto, MySQL acepta como máximo 151 conexiones, definidas en la variable global max_connections. Entonces, lo que se puede hacer es incrementar dicho límite acorde a las necesidades. Para ello, primero conviene consultar cuál es el valor de dicha variable en el propio DBMS.
mysql> show variables; +-----------------------------------------+-------------------------------------------------------------------------------------------+ | Variable_name | Value | +-----------------------------------------+-------------------------------------------------------------------------------------------+ ... | max_connections | 151 | ...
En la salida anterior puede verse que max_connections en este caso tiene el valor por defecto. Se puede cambiar entonces por un nuevo valor de la siguiente forma:
mysql> set global max_connections=500;
Una vez modificado el valor conviene monitorear las conexiones a la base de datos en los momentos de mayor carga para chequear si el valor configurado es el apropiado o si es demasiado alto o demasiado bajo.
mysql> SHOW FULL PROCESSLIST; +------+-------------+--------------------------------------+---------------+---------+------+-------+-----------------------+ | Id | User | Host | db | Command | Time | State | Info | +------+-------------+--------------------------------------+---------------+---------+------+-------+-----------------------+ | 1529 | user1 | server.netstorming.com.ar:42279 | db1 | Sleep | 1327 | | NULL | | 2114 | user1 | server.netstorming.com.ar:33313 | db1 | Sleep | 1027 | | NULL | | 2205 | user2 | server.netstorming.com.ar:60471 | db2 | Sleep | 280 | | NULL | | 2504 | user2 | server.netstorming.com.ar:60581 | db2 | Sleep | 613 | | NULL | | 2584 | root | localhost | NULL | Query | 0 | NULL | SHOW FULL PROCESSLIST | +------+-------------+--------------------------------------+---------------+---------+------+-------+-----------------------+
Es importante tener precaución al incrementar el valor de max_connections debido a que cada conexión consume memoria RAM y podría llegar a saturar el equipo si no se lo escoge con cuidado.
Recuperar la contraseña de Windows
Hoy me encontré ante la necesidad de recuperar la contraseña de Administrador de Windows XP olvidada por el usuario de la PC. Este trabajo es extremadamente sencillo valiéndose de la utilidad chntpw que existe para Linux. Para llevar a cabo la recuperación de la contraseña es necesario iniciar el equipo con un Live CD de Ubuntu e instalar dicha utilidad.
root@ubuntu:/home/ubuntu# aptitude install chntpw
Una vez instalada la aplicación se debe montar el disco que contiene la instalación de Windows. En mi caso:
root@ubuntu:/home/ubuntu# mkdir tmp root@ubuntu:/home/ubuntu# mount /dev/sda1 tmp/
Hecho lo anterior ya es posible utilizar el programa instalado. Mediante el mismo se pueden listar todos los usuarios que existen cargados en el archivo de usuarios de Windows. Para ello, chntpw necesitará del archivo de contraseñas. El mismo se ubica normalmente en la carpeta system32/config/SAM, dentro de la carpeta de instalación de Windows.
root@ubuntu:/home/ubuntu# chntpw -l tmp/WINDOWS/system32/config/SAM chntpw version 0.99.5 070923 (decade), (c) Petter N Hagen Hive name (from header): <\SystemRoot\System32\Config\SAM> ROOT KEY at offset: 0x001020 * Subkey indexing type is: 666c Page at 0x7000 is not 'hbin', assuming file contains garbage at end File size 262144 [40000] bytes, containing 6 pages (+ 1 headerpage) Used for data: 230/19072 blocks/bytes, unused: 8/5312 blocks/bytes. * SAM policy limits: Failed logins before lockout is: 0 Minimum password length : 0 Password history count : 0 | RID -|---------- Username ------------| Admin? |- Lock? --| | 01f4 | Administrador | ADMIN | dis/lock | | 03e8 | Asistente de ayuda | | dis/lock | | 03eb | ASPNET | | | | 01f5 | Invitado | | dis/lock | | 03ea | SUPPORT_388945a0 | | dis/lock |
El próximo paso es elegir el usuario que se desee y cambiarle la contraseña. En esta oportunidad, mi intención era sólo quitarle la misma para poder iniciar sesión en el equipo y que luego el usuario asigne una nueva.
root@ubuntu:/home/ubuntu# chntpw -u Administrador tmp/WINDOWS/system32/config/SAM chntpw version 0.99.5 070923 (decade), (c) Petter N Hagen Hive name (from header): <\SystemRoot\System32\Config\SAM> ROOT KEY at offset: 0x001020 * Subkey indexing type is: 666c Page at 0x7000 is not 'hbin', assuming file contains garbage at end File size 262144 [40000] bytes, containing 6 pages (+ 1 headerpage) Used for data: 230/19072 blocks/bytes, unused: 8/5312 blocks/bytes. * SAM policy limits: Failed logins before lockout is: 0 Minimum password length : 0 Password history count : 0 | RID -|---------- Username ------------| Admin? |- Lock? --| | 01f4 | Administrador | ADMIN | dis/lock | | 03e8 | Asistente de ayuda | | dis/lock | | 03eb | ASPNET | | | | 01f5 | Invitado | | dis/lock | | 03ea | SUPPORT_388945a0 | | dis/lock | ---------------------> SYSKEY CHECK <----------------------- SYSTEM SecureBoot : -1 -> Not Set (not installed, good!) SAM Account\F : 1 -> key-in-registry SECURITY PolSecretEncryptionKey: -1 -> Not Set (OK if this is NT4) ***************** SYSKEY IS ENABLED! ************** This installation very likely has the syskey passwordhash-obfuscator installed It's currently in mode = -1, Unknown-mode SYSTEM (and possibly SECURITY) hives not loaded, unable to disable syskey! Please start the program with at least SAM & SYSTEM-hive filenames as arguments! RID : 0500 [01f4] Username: Administrador fullname: comment : Cuenta para la administración del equipo o dominio homedir : User is member of 1 groups: 00000220 = Administradores (which has 1 members) Account bits: 0x0014 = [ ] Disabled | [ ] Homedir req. | [X] Passwd not req. | [ ] Temp. duplicate | [X] Normal account | [ ] NMS account | [ ] Domain trust ac | [ ] Wks trust act. | [ ] Srv trust act | [ ] Pwd don't expir | [ ] Auto lockout | [ ] (unknown 0x08) | [ ] (unknown 0x10) | [ ] (unknown 0x20) | [ ] (unknown 0x40) | Failed login count: 6, while max tries is: 0 Total login count: 178 - - - - User Edit Menu: 1 - Clear (blank) user password 2 - Edit (set new) user password (careful with this on XP or Vista) 3 - Promote user (make user an administrator) 4 - Unlock and enable user account [probably locked now] q - Quit editing user, back to user select Select: [q] > 1 Password cleared! Hives that have changed: # Name 0 Write hive files? (y/n) [n] : y 0 - OK
Con lo anterior sólo falta desmontar el disco y reiniciar el equipo para volver a tener acceso a la cuenta del usuario sin necesidad de una contraseña.
Recuperar contraseña de root en FreeBSD
Ya no recuerdo cuántos posts de recuperación de contraseña he escrito, se ve que es bastante común que me equivoque al cambiarla…
Por suerte, el procedimiento con FreeBSD es extremadamente sencillo. Sólo basta con iniciar el sistema en modo monousuario, elegir la terminal a ejecutar (por defecto es /bin/sh) y luego:
# mount -a # passwd # reboot
Eso sí, siempre es conveniente recordar la contraseña que se ingresó, para no volver a tener que pasar por el mismo proceso!
Xen Server 5.6 no bootea
En el día de hoy realicé la instalación de un Xen Server 5.6 sobre un disco SATA y, luego de que la misma finalizara con éxito, me encontré con que el sistema no booteaba, tirando los mensajes que se ven a continuación.
Setting hostname myserver: OK INFO: task nash:5244 blocked for more than 120 seconds. "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
La solución a esto se puede ver en el foro de Citrix y consiste en reemplazar la línea que se muestra a configuración en el archivo /etc/rc.d/rc.sysinit:
[ -x /sbin/nash ] && echo "raidautorun /dev/md0" | nash --quiet
Por esta otra:
/sbin/mdadm -A /dev/md0 <dispositivo 1> <dispositivo 2>
En mi caso no agregué la última línea sino que sólo comente la primera debido a que no tengo ningún RAID en mi sistema (por ahora). Lo que se debe tener en cuenta es que la línea que se está reemplazando autodetecta el RAID y la segunda lo configura manualmente. El problema que puede generar esto es que si por algún motivo se invierte el orden de los discos el RAID se degradaría.
Problema con CentOS y OpenSSL
Intentando habilitar HTTPS en el servidor web me encontré con el siguiente problema:
(network.c.336) SSL: error:00000000:lib(0):func(0):reason(0)
Los certificados estaban bien, el servidor contaba con soporte para SSL, la librería de SSL estaba instalada. Todo el chequeo de rutina se veía bien. Al buscar en Internet me encontré con que aparentemente el problema estaría asociado a la versión 5_4.6 de OpenSSL en CentOS. Cuando chequeé mi sistema esa era la versión que estaba utilizando.
Por fortuna, la solución es bastante sencilla y se puede resumir en los siguientes pasos:
- Eliminar las dependencias del paquete openssl-0.9.8e-12.el5_4.6.i686.
- Instalar el paquete openssl-0.9.8e-12.el5_4.1.i686.
En mi caso, la única dependencia del paquete mencionado era openssl-devel.i386, paquete que, como no necesitaba, eliminé del sistema. Luego, simplemente instalé el anterior paquete de openssl con el siguiente comando:
rpm -Uhv --force openssl-0.9.8e-12.el5_4.1.i686.rpm
He decidido subir al servidor de NetStorming el paquete tanto para la arquitectura i386 como para la arquitectura x86_64. No probé en x86_64, pero presumo que la solución debe funcionar de la misma manera; de lo contrario agradecería que me lo hicieran saber.



