MySQL Server bei zu vielen Verbindungen nicht mehr erreichbar.

N20

New Member
Hallo Forum,

folgendes Problem: ich versuche gerade von diversen alten vServern auf neue dedizierte (wenn das die korrekte bezeichnung ist!?) Server um zu ziehen.

ich habe mir einen etwas kleineren server (2GB RAM, Athlon 64 X2 4400+) für die websites und einen etwas größeren (8GB RAM, Phenom 64 X4 9650) für Datenbanken geholt.

Auf dem Webserver habe ich mir cPanel installiert und auf dem Datenbankserver einfach nur apache, phpmyadmin, mysql und diverse abhängige packete installiert. hat bis dahin auch wunderbar geklappt alles. konnte auch sehen das die domains mit dem externen DB server wunderbar zusammenarbeiten wenn ich sie via IP aufegrufen habe (http://212.123.123.12/~/accountname/).

Nun wollte ich die umstellung vollziehen und habe schnell festgestellt das der Datenbank Server in die knie geht.

Folgende Fehlermeldung erhalte ich:
Code:
Can't connect to MySQL server on 'db.host.com' (4)

dies geschiet allerdings erst wenn die datenbankprozesse über 100 gehen.
das konnte ich jedesmal beobachten wenn ich via shell in mysql
Code:
SHOW PROCESSLIST;
ausgeführt habe.

in die my.cnf habe ich auch max_connections=1000 gesetzt, daran liegt es schonmal nicht. aber der server wird definitiv langsamer je mehr zugriffe stattfinden. ich habe es noch probiert in dem ich die werte table_cache und max_user_connections hochgesetzt habe.

ausserdem habe ich auch Tuning-Primer.sh mal laufen lassen mit folgender ausgabe:

Code:
	-- MYSQL PERFORMANCE TUNING PRIMER --
	     - By: Matthew Montgomery -

MySQL Version 5.0.45 x86_64

Uptime = 0 days 0 hrs 44 min 51 sec
Avg. qps = 1
Total Questions = 3891
Threads Connected = 1

Warning: Server has not been running for at least 48hrs.
It may not be safe to use these recommendations

To find out more information on how each of these
runtime variables effects performance visit:
http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html
Visit http://www.mysql.com/products/enterprise/advisors.html
for info about MySQL's Enterprise Monitoring and Advisory Service

SLOW QUERIES
The slow query log is NOT enabled.
Current long_query_time = 10 sec.
You have 0 out of 3912 that take longer than 10 sec. to complete
Your long_query_time may be too high, I typically set this under 5 sec.

BINARY UPDATE LOG
The binary update log is NOT enabled.
You will not be able to do point in time recovery
See http://dev.mysql.com/doc/refman/5.0/en/point-in-time-recovery.html

WORKER THREADS
Current thread_cache_size = 0
Current threads_cached = 0
Current threads_per_sec = 1
Historic threads_per_sec = 0
Your thread_cache_size is fine

MAX CONNECTIONS
Current max_connections = 1000
Current threads_connected = 1
Historic max_used_connections = 437
The number of used connections is 43% of the configured maximum.
Your max_connections variable seems to be fine.

MEMORY USAGE
Max Memory Ever Allocated : 1.19 G
Configured Max Per-thread Buffers : 2.68 G
Configured Max Global Buffers : 17 M
Configured Max Memory Limit : 2.70 G
Physical Memory : 7.76 G
Max memory limit seem to be within acceptable norms

KEY BUFFER
Current MyISAM index space = 1 M
Current key_buffer_size = 7 M
Key cache miss rate is 1 : 58
Key buffer free ratio = 78 %
Your key_buffer_size seems to be fine

QUERY CACHE
Query cache is supported but not enabled
Perhaps you should set the query_cache_size

SORT OPERATIONS
Current sort_buffer_size = 2 M
Current read_rnd_buffer_size = 256 K
Sort buffer seems to be fine

JOINS
Current join_buffer_size = 132.00 K
You have had 0 queries where a join could not use an index properly
Your joins seem to be using indexes properly

OPEN FILES LIMIT
Current open_files_limit = 5000 files
The open_files_limit should typically be set to at least 2x-3x
that of table_cache if you have heavy MyISAM usage.
Your open_files_limit value seems to be fine

TABLE CACHE
Current table_cache value = 1200 tables
You have a total of 72 tables
You have 76 open tables.
The table_cache value seems to be fine

TEMP TABLES
Current max_heap_table_size = 16 M
Current tmp_table_size = 32 M
Of 269 temp tables, 33% were created on disk
Effective in-memory tmp_table_size is limited to max_heap_table_size.
Perhaps you should increase your tmp_table_size and/or max_heap_table_size
to reduce the number of disk-based temporary tables
Note! BLOB and TEXT columns are not allow in memory tables.
If you are using these columns raising these values might not impact your 
ratio of on disk temp tables.

TABLE SCANS
Current read_buffer_size = 128 K
Current table scan ratio = 39 : 1
read_buffer_size seems to be fine

TABLE LOCKING
Current Lock Wait ratio = 0 : 4095
Your table locking seems to be fine

vieleicht gehe ich ja auch vollkommen falsch ran an die sache. aber ich konnte auch nicht wirklich gute quellen zum thema mysql server für externen einsatz finden. ich hoffe ihr könnt mir helfen und ich lerne was dazu. mfg n20
 
das könnte auch noch hilfreich sein, meine my.cnf im aktuellen zustand:

Code:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql

old_passwords=1
max_connections=1000
max_user_connections=1000
table_cache=1200
max_connect_errors=999999

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
 
Teste doch mal diese my.cnf, die Pfade musst du allerdings anpassen.
-- my.cnf entfernt --
 
Last edited by a moderator:
vielen dank für die hilfe! das sieht erstmal viel besser aus mit der serverlast. ich habe jetzt mal auf dem alten server die datenbank des neuen DB servers angegeben und er bricht schonmal nicht mehr zusammen! super!

ich habe allerdings den innodb teil weggelassen, weil mysql mit diesem abschnitt nicht neugestartet ist. habe ich da was nicht beachtet?
 
Eigentlich nicht. Nutzt du InnoDB?

Eigentlich sollte es genügen die Pfade anzupassen. Was ist denn die Fehlermeldung von mySQL?
 
wie gesagt, bin nicht der experte.... aber im nachinein kann ich mich dunkel daran erinnern das windows server innodb nutzen und unix systeme myisam? kann auch sein das ich da falsch liege, jedenfalls habe ich centos 5.3, würde also sagen das ich kein innodb nutze :) sicher bin ich mir aber nicht was obige aussage betrifft.

