Errores de Conexion
Posted by:
Sonia Vazquez ()
Date: September 24, 2009 09:43PM
En estos días están siendo frecuentes estos errores
2005.Unknown MySQL server host 'mysql' (0)
2004.Can't create TCP/IP socket (24).
La aplicación maneja threads.Esta desarrollada en lenguaje C sobre Centos 5.3 Una breve descripcion del funcionamiento seria el sgte. Cada hilo se conecta a la base de datos. Realiza operaciones sobre tablas, cierra la conexión y termina el hilo.
Lo raro es que el momento del problema de conexión no es constante. Supongamos que quiero conectarme 1000 veces..
De esas 1000 veces son 250 la que tienen errores de conexion. Se dan de forma alternada.. 20 veces se conecta.. 2 no. Luego de nuevo 100 se conectan 15 no..
El comportamiento varia mucho.
Lo último que hice hoy fue probar solo la conexión a la base de datos. El resto del funcionamiento de la aplicación fue comentado(insert, update, delete, etc).
Sinceramente no se que puede ser.. que estaré haciendo mal....
Esta es la función que realiza la conexión.
int makeMysqlConnect(MYSQL *dbConn, const char *szHost, const char *szUser, const char *szPass,
const char *szDatabase, unsigned int iPort)
{
time_t hora_inic, hora_fin;
int temps;
hora_inic = time(NULL);
pthread_t tid = pthread_self();
printf("[%lu]szHost %s\n", tid,szHost);
printf("[%lu]szUser %s\n", tid,szUser);
printf("[%lu]szPass %s\n", tid,szPass);
printf("[%lu]iPort %d\n", tid,iPort);
if (mysql_init(dbConn))
{
if (mysql_real_connect(dbConn, szHost , szUser, szPass, NULL, iPort , NULL, 0))
{
if(!mysql_select_db(dbConn, szDatabase))
{
printf("[%lu]Fallo en seteo de autocommit = false. %u.%s\n", tid, mysql_errno(dbConn), mysql_error(dbConn));
closeMysql(dbConn);
return GENERIC_ERROR;
}
else
{
printf("[%lu]Fallo en la seleccion de base de datos. %u.%s\n", tid, mysql_errno(dbConn), mysql_error(dbConn));
closeMysql(dbConn);
return GENERIC_ERROR;
}
}
else
{
printf("[%lu]Fallo en la conexion a la base de datos. %u.%s\n", tid, mysql_errno(dbConn), mysql_error(dbConn));
closeMysql(dbConn);
return GENERIC_ERROR;
}
}
else
{
printf("[%lu]No se puedo crear el objeto MYSQL\n", tid);
return GENERIC_ERROR;
}
hora_fin = time(NULL);
temps=hora_fin - hora_inic;
printf("[%lu]Tiempo ejecucion en conectarse a la BD : %d segs\n",tid, temps);
return PROCESS_OK;
}
Estoy atenta a comentarios. Muchas Gracias!