max_user_connections

nollsen
hallo,

seit einiger zeit habe ich die fehlermeldung

code:
1:
2:
3:
User ... has already more than 'max_user_connections' active 

connections in .../adodb/drivers/adodb-mysql.inc.php on line 376


den quelltext habe ich überprüft, es findet eine einzige verbindungsaufnahme zum mysql server statt. was kann ich dagegen machen?
support
Hallo,

diese Fehlermeldung tritt in der Regel bei unsauberen Scripten bzw. Scripten mit unsauberen Datenbankdesign auf.
Eine Datenbankabfrage dauert, bei einem korrekt programmierten Script mit zumindest einigermaßen sauberen Datenbankdesign, den Bruchteil einer Sekunde und somit kann diese Fehlermeldung nicht auftreten. Wenn jedoch am Script oder Datenbankdesign gravierende Fehler vorliegen dauert die Datenbankabfrage nicht den Bruchteil einer Sekunde sondern bis zu mehreren Minuten, wenn jetzt in dieser Zeit neue Datenbankverbindungen von dem Script aufgebaut werden, z.B. durch neue Besucher auf der Seite, setzt sich dies immer weiter so fort bis dann irgendwann diese Fehlermeldung erscheint.

Grundsätzlich hilft in so einem Fall leider nur das Script bzw. das Datenbankdesign zu prüfen, die Fehlerursache zu finden und zu beheben.
nollsen
hallo!


ich habe das cms system überprüft und keine besonderen datenbankabfragen gefunden. da alle tabellen max 40 einträge besitzen kann eine abfrage nicht lange dauern.

jetzt habe ich ein andres cms system (phpwcms) ausprobiert, hier kommt die gleiche fehlermeldung.

ist die variable eventuell in der serverkonfiguration zu klein gewählt?

viele grüße
stefan noll
support
Hallo,

da dies bei allen anderen Kunden fehlerfrei funktioniert kann dies nicht zu klein sein.
Mit der Anzahl der Einträge muss dies nicht unbedingt etwas zu tun haben, da dies im Endeffekt schon bei einem Eintrag in der DB (vorausgesetzt das Script ist schlecht genug) vorkommen kann.
Senden Sie uns an support(at)best-webhost.biz bitte einmal den Domainnamen und den Datenbanknamen, wir schauen dann einmal in der Prozessliste nach wie lang die Prozesse dauern und welche dies sind.
nollsen
Hallo!

Vielen Dank an den Support von Best-Webhost für die Lösung des Problems. Ich möchte hier kurz die Lösung des Problems noch anderen zur Verfügung stellen:

Das Problem war, dass Datenbankverbindungen geöffnet wurden, aber nicht mehr beendet wurden. Dies ist eine Eigenschaft von Peristenten Datenbankverbindungen. Im Normalfall werden diese Verbindungen wieder benutzt, wenn eine zweiter Aufruf stattfindet. Bei unserer Seite war dies nicht der Fall, jeder aufruf von mysql_pconnect hat eine neue Verbindung geöffnet die nicht beendet wurde.

Abhilfe dagegen schafft die Verwendung von nichtpersistenten Datenbankverbindungen. Diese werden mit mysql_connect erstellt. Einige CMS Systeme wie phpwcms verfügen über Option, keine persistenten Verbindungen zu erstellen. Auf http://www.phpwcms.de/forum/viewtopic.ph...highlight=mysql wird dies beschrieben.

Bei dem CMS System CMSSimple kann in der Datei include.php die Zeile
code:
1:
$db->PConnect($config["db_hostname"],$config["db_username"],$config["db_password"],$config["db_name"]);

durch
code:
1:
$db->Connect($config["db_hostname"],$config["db_username"],$config["db_password"],$config["db_name"]);


ersetzt werden.

Falls dieses Problem bei anderen Projekten auftritt, kann es analog dazu behoben werden.

Viele Grüße,
Stefan Noll
tondern
Hey nollsen,
danke für die Mühen deine Lösung zusammenzufassen und den anderen hier zur Verfügung zu stellen.
Danke, tondern
Stefz
Ich habe den selben Fehler mit max_user_connection.

// Host: localhost, User: ulf, Paßwort: keines
$link = mysql_pconnect("localhost", "[login]", "[passwort]");
// Datenbank phplib auswählen
$query = "use daten";
if ( !mysql_query($query, $link) )
die("Die Datenbank 'test' existiert nicht.");
// Ermittlung der bekannten User in auth_user
$query = "select FP from Nos_Thef where Sektor=\"$Sektor\"";
$res = mysql_query($query, $link);
if ( !$res )
die("Die Anfrage '$query' konnte nicht ausgeführt werden.");
$i = 0;
while ( $data = mysql_fetch_array($res) )
{
while ( list($key, $value) = each($data))
{
$i = $i + 1;
switch($i)
{
case "1": $FP=$value; break;
}
}
}
// Speicherfreigabe ist optional, aber sinnvoll
mysql_free_result($res);
// ggf. Verbindung schließen.
mysql_close($link);

kann mir wer sagen wie ich das ändern soll? auf meinem vorigen server ging dieser code ohne probleme.

Danke!
Stefz
Ok, ich hatte was überlesen. Mit mysql_connect statt pconnect gehts.

traurig
Early
hallo,

ich habe leider das gleiche problem nur weiß ich nicht wie ich das problem lösen kann unglücklich
bin ein ziemlicher noob in solchen sachen und war froh das der laden irgendwie läuft nur jetzt bekomm ich tagtäglich diese fehlermeldung.

code:
1:
2:
3:
4:
5:
6:
7:
8:
Warning: mysql_connect() [function.mysql-connect]: User kit has already more than 'max_user_connections' active connections in /home/skillisnatural_com/www/phpBB2/db/mysql4.php on line 48

Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in /home/skillisnatural_com/www/phpBB2/db/mysql4.php on line 330

Warning: mysql_errno(): supplied argument is not a valid MySQL-Link resource in /home/skillisnatural_com/www/phpBB2/db/mysql4.php on line 331
phpBB : Critical Error

Could not connect to the database


server 10537

ich habe in einen anderen thread hier im forum gelesen das es an peristenten datenbankverbindungen liegen kann und in der oben genannten mysql4.php habe ich das hier gefunden

code:
1:
	function sql_db($sqlserver, $sqluser, $sqlpassword, $database, $persistency = true)


ich habe das "true" durch ein "false" ersetzt nur hat das leider nichts gebracht und da ich nicht weiß was in der datenbank/script falsch sein könnte bzw wie ich das prüfen sollte bitte ich um hilfe bin ratlos.

grüße

Early
support
Hallo,

das Setzen der Variable ist schonmal ein Anfang Augenzwinkern
Frage ist nur, ob das Script dies dann auch entsprechend auswertet/übernimmt.
Wenn ich Ihre Seite aufrufe und die Prozesse von MySQL beobachte scheint es nicht so. Sie müssten hier den Programmierer Ihres Scriptes fragen welche Variable hinter dem persistency gefordert ist um die persistenten Verbindungen zu deaktivieren.