Probleme mit Verbindungen bei MySQL

edvsb

Registered User
Hallo zusammen,

nun, nachdem mein Server ansich die letzten 9 Wochen stabil lief gehen die Probleme nun los.

Ich habe vor etwa 40 Minuten den Server rebootet. MySQL sagt mir seither 5.043 Verbindung insgesamt. Nun aber seit 5 Minuten habe ich auch 2.739 Fehlgeschlagene. Heute Nacht war auch der ganze Server tot "cannot allocate memory". Nach einem Neustart ging es dann wieder, aber es gab Probleme mit MySQL. Nun habe ich den Server halt nochmal rebootet, alles lief etwa 35 Minuten gut, aber nun ist das mit dem MySQL wieder.

Die Angaben sind sperlich, ich weiß, aber mehr habe ich nicht gefunden. In den Logs stehen keine Fehler. Zugreifen kann ich auch ganz normal auf die Seite, aber das mit dem MySQL beunruhigt mich schon.

Hat jemand einen Tip für mich was das sein kann?

P.S. Jetzt, 3 Minuten später sind es schon 4.102 fehlgeschlagene Verbindungen.

Danke euch schon mal

Gruß, Ingo

Edit, jetzt nach dem Gruß sind es bereits 4.701 Fehlschläge. Zugriffe laut Apache Logfile sind 5. Das kann alles nicht stimmen.
 
Last edited by a moderator:
Tja, ein Blick in die Kristallkugel sagt mir, daß hier jemand vergessen hat folgende Punkte zu checken:
a) Logfiles!
b) mysqladmin -uroot -p processlist

huschi.
 
Hi Huschi,

also gut. Nun erst mal Punkt b:
Code:
h825672:~ # mysqladmin -uadmin -p processlist
Enter password:
+--------+-------+-----------+----+---------+------+-------+------------------+
| Id     | User  | Host      | db | Command | Time | State | Info             |
+--------+-------+-----------+----+---------+------+-------+------------------+
| 170426 | admin | localhost |    | Query   | 0    |       | show processlist |
+--------+-------+-----------+----+---------+------+-------+------------------+

logfiles folgen, habe ich nämlich wieder deaktiviert, aber wie gesagt, stand nix drinnen ausser den Systemneustarts. Und mit nichts meine ich nix, empty, leer...:rolleyes:

Ok, Ich editiere mal nach und nach, denn Logfiles hat mein mysql viele gleiche an unterschiedlichen stellen....
/var/lib/mysql/mysqld.log -> ist komplett leer
h825672-slow.log -> da stehen einzelne queries drinnen, dürfte aber uninterresant sein, oder?

Hier ein Auszug aus dem mysql.log.1 -> nur die Systemstarts
Code:
060611 16:35:42  mysqld started
060611 16:35:42  InnoDB: Started; log sequence number 0 80152883
/usr/sbin/mysqld: ready for connections.
Version: '4.1.10a-log'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  SUSE MySQL RPM
060611 23:24:39 [Note] /usr/sbin/mysqld: Normal shutdown

060611 23:24:39  InnoDB: Starting shutdown...
060611 23:24:42  InnoDB: Shutdown completed; log sequence number 0 80697573
060611 23:24:42 [Note] /usr/sbin/mysqld: Shutdown complete

060611 23:24:42  mysqld ended

060611 23:26:46  mysqld started
060611 23:26:47  InnoDB: Started; log sequence number 0 80697573
/usr/sbin/mysqld: ready for connections.
Version: '4.1.10a-log'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  SUSE MySQL RPM
060612  1:59:40 [Note] /usr/sbin/mysqld: Normal shutdown

060612  1:59:41  InnoDB: Starting shutdown...
060612  1:59:42  InnoDB: Shutdown completed; log sequence number 0 80748171
060612  1:59:43 [Note] /usr/sbin/mysqld: Shutdown complete

060612 01:59:43  mysqld ended

060612 02:01:48  mysqld started
060612  2:01:49  InnoDB: Started; log sequence number 0 80748171
/usr/sbin/mysqld: ready for connections.
Version: '4.1.10a-log'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  SUSE MySQL RPM

/var/log/mysqld.log -> ist auch komplett leer
/var/log/mysqlderror.log -> ist komplett leer

Gibts noch mehr Logfiles zu mySQL ?

Gruß, Ingo
 
Last edited by a moderator:
Wenn in den MySQL Logs nichts steht ...
Dann ist mir nicht ganz transparent woher die Informatione mit den Verbindungen kommt, kannst Du vielleicht beschreiben, in welcher Anwendung, in welchem Dialog und wie beschrieben Du diese Information ueber die tausenden Verbindungen und davon tausenden fehlgeschlagenen herbekommst?

Thx,
Mercy.
 
Hi,

ja, das kann ich Dir sagen.

Entweder im phpMyAdmin unter " MySQL-Laufzeit-Informationen anzeigen"
oder ganz einfach mit "show status". Woher da die Intormationen gezogen werden ist mir aber nicht klar. Oder das logfile hat auch einen kryptischen Namen und liegt irgendwo im Filesystem, finden kann ich jedenfalls keines wo was drinnen steht dazu.

Gruß, Ingo

