PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MySQL-Server antwortet sehr langsam



dilindam
05.01.04, 11:53
Hallo allerseits,

ich habe hier ein Debian-Rechner, Kernel 2.4.18-bf2.4,
und mysql-4.1.0-standard.

Das mysql-paket habe ich mir runtergeladen, entpackt
und installiert.

Nur bei Anfragen, die sind schon etwas komplexer (4 Joints),
dauert es ca. 20-30 sekunden bis die Seite aufgebaut ist.

Es liegt bestimmt nicht an der Performance des PC's.
Es läuft auch nur mysql da drauf. Kein Apache kein PHP,
Die Webseiten liegen entweder auf einem IIS oder halt
auf nem Apache. Jedenfalls auf anderen Rechnern.

Ob ein Upgrade auf 4.1.1 Abhilfe schafft?

Oder hat jemand von euch nen Tip?

MfG Torsten

filou
05.01.04, 16:03
Hi,

hm, bisschen vage Angaben. Was ist mit Indizes, sind die Tabellen indiziert ? Wie sehen die cache Einstellungen in der my.cnf aus?

Tipps gibt es auch unter www.mysql.de unter Tuning.

hmm, Logfiles vom apache, mysql checken ?!

MFG

Bauchi
05.01.04, 16:28
nach 4 joints wäre mein server auch total benebelt... das heisst joins ..
scnr

aber indizierung würde ich auch mal checkn ...

dilindam
05.01.04, 17:11
>hm, bisschen vage Angaben. Was ist mit Indizes, sind die Tabellen indiziert ?
Ja das schon.

>Wie sehen die cache Einstellungen in der my.cnf aus?

Ich habe keine my.cnf. Keine Ahnung wieso die nicht da ist.
Läuft aber trotzdem. Ist da vielleicht schon der Haken?


Auf dem anderen DB-Server ist mysql-server aus dselect heraus installiert
worden. Zwar ne 3.xx. Version aber da habe ich auch ne my.cnf und alles läuft bestens. Aber in der my.cnf steht auch nichts von cache.


Noch was:
./bin/mysqladmin processlist
bringt mir ne Menge "sleep"s zu der DB die auch am längsten brauch.

+-----+-----------+---------------------+----------------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-----+-----------+---------------------+----------------+---------+------+-------+------------------+
| 481 | seminaris | xxx.yyy.154.24:2076 | seminaris | Sleep | 2 | | |
| 485 | seminaris | xxx.yyy.154.24:2080 | seminaris | Sleep | 2 | | |
| 486 | seminaris | xxx.yyy.154.24:2082 | seminaris | Sleep | 2 | | |
| 487 | seminaris | xxx.yyy.154.24:2083 | seminaris | Sleep | 2 | | |


So siehts aus:

Würde ein Upgrade auf 4.1.1 was bringen?
Kann ich das evtl. im laufenden Betrieb machen?

Muss los. Ist mir grad jemand in mein Auto gerauscht. (Zuviele Joins)


MfG

Torsten

dilindam
08.01.04, 09:40
Guten Morgen allerseits,

So ich habe jetzt mal mysql-4.1.1-alpha installiert.
Gleiche Problem.


In die /etc/my.cnf habe ich dazu geschrieben:

log_slow_queries
set-variable = long_query_time=5

Nun habe ich eine debian-slow.log
(der Rechner heißt noch debian)

Hier ein Log-Eintrag:

# Time: 040108 8:59:26
# User@Host: semester[semester] @ [xxx.yyy.zzz.20]
# Query_time: 18 Lock_time: 0 Rows_sent: 41 Rows_examined: 166
select inh.inhalt_id,inh.titel,inh.inhalt,inh.layout_id from tree_inhalte trin join inhalte inh on trin.inhalt_id=inh.inhalt_id join (select distinct inhalt_id from inhalte_eigenschaften where inhalt_id in (select inhalt_id from inhalte_eigenschaften where eigenschaft_id=9) and inhalt_id in (select inhalt_id from inhalte_eigenschaften where eigenschaft_id=22) and inhalt_id in (select inhalt_id from inhalte_eigenschaften where eigenschaft_id=11))inei on trin.inhalt_id=inei.inhalt_id where trin.tree_id=27 and inh.status=1 order by inh.gewichtung desc;