darf ich mal fragen warum du die my.cnf wieder entfernt hast?

gruß, n20
 
Nein, deine Aussage ist komplett falsch :D InnoDB und MyISAM haben nichts mit dem Betriebssystem zu tun. Ich nutze fast ausschliesslich InnoDB-Tabellen auf einem FreeBSD :)
 
Ah ok, hatte nur sowas in Erinnerung. Die Pfade stimmen eigentlich. Ich werd mal den InnoDB Abschnitt nochmal Zeile für Zeile durch testen um zu sehen wo der Fehler liegt.
 
Wie hast Du das Problem im Griff bekommen? Weil bei mir habe ich das gleiche Problem, egal ob viel los ist oder nicht. Alle ca. 30 Minuten kommt dann die Fehlermeldung:

mysql_connect() [<a href='function.mysql-connect'>function.mysql-connect</a>]: Can't connect to MySQL server on 'IP-Nummer' (4)

Wer kann helfen?
 
Naja ich bekomme immer automatisch eine Mail von VBulletin und dann steht das drin.

Datenbankfehler in vBulletin:

mysql_connect() [<a href='function.mysql-connect'>function.mysql-connect</a>]: Can't connect to MySQL server on 'IP-Nummer' (4)
class_core.php on line 311

MySQL-Fehler :
Fehler-Nr. :
Fehler-Zeit : Sunday, 16.08.2009 @ 10:10:21
Datum : Sunday, 16.08.2009 @ 10:11:21
Skript : cron.php?rand=775671
Klassenname : vB_Database


Eine direkte MySQL-Fehlermeldung kommt ja nicht, weil es gar nicht zu einer Verbindung wohl kommt ...
 
Läuft der mySQL-Server überhaupt? Falls nein, starte ihn. Falls ja, starte ihn neu und sie dir an was in den Logfiles steht.
 
Der MySQL-Server läuft natürlich, sonst würden ja keine Seiten aufgebaut werden können, nur eben alle ca. 30 Min kommt es zur nicht Erreichbarkeit, drückt man aber dann F5 gehts wieder sofort.

Habe leider einen management-Server, sprich ich komme da nicht so recht ran an die Logdateien usw. Müsste meinen Webhoster fragen, der mir aber versicherte, dass in den Logs nichts auffälliges steht.
 
Tja, dann kann dir hier auch keiner helfen. Sorry.

Wenn vBulletin richtig konfiguriert ist, dein Webhoster sagt, dass alles läuft und die max. Anzahl Verbindungen nicht erreicht ist und nicht irgendwer auf deinem Host-Server die Performance in den Keller zieht, dann ist es schwer hier weiter zu raten.