Beispiel (habe vor 25 Min neu gestartet)
Code:
mysql> show status;
+--------------------------+----------+
| Variable_name            | Value    |
+--------------------------+----------+
| Aborted_clients          | 0        |
| Aborted_connects         | 6841     |
| Binlog_cache_disk_use    | 0        |
| Binlog_cache_use         | 0        |
| Bytes_received           | 996115   |
| Bytes_sent               | 1557625  |
| Com_admin_commands       | 0        |
| Com_alter_db             | 0        |
| Com_alter_table          | 0        |
| Com_analyze              | 0        |
 
Last edited by a moderator:
Pruefe mal, ob dein MySQL Server auch Zugriffe von aussen zulaesst (das ist NICHT die standard Konfiguration im Auslieferungszustand, wenn Du das nicht geaendert hast dann ...).

Die Antwort darauf, was das heisst findet sich an der Quelle (uebrigens guter Hinweis, dass MySQL das auch bei show status ausgiebt, sonst waer ich nie drauf gekommen):
http://dev.mysql.com/doc/refman/4.0/de/show-status.html
und dann konkret
http://dev.mysql.com/doc/refman/4.0/de/communication-errors.html

Wieder mal ein rtfm und weiss der Teufel wer oder was da sowas macht:
* Wenn ein Verbindungspaket nicht die richtigen Informationen enthält.
* Wenn der Benutzer keine Berechtigung hat, sich mit einer Datenbank zu verbinden.
* Wenn ein Benutzer ein falsches Passwort angegeben hat.
* Wenn es länger als connect_timeout Sekunden dauert, um ein Verbindungspaket zu erhalten.

Ciao,
Mercy.

P.S. Schau vorsorglich mal, ob da jemand ungebetener Weise auf Port 3306 deiner nic anklopft. Aber nicht gleich in Panik verfallen, vielleicht ist es ja nur eine fehlgeleitete Anwendung auf deinem System. Vielleicht faellt Huschi nochwas ein wie man feststellen kann, woher diese Verbindungsversuche ruehren.
 
Hi,

die Doku zu den abgebrochenen Verbindungen habe ich schon mehrfach gelesen, auch schon früher. Dass es auch durch Anwendungen von mir sein könnte ist auch klar, aber auszuschließen. Das ganze hat gestern 9:48 begonnen oder so. Da hatte es auch den Server lahmgelegt.

Externen Zugriff auf mysql erlaube ich nicht.

Beim Port muß ich nochmal nachsehen, aber heute nacht war das zumindest nicht der Fall.

Danke schon mal,

Gruß, Ingo
 
Hallo Huschi, hallo Mercenary,

ich weiß zwar noch immer nicht was da los war, bzw. viel mehr warum in den Logfiles nichts steht, aber nun sind sie Abbrüche weg.

Was habe ich gemacht?
Meine Firewall für MySQL neu konfiguriert und nun ists gut. :) Reguläre 560 Verbindungen in 1 Stunde 40 Minuten und 0 Abbrüche.

Andere Frage, gibt es eigentlich eine Möglichkeit ipTables anzulegen, ohne dass die beim nächsten Neustart von Plesk wieder überschrieben werden? Ich möchte nämlich bestimmte IPs aussperren, Plesk läßt aber nur "bestimmt zulassen und alles andere aussperren" zu. Also ich möchte das genau anders herum.

Danke euch.

Gruß, Ingo
 
Das hier wuerde ich im Plesk Forum posten (samt aussagekraeftigem Titel), da finden es dann auch Leute, die etwas aehnliches suchen:
Andere Frage, gibt es eigentlich eine Möglichkeit ipTables anzulegen, ohne dass die beim nächsten Neustart von Plesk wieder überschrieben werden? Ich möchte nämlich bestimmte IPs aussperren, Plesk läßt aber nur "bestimmt zulassen und alles andere aussperren" zu. Also ich möchte das genau anders herum.

Die Aenderungen an deinen IPTables koennen sicher an den Symptomen wirken aber:
- Wenn Dein MySQL Server tatsaechlich auf Deine externe NIC lauscht und
- Das nicht die standard Konfiguration Deines Hosters/Deiner Distribution ist und
- Du das nicht so konfiguriert hast dann
liegt die Vermutung nicht allzu fern, dass das jemand anders war d.h. Du hattest womoeglich Besuch?

Nochmal ich sprach nicht davon, Zugriffe von aussen nicht auf mysql zu erlauben (per IPTables) sondern davon, den MySQL Server gleich so konfiguriert zu haben, dass er gar keine TCP-listen-socket auf der externen NIC aufmacht (dann eruebrigen sich auch die IPTables).
Bei den Versionen, die ich bisher in den Fingern hatte war das die standard Konfiguration. Wenn die aktuelle Konfiguration nicht so aussieht wie die jeweilige standard Konfiguration (bei Deinem Hoster/Deiner Distribution) und Du das nicht geaendert hast, dann wuerde ich mir da Gedanken machen.
Besonders, wenn danach eine brute force Attacke auf diesen Dienst gefahren wird mit tausenden invaliden Authentifizierungen (Das ist die praezise Bedeutung von "Aborted_connects" und nicht "Abgebrochene Verbindungen").
Solltest Du also keine "beruhigende" Erklaerung fuer die Konfiguration Deines MySQL-Servers finden so solltest Du Dich vielleicht nochmal genauer auf Deinem System umsehen.

Ciao,
Mercy.
 
Hi,

jetzt mal kurz. Die meinst doch mit dem externen Zugriff das hier "skip-networking" in der my.cnf, oder?

Gruß, Ingo
 
Back
Top