Seite 2 von 4

Re: more than 'max_user_connections' active connections

Verfasst: 08.01.2009 19:14
von Stonewoman
Hallo,

ich hab meinen Provider angeschrieben und hab folgende Antwort bekommen:
heute Vormittag konnte der Techniker nur Empfehlen Ihren Account
(Datenbank
xxx) zu deaktivieren, damit die anderen
Kunden
des Servers nicht weiter in Mitleidenschaft gezogen werden,da Ihr Forum
massiv viele DB Verbindungen öffnet und offen hielt, die Anfragen sind
mittlerweile zurück gegangen.

Auszug/Momentaufnahme heute Mittag:(Die Zahlen 608, 584 etc zeigen die
Sekunden seit dem die Verbindung schon gehalten wird)

4422146 xxx localhost xxx Query 608 Locked UPDATE
phpbb3_sessions SET session_time = 1231241736, session_page =
'search.php', session_forum_id = 0 WHERE session_id =
'9ae28e82549ef474f4067a50ace0a4bc

Mittlerweile haben die Anfragen nachgelassen und der Server sich
beruhigt.

Mit freundlichen Grüßen'
Nach meiner Nachfrage, was denn nun zu tun sei bekam ich diese Antwort:
Hallo,

das weis ich nicht, um dies zu beurteilen müsste jemand hunderte
Zeilen Log File durchgehen und versuchen heraus zu finden wer
dort und warum auf Ihrer Webseite war und was dort exakt wie
oft von wo aus aufgerufen wurde, allerdings fürchte ich das
niemand die dafür nötige Zeit investieren oder bezahlen möchte :-/

Wenn Sie einen versuch wagen möchten, die Log Files werden vom
System Nächtlich in den Ordner Logs ihres FTP Accounts gelegt.

Mit freundlichen Grüßen
Und heute war mein Forum wieder fast 2 Stunden nicht zu erreichen... Tolle Aussichten...

Grüße, Stoni.

Re: more than 'max_user_connections' active connections

Verfasst: 08.01.2009 19:21
von brummel
maxundmoritz hat geschrieben:Ich weiß nicht, ob es daran liegt.
Wir hatten teilweise 500 User online und es ging trotzdem!
Das kann ich von mir auch bestätigen, 400-500 gleichzeitige User haben das Problem noch nicht "provoziert".
Wenn es hin und wieder dazu kommt, waren zwischen 20 und 60 User online.

Re: more than 'max_user_connections' active connections

Verfasst: 08.01.2009 19:38
von Stonewoman
Ich hatte vor der Fehlermeldung auch nur um die 20 User online...

Re: more than 'max_user_connections' active connections

Verfasst: 09.01.2009 02:26
von maxundmoritz
Stonewoman hat geschrieben:Hallo,

ich hab meinen Provider angeschrieben und hab folgende Antwort bekommen:
heute Vormittag konnte der Techniker nur Empfehlen Ihren Account
(Datenbank
xxx) zu deaktivieren, damit die anderen
Kunden
des Servers nicht weiter in Mitleidenschaft gezogen werden,da Ihr Forum
massiv viele DB Verbindungen öffnet und offen hielt, die Anfragen sind
mittlerweile zurück gegangen.

Auszug/Momentaufnahme heute Mittag:(Die Zahlen 608, 584 etc zeigen die
Sekunden seit dem die Verbindung schon gehalten wird)

4422146 xxx localhost xxx Query 608 Locked UPDATE
phpbb3_sessions SET session_time = 1231241736, session_page =
'search.php', session_forum_id = 0 WHERE session_id =
'9ae28e82549ef474f4067a50ace0a4bc

Mittlerweile haben die Anfragen nachgelassen und der Server sich
beruhigt.

Mit freundlichen Grüßen'
Nach meiner Nachfrage, was denn nun zu tun sei bekam ich diese Antwort:
Hallo,

das weis ich nicht, um dies zu beurteilen müsste jemand hunderte
Zeilen Log File durchgehen und versuchen heraus zu finden wer
dort und warum auf Ihrer Webseite war und was dort exakt wie
oft von wo aus aufgerufen wurde, allerdings fürchte ich das
niemand die dafür nötige Zeit investieren oder bezahlen möchte :-/

Wenn Sie einen versuch wagen möchten, die Log Files werden vom
System Nächtlich in den Ordner Logs ihres FTP Accounts gelegt.

Mit freundlichen Grüßen
Und heute war mein Forum wieder fast 2 Stunden nicht zu erreichen... Tolle Aussichten...

Grüße, Stoni.
offtopic, aber wer ist denn Dein Provider? Ich habe noch nie so eine unprofessionelle Rechtschreibung und Ausdrucksweise eines Unternehmens gelesen :x

Re: more than 'max_user_connections' active connections

Verfasst: 09.01.2009 11:22
von Stonewoman
maxundmoritz hat geschrieben:aber wer ist denn Dein Provider?
Ich bin bei Suleitec.

Re: more than 'max_user_connections' active connections

Verfasst: 16.01.2009 15:16
von Stonewoman
Hallo,

mittlerweile kotzt mich diese Fehlermeldung echt an. Sie kommt jeden Tag in einem Zeitraum von 1 bis 2 Stunden. Es sind aber immer nur ein paar User im Board... Gibt es nicht irgendwas, was ich da machen kann?

Würde mich ja gerne noch mal an meinen Provider wenden, aber was soll ich ihm schreiben, was er tun soll??

Grüße, Stoni.

Re: more than 'max_user_connections' active connections