EDIT: cron.php?rand=775671, was macht denn "cron.php"? Kann es sein, dass du für Hintergrundaktivitäten was falsch eingestellt hast? Denn die Seite lädt ja, also ist es eher ein Konfigurationsproblem in deinem Forum.
 
Ne das Forum kann nicht falsch konfiguriert sein, weil das lief ja alles monatelang bestens. Außerdem ist mir der Fehler auch aufgefallen, als ich direkt auf der Datenbank mit PHPMYADMIN gearbeitet habe, dass sich dann irgendwann ganz spontan die Seite 30 Sek geladen hat und dann nichts kam bzw. eine Fehlermeldung, dass keine Verbindung zur Datenbank hergestellt werden konnte. Also soll ich mal die Konfiguration der Datenbank durchgeben + Logdateien, ja?
 
Du hast doch gesagt, dass du sie garnicht hast?

Schreib mal bitte genau was funktioniert und was nicht. Wenn das Forum an sich funktioniert, du aber hin und wieder Mails kriegst mit einer Fehlermeldung, dann scheint nur das eine Skript Probleme zu haben.

Wenn phpMyAdmin nicht zugreifen kann ist evtl. der Server falsch konfiguriert bzw. das Maximum an Verbindungen erreicht. Wir können dir da aber nicht helfen, da du einen Managed Server hast.

Dann musst du dich an deinen Provider wenden. Wenn er dir nicht helfen kann/will, dann musst du zu einem anderen Provider wechseln, der einen funktionierenden Server bereitstellen kann.

Welcher Provider ist es denn?
 
Hi Ben,

also die Konfigurationsdateien habe ich noch nicht, habe diese aber per Mail angefragt und werde diese bestimmt heute/morgen erhalten.

Wie gesagt, das Problem tritt überall auf: ob in VBulletin oder phpmyadmin, alle ca. 100 - 300 Klicks kommt es dann zu einem Klick, der ins leere führt bzw. wo dann die Meldung kommt, das keine Verbindung zur Datenbank aufgebaut werden kann.

Ich bin bei net-build und auch sehr zufrieden damit, nur ist es eben nicht einfach, wenn ein Fehler nur sporadisch auftritt, diesen schnell zu beheben. Ich versuche nur eben, dem Webhoster zu helfen, dass Problem schnell im Griff zu bekommen. Meine MySQL-Version ist übrigens 5.0.70

Gruß

Stefan
 
Hallo.

Ich habe das gleiche Problem wie der erste User hier, hat da einer was für mich?

Server:

CPU: Intel® Core™ i7-920 Quad-Core 2,67 GHz
Ram: 12 GB DDR3 RAM
HDD: 2 x 1500 GB SATA-II HDD (Software-RAID 1)
System: Linux Debian 64 5bit
Apache: on Apache/2.2.9 (Debian)
Mysql: 5.0.51a
PHP: 5.2.6-1+lenny3

Da läuft Joomla als Portal und vBulletin als Forum drauf mit ca 200-300 User gleichzeitig und höchstens 400-500 momentan. Und ich erhalte sehr oft diesen Datenbankfehler wie am Anfang genannt. Außerdem empfinde ich die Geschwindigkeit für nicht gerade herausragend bei so einem Server.

Wenn mir einer netterweise sagen könnte was ich wie anpassen sollte damit es besser läuft wäre ich sehr dankbar.


Gruß
Theo
 
Hallo!
Wie sieht denn deine mySQL Konfiguration aus? Insbesondere der Punkt connection limit? Wie ist vBulletin konfiguriert (persistent connection)?

mfG
Thorsten
 
Hi.

Hallo!
Wie sieht denn deine mySQL Konfiguration aus? Insbesondere der Punkt connection limit?
Komischerweise ist es in der my.cnf nicht drin :confused:
Ansonsten denke ich rest großzügig, schließlich habe ich mich ja an vbulletin.com gewendet die mir eine Anpassung auf meinen Server gepostet haben.
Wie ist vBulletin konfiguriert (persistent connection)?

mfG
Thorsten

Sagt mir nichts, habe jetzt mal eben xcache draufgespielt und anscheinend hat es ein wenig was gebracht; Serverlast um ca 0,30-0,40 verringert.

Manchmal braucht das Benutzerkontrollzentrum 1-2 Min. (!) bis man drauf ist. Wie kann die Datenbank denn so überfordert sein?


EDIT: Gerade wieder: auf der Haupseite (Joomla) -
Database Error: Unable to connect to the database:Could not connect to MySQL

Im Forum -
Datenbankfehler
Es trat ein Problem mit der Datenbank auf.
 
Last edited by a moderator:
Back
Top