Archiv verlassen und diese Seite im Standarddesign anzeigen : Mysql ! Ich weiss nicht mehr weiter !
Hallo !
Ich bekomme in meinen Webseiten immer folgenden Fehler ! keine Verbindung möglich: Too many connections ! Kommt aber nicht immer !
Gut dachte ich , stellste den max_connections auf 500
Die Unterbrechungen kommen trotzdem weiterhin !
Hat einer einen Rat ?
Gruß Mario
Hallo
Wer macht den die vielen connections auf?
Thomas
Ich weiss leider nicht wo ich das Kontrollieren kann ob es überhaupt daran liegt ! Ich hab Debian drauf !
supperlocalhost
19.05.04, 20:44
viel leicht mit
netstat -n
Ich weiss leider nicht wo ich das Kontrollieren kann ob es überhaupt daran liegt ! Ich hab Debian drauf !
Stanislaus
19.05.04, 20:52
Einfach als SQL Query "SHOW PROCESSLIST" absetzten und Du bekommst alle Verbindungen aufgelistet.
Bis neulich ...
Es ist eine lange liste mit wo immer wieder am ende /var/run/mysql/mysql.sock steht ! Aber verstehen tu ich es nicht !
Ich kann Leider aus dem Putty nicht rauskopieren, sonst hätte ich sie mal hier anzeigen lassen .
netzmeister
20.05.04, 10:01
Hallo,
fast immer sind das fehlerhafte php-Scripte.
Viele Grüße
Eicke
Hallo !
Aber wie finde ich dann das richtige ? Ich hab ein Größeres Projekt in der art wie Klamm.de
Gruß und Danke
Mario
netzmeister
20.05.04, 10:41
Hallo coilibri,
Deine Seite hängt ja :o auch.
Stoppe mal den Apachen und das mysql. Dann fährst Du zuerst den
mysql hoch. Danach den Apachen.
Auf eine Konsole lässt Du Dir die Serverlast anzeigen. Auf der anderen
das Log des Webservers.
Bei stark besuchten Seiten gleicht die Konfiguration von Apache/PHP/Mysql
einer kleinen Doktorarbeit. Hier muss man beobachten und sich gut auskennen.
Setze mal in der Apache Konfig
KeepAliveTimeout 15
Viele Grüße
Eicke
Hallo Eicke ,
Ich habe jetzt auf verdacht erst mal das ganze Projekt gelöscht !
Werde dann die Grundsache neu hochfahren, im moment scheint dadurch ruhe zu sein.
Ich habe im moment nicht mehr wie 200 Besucher am Tag ! Ich denke das kann es noch nicht so sein.
Gruß Mario
netzmeister
20.05.04, 11:01
Hallo Mario,
da ist definitiv irgendwo der Wurm drin.
Bei der Userzahl sollte es keine Probleme geben.
Für mich das so aus, als ob die PHP-Scripte nicht sauber beendet
werden. So bleibt der Prozess offen. Daher gehen Dir die Verbindungen
zur Datenbank aus.
Viele Grüße
Eicke
Hi colibri,
dein Problem sind die PHP-Scripte.
Solange MySQL keine Signal zum Abbau der Verbindung bekommt, bleibt die Verbindung zur Datenbank offen; solange bis die DB neu gestartet wird.
Prüfe ob du überall die Funktion "mysql_close();" eingebunden hast, wenn nicht solltest du es nachholen, bei allen Skripten.
Falls du doch diese Funktion eingebunden hast, dann schreib mal welche MySQL Version du hast.
Und als zweiten schritt, würde ich dir den Tip von netzmeister zu herzen nehmen.
Gruß
Peredur :D
Hey, Du könntest mal probieren mysql_connect(...); durch mysql_pconnect(...); zu ersetzen. So erzeugt er nicht immer eine neue Verbindung, sondern nützt falls schon vorhanden diese Verbindung.
MfG smog_at
Hallo und Danke für Eure Tips ! Das Problem kam aber auf einmal, und war vorher nie da gewesen !
Gruß Mario
johnpatcher
20.05.04, 19:50
ähm ich bin mir nicht ganz sicher, aber mysql_close(); kann man wenn man nur mysql_connect() nutzt wegglassen, denn dann wird am ende des scripts die verbindung automatisch geschlossen, oder nicht? mysql_close(); braucht man doch nur für mysql_pconnect(); oder wenn man "sauber" programmiert ;).
mysql_pconnect(); ist ja ein dauernde verbindung die expliziet geschlossen werden muss ...
zumindest habe ich das noch irgendwie im gedächtnis .. kan aber sein, dass ich mich irgendwie täusche, bin mir aber relativ sicher ...
schonmal ne andere apache version benutzt? oder schau mal nach apache test "servern", die dann eine bestimmte anzahl an verbindungen simulieren und dann die ausnutzung usw mitloggen ...
johnpatcher
Hallo !
Wo kann ich das testen ? Es geht um www.micoins.de
Gruß Mario
johnpatcher
20.05.04, 20:14
es gibt verschiedene programme ...
ich hatte da mal nen bericht, mal schauen ob ich noch find ...
wenn ja werde ich die beiträge reinposten
johnpatcher
ähm ich bin mir nicht ganz sicher, aber mysql_close(); kann man wenn man nur mysql_connect() nutzt wegglassen, denn dann wird am ende des scripts die verbindung automatisch geschlossen, oder nicht?
johnpatcher
Ja, und du sagst es. SAUBER PROGRAMMIEREN :D
mysql_close(); braucht man doch nur für mysql_pconnect(); oder wenn man "sauber" programmiert ;).
johnpatcher
mysql_close(); hat keine Auswirkung auf mysql_pconnect(); siehe Link
http://de.php.net/manual/de/function.mysql-pconnect.php
mysql_pconnect(); ist ja ein dauernde verbindung die expliziet geschlossen werden muss ...
johnpatcher
Ja
Eine andere Frage an colibri.
Logfiles, wie währe es wenn du unter Apache (V-Host) und MySQL mal nachschaust was dort steht, bei solchen Problemen dürfte ja was drin stehen.
....
/var/log/apache oder /var/log/httpd (Je nach Linux Distribution)
/var/lib/mysql und hier sollte mysql.log existieren, ja nach dem wie man MySQL installiert hat
....
Gruß
Peredur :)
also da gibt es mehrere moeglichkeiten,
es kann auch sein das du ein problem in deiner mysql configuration hast.
du solltest das wait_timeout=10 setzen, damit die connections nach 10 sekunden nichts tun sterben.
das problem mit dem max_connections kannst du nicht damit erschlagen das du einfach mehr zulässt, das ist genau falsch, ich weiss nicht ob du mit innodb tabellen arbeitest aber wenn nicht, blockieren sich die query dann nur gegenseitig und du hast dann ein deadlock.
die maxconnections wuerde ich je nach rechner zwischen 50 und 200 setzen, wobei die 200 dann schon ne grosse kiste sein muss, so dual xeon mit scsi usw.
die sache mit dem mysql_close in php kannst du vergessen, auch wenn du das angibst wird die verbindung erst geschlossen wenn das script BEENDET ist, habe ich selbst getestet.
also am einfachsten findest du die seite mit den problem wenn du
alle andere user aussperrst un dann mal schaust welche seite besonders lange beim laden braucht..
klingt fuer mich als wenn du ein paar tabellen joinst aber die where bedingung nicht vollständig ist, das kommt öffter vor ;).
ansonsten kannst du auch vor jeden query einen kommentar setzen, den siehst du dann auch in der processliste.
*/ script name */ dann findest du eventuelle engpaesse schneller.
dann darf man by mysql nicht vergessen die tabellen zu indizieren, das muss allerdings sinnvoll gemacht werden.
du kannst auch deine querys testen indem du einfach ein explain drauf machst, da bokommst du dann angezeit welche keys benutzt werden.
so ich hoffe du findest was du suchst.
cu madnobody
johnpatcher
21.05.04, 12:41
mysql_close(); hat keine Auswirkung auf mysql_pconnect(); siehe Link
http://de.php.net/manual/de/function.mysql-pconnect.php
ist zwar kein phpforum, aber wie kann ich dann ne pconnect(); verbindung schließen?
vielen dank
johnpatcher
ist zwar kein phpforum, aber wie kann ich dann ne pconnect(); verbindung schließen?
vielen dank
johnpatcher
Das ist eine sehr gute frage, leider kann ich dir keine Antwort darauf geben.
Diese Frage wurde bereits im PHP-Forum gestellt, vor circa 2 Jahren.
http://www.phpforum.de/forum/showtopic.php?threadid=3207&highlight=mysql_pconnect()
Keine Antwort ist auch eine Antwort. :confused:
In der PHP-Dokumentation habe ich leider nichts gefunden.
Darum bleibe ich bei meinem alt bewährtem mysql_connet(); und mysql_close();
Gruss
Peredur :D
Darum bleibe ich bei meinem alt bewährtem mysql_connet(); und mysql_close();
Gruss
Peredur :D
mysql_close() ist definitiv nicht nötig:
Die Verwendung von mysql_close() ist für gewöhnlich nicht notwendig, weil offene, nicht persistente Verbindungen automatisch mit Beendigung des PHP-Skripts geschlossen werden.
Quelle: http://ch.php.net/mysql_close
johnpatcher
21.05.04, 19:03
mysql_close() ist definitiv nicht nötig:
Quelle: http://ch.php.net/mysql_close
auch ich bin es gewohnt mit mysql_close(); den zeiger zu schließen, genauso wie dateizeiger usw ...
ist wohl ne sache der sauberkeit und gewohnheit, naja jedem das seine ;)
johnpatcher
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.