>Was ist mit Indizes, sind die Tabellen indiziert ?
Ja denke schon.

Ich mache die Abfragen nicht, auch nicht die Webseiten.
Das macht der 'Alte'. Er ist auch der Meinung das es mit
Win-SQL keine solch langen Wartezeiten gibt.
Er fragt mich ob mysql dann doch nicht so toll ist?

>Wie sehen die cache Einstellungen in der my.cnf aus?

Hier meine /etc/my.cnf

[client]
port = 3306
socket = /tmp/mysql.sock

[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
myisam_sort_buffer_size = 8M
log_slow_queries
set-variable = long_query_time=5
#skip-networking
log-bin

server-id = 1
[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout


Vielen Dank schonmal im vorraus.

MfG

Torsten

filou
08.01.04, 13:57
Hi dilindam,

hab im Moment wenig Zeit, aber kurze Frage: Hast du Master Slave Replikation laufen ??

Also noch nen zweten Rechner, von dem abgefragt wird...oder irgendwas in der Art.

mfg

dilindam
08.01.04, 14:18
Hallo

>hab im Moment wenig Zeit, aber kurze Frage: Hast du Master Slave Replikation >laufen ??
WAS?

>Also noch nen zweten Rechner, von dem abgefragt wird...oder irgendwas in der Art.

So langsam komme ich der Sache auf den Grund. Vielleicht. Ja.

Der MySQL Server ist nur für MySQL da. Alle Webseiten liegen entweder auf nem
anderen Apache- Server oder ! auf nem Win-Rechner der per ODBC-Treiber
darauf zugreift.

Ich habe eine langsame Abfrage, also eine die in debian-slow.log geloggt wurde,
mal direkt in der mysql-Konsole ausgeführt und das Ergebnis war sofort da.

Also scheint da irgendwas evtl. mit den odbc-Treiber nicht zu funktionieren.
Auf dem MySQL-Server kann ich da was einstellen was ODBC betrifft?

Und die Indizies der Tabellen brauch ich dann wohl auch nicht mehr checken.?

MfG Torsten

filou
08.01.04, 15:52
Original geschrieben von dilindam
Hallo

>hab im Moment wenig Zeit, aber kurze Frage: Hast du Master Slave Replikation >laufen ??
WAS?

>Also noch nen zweten Rechner, von dem abgefragt wird...oder irgendwas in der Art.

So langsam komme ich der Sache auf den Grund. Vielleicht. Ja.

Der MySQL Server ist nur für MySQL da. Alle Webseiten liegen entweder auf nem
anderen Apache- Server oder ! auf nem Win-Rechner der per ODBC-Treiber
darauf zugreift.

Ich habe eine langsame Abfrage, also eine die in debian-slow.log geloggt wurde,
mal direkt in der mysql-Konsole ausgeführt und das Ergebnis war sofort da.

Also scheint da irgendwas evtl. mit den odbc-Treiber nicht zu funktionieren.
Auf dem MySQL-Server kann ich da was einstellen was ODBC betrifft?

Und die Indizies der Tabellen brauch ich dann wohl auch nicht mehr checken.?

MfG Torsten

Naja, der Server läuft ja mit Binärem Logging und hat eine Server ID(1). IMHO brauch ich des nur, wenn ich ne DB Repliziere, also Master/Slave fahre.

ODBC - öh, hier hört mein bescheidenes Verständniss dann auf =/ - falls es was da zum Einstelen gibt, guck auf http://www.mysql.de.
Dort stehen alle Optionen gelistet.

Ob deine Indizes gut sind, kann dir sowieso keiner sagen. Wichtig ist nur, dass sie da sind. Also, Primary Key jeweils vergeben....

so long

mfg

Pingu
08.01.04, 15:58
Original geschrieben von filou
Ob deine Indizes gut sind, kann dir sowieso keiner sagen. Wichtig ist nur, dass sie da sind. Also, Primary Key jeweils vergeben.... Dafür gibt es den "EXPLAIN", der einem sagt wie welche Indizes verwendet werden. Somit bekommt man eine Auskunft, ob die Indizes kgut sind.

Pingu

dilindam
08.01.04, 16:27
Hallo,

>Naja, der Server läuft ja mit Binärem Logging und hat eine Server ID
>IMHO brauch ich des nur, wenn ich ne DB Repliziere, also Master/Slave fahre.

Aha! Also das mit den Binärem Logging habe ich mal wieder auf Text umgestellt.
Obwohl soweit wie ich gelesen habe es schneller sein soll. ? Egal.

Die isamcheck-Einträge kann ich auch rausnehmen.
Nur die myisam lassen.

>ODBC - öh, hier hört mein bescheidenes Verständniss dann auf.

Oja bei mir auch.

>Falls es was da zum Einstellen gibt, guck auf mysql.de
>Dort stehen alle Optionen gelistet.

Ich weiß. Habe nichts zu odbc gefunden. Also keine Option für den MySQL-Server.

>Primary Key jeweils vergeben....
Ja das ist klar. Das kann ich sogar auch noch. Wie gesagt ich mache die Programmierung nicht.

Aber so langsam scheint es nicht mehr mein Problem zu sein. Sondern den des Win-Admins. Wenns denn am ODBC liegen sollte. Der Treiber ist glaube ich für eine
3er Version von MySQL. Daran könnte es auch schon liegen, oder?


UPS, der Win-Admin bin ich ja auch. O neee. Nu hab ich aber gleich gar kein Bock mehr.


MfG Torsten

filou
08.01.04, 17:56
Original geschrieben von dilindam
Hallo,

>Naja, der Server läuft ja mit Binärem Logging und hat eine Server ID
>IMHO brauch ich des nur, wenn ich ne DB Repliziere, also Master/Slave fahre.

Aha! Also das mit den Binärem Logging habe ich mal wieder auf Text umgestellt.
Obwohl soweit wie ich gelesen habe es schneller sein soll. ? Egal.


Die isamcheck-Einträge kann ich auch rausnehmen.
Nur die myisam lassen.

>ODBC - öh, hier hört mein bescheidenes Verständniss dann auf.

Oja bei mir auch.

>Falls es was da zum Einstellen gibt, guck auf mysql.de
>Dort stehen alle Optionen gelistet.

Ich weiß. Habe nichts zu odbc gefunden. Also keine Option für den MySQL-Server.

>Primary Key jeweils vergeben....
Ja das ist klar. Das kann ich sogar auch noch. Wie gesagt ich mache die Programmierung nicht.

Aber so langsam scheint es nicht mehr mein Problem zu sein. Sondern den des Win-Admins. Wenns denn am ODBC liegen sollte. Der Treiber ist glaube ich für eine
3er Version von MySQL. Daran könnte es auch schon liegen, oder?


UPS, der Win-Admin bin ich ja auch. O neee. Nu hab ich aber gleich gar kein Bock mehr.


MfG Torsten

AHH ! Nicht doch - also - diese Option die du angegeben hast, ist NUR für Master Slave Betrieb sinnvoll. Also raus damit wenn due keine Replizierung fährst. Text Logging schon gar ned - die Datenmengen die da anfallen sind nicht sehr schön.

Alles was unter Log in der my.cnf steht, reicht vollkommen aus für das "normale" Loggen der Fehler, sowie der "normalen" Aktionen.

Der Eintrag mit der Server ID kann auch raus.

Wobei sich jetzt meine Angaben auf eine 3er Version von MySQL beziehen.

mfg