Verfasst: 16.01.2009 18:35
von maxundmoritz
Die sollen Euch auf einen stärkeren Server packen. Was für die natürlich auch eine Kostenfrage ist.

Re: more than 'max_user_connections' active connections

Verfasst: 02.04.2009 19:58
von brummel
4seven hat geschrieben:bei einem eigenen server:
Du solltest zuerst persistente MySQL-Verbindungen in der php.ini abschalten, falls noch nicht geschehen.

Ersetze:

Code: Alles auswählen

[MySQL]
; Allow or prevent persistent links.
mysql.allow_persistent = On
mit:

Code: Alles auswählen

[MySQL]
; Allow or prevent persistent links.
mysql.allow_persistent = Off
Danach Apache neustarten.

Auch solltest du die maximale Anzahl der Verbindungen am MySQL-Server ändern. Dazu in der Datei /etc/my.cnf oder /etc/mysql/my.cnf folgende Option im Abschnitt [mysqld] hinzufügen bzw. anpassen:

Code: Alles auswählen

max_connections = 1000
Danach MySQL neustarten.
Mein Provider schreibt mir dazu
diese Einstellung muss von Seiten Ihres Scriptes ausgehen, dieses wird bzw. kann nicht Serverseitig von uns eingestellt werden.

Wo genau es aber bei Ihren Scripten steht müssten Sie bei den Hersteller des Scriptes nachfragen. Meist steht ein entsprechender Zusatz dazu in der Konfigurationsdatei die die Verbindungsdaten zur MySQL-Datenbank hat.

Hier nur mal ein Beispiel aus einer anderen Datei:
define('USE_PCONNECT', 'false'); // use persistent connections?
Wie und wo stelle ich das dann in phpBB3 um?

Re: more than 'max_user_connections' active connections

Verfasst: 10.04.2009 19:43
von brummel
brummel hat geschrieben: Wie und wo stelle ich das dann in phpBB3 um?
Nochmal nachfrag :oops:

Re: more than 'max_user_connections' active connections

Verfasst: 11.04.2009 12:06
von Ottokar
@brummel: stand auf der Seite 1 dieses Themas hier: http://www.phpbb.de/community/viewtopic ... 9#p1067547
Ob das in der config. php der Version 3.x von phpbb noch so funktioniert, weis ich allerdings nicht, denn die Variable taucht in den Dateien von phpbb 3.x nirgendwo auf.

Edit: funktioniert nicht!
Diese Variable heist bei phpbb 3.x '$persistency' und wird in den datenbankspezifischen Dateien unter 'root\includes\db' abgetestet, d.h. wenn die Datenbank persistent connections zulässt, werden diese automatisch benutzt. Einfache Lösung wäre, alle 'mssql_pconnect' in 'mssql_connect' zu ändern, bzw. (sauberer) den Test zu umgehen und daraus eine einfache Zuweisung zu machen. Mal am Beispiel der mssql.php, aus:

Code: Alles auswählen

		if (version_compare(PHP_VERSION, '5.1.0', '>=') || (version_compare(PHP_VERSION, '5.0.0-dev', '<=') && version_compare(PHP_VERSION, '4.4.1', '>=')))
		{
			$this->db_connect_id = ($this->persistency) ? @mssql_pconnect($this->server, $this->user, $sqlpassword, $new_link) : @mssql_connect($this->server, $this->user, $sqlpassword, $new_link);
		}
		else
		{
			$this->db_connect_id = ($this->persistency) ? @mssql_pconnect($this->server, $this->user, $sqlpassword) : @mssql_connect($this->server, $this->user, $sqlpassword);
		}
wird

Code: Alles auswählen

		if (version_compare(PHP_VERSION, '5.1.0', '>=') || (version_compare(PHP_VERSION, '5.0.0-dev', '<=') && version_compare(PHP_VERSION, '4.4.1', '>=')))
		{
			$this->db_connect_id = @mssql_connect($this->server, $this->user, $sqlpassword, $new_link);
		}
		else
		{
			$this->db_connect_id = @mssql_connect($this->server, $this->user, $sqlpassword);
		}
d.h. statt dem Test auf persistent connections und anschließdender Zuweisung dieser oder normaler connections wird gleich die Zuweisung auf non persistent connections vorgenommen. Das müsste dann analog in allen Dateien:
- firebird.php
- mssql.php
- mssql_odbc.php
- mysql.php
- mysqli.php
- oracle.php
- postgres.php
- sqlite.php
bzw. nur der für den vorliegenden Datenbanktyp verwendeten geändert werden.
___________
Ich habe auch schon mehrere dieser Fehlermeldungen erhalten, obwohl nachweislich des Datenbanklogs nur max. 25 persistent connections offen waren und das mit der Fehlermeldung angezeigte Limit deutlich höher liegt. Ich habe deshalb einen anderen Verdacht, was die Ursache betrifft.
Es werden ja mehrere Webserver auf einer Maschine virtualisiert, wenn man nicht gerade einen eigenen Server betreibt oder gemietet hat.
Ich vermute nun, da die Storage ja unabhängig von der Virtualisierung auf der Hardware läuft, dass die Fehlermeldung tatsächlich von dort kommt, d.h. nicht die für den eigenen Webserver virtualisierte Datenbank hat zu viele persistent connections, sondern die tatsächlich physisch auf der Hardware befindliche. D.h. es werden dabei alle persistent connections aller auf der Hardware virtualisierten Datenbanken zusammengezählt.
Das würde alles erklären.
Zu beheben wäre die Ursache dann nur, indem der Provider weniger Kunden auf einen Server packt oder man sich einen Povider sucht, dessen Virtualisierungssoftware und Hardware leistungsfähiger ist.