2009-12-04 5 views
2

Je testais juste un petit script dans Prolog pour vérifier la connexion MySQL. La connexion échoue aléatoirement, après avoir effectué plus de 3000 connexions. Existe-t-il une limite dans MySQL pour le nombre de connexions?La connexion mysql échoue après plus de 3000 tentatives

:-dynamic db_connection/1. 

sanity_check_open_db:- 
      odbc_connect('myDSN', _, 
      [ user(bob), 
       password(pop), 
       alias(myDSN), 
       open(once) 
      ]), 

      ( db_connection(_), 
       retractall(db_connection(_)) 
      ; assert(db_connection(myDSN))). 

sanity_chec_close:- 
      ( db_connection(C), 
       odbc_disconnect(C), 
       retractall(db_connection(C)) 
      ; write('Error: No connection opened to close')). 

sanity_check_open_close(10000). 

sanity_check_open_close(N):- 
    format(atom(C),'~wth Iteration~n',[N]), 
    write(C), 
      sanity_check_open_db, 
      sanity_chec_close, 
      N1 is N + 1,!, 
      sanity_check_open_close(N1). 

Répondre

2

Les connexions TCP utilisent la mémoire du noyau, même après leur fermeture. Si vous dites:

netstat -na |grep WAIT 

Je pense que vous trouverez que la plupart de ces 3000 connexions sont encore à l'état TIME_WAIT, qui dure généralement 120 secondes. Il pourrait être optimisé à une valeur inférieure dans votre cas, mais toujours assez long, comme 30 secondes. Si votre programme peut faire assez de connexions dans ce temps, vous pouvez exécuter le noyau de la mémoire réservée pour le suivi des connexions TCP.

+0

Mais quand j'essaye le même script en utilisant le serveur MSSQL, avec 10000 tentatives de connexion, ça va bien. C'est une grosse surprise. – JPro

+0

Effectuez le contrôle netstat. Vous pouvez constater que les connexions sont laissées dans un autre état, soit un état WAIT différent ou quelque chose comme FIN_RCVD, qui indique que votre pilote de base de données sous-jacente ne ferme pas la connexion correctement. –

+0

Je suppose que depuis que vous avez accepté ma réponse, vous avez trouvé une solution. Se soucier de partager? –

Questions connexes