Unique86 Geschrieben 3. Dezember 2007 Geschrieben 3. Dezember 2007 Hallo zusammen, ich brauche mal hilfe ... ich habe nen relativ schmalen Rootserver und möchte diesen effektiver nutzen. Zur Zeit brauchen div. Seiten ca. 50 Sekunden zum laden und das ist schlicht weg nicht akzeptabel. Hier die Daten des Servers: AMD Athlon64 3200+1024 MB RAM2 x 80 GB Ich habe mal den MySQL Performance Tuning Primer durchlaufen lassen, dieser spukt mir folgendes aus. -- MYSQL PERFORMANCE TUNING PRIMER -- - By: Matthew Montgomery - MySQL Version 4.1.13 x86_64 Uptime = 5 days 1 hrs 25 min 29 sec Avg. qps = 12 Total Questions = 5381333 Threads Connected = 20 Server has been running for over 48hrs. It should be safe to follow these recommendations To find out more information on how each of these runtime variables effects performance visit: MySQL AB :: MySQL 3.23, 4.0, 4.1 Reference Manual :: 5.2.3 System Variables Visit MySQL AB :: MySQL Enterprise Advisors for info about MySQL's Enterprise Monitoring and Advisory Service SLOW QUERIES Current long_query_time = 10 sec. You have 4692 out of 5381439 that take longer than 10 sec. to complete The slow query log is NOT enabled. Your long_query_time may be too high, I typically set this under 5 sec. 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 = 100 Current threads_connected = 20 Historic max_used_connections = 51 The number of used connections is 51% of the configured maximum. Your max_connections variable seems to be fine. MEMORY USAGE Max Memory Ever Allocated : 105 M Configured Max Per-thread Buffers : 155 M Configured Max Global Buffers : 26 M Configured Max Memory Limit : 181 M Physical Memory : 1000.81 M Max memory limit seem to be within acceptable norms KEY BUFFER Current MyISAM index space = 34 M Current key_buffer_size = 16 M Key cache miss rate is 1 : 4326 Key buffer fill ratio = 4.00 % Your key_buffer_size seems to be too high. Perhaps you can use these resources elsewhere QUERY CACHE Query cache is supported but not enabled Perhaps you should set the query_cache_size SORT OPERATIONS Current sort_buffer_size = 512 K Current record/read_rnd_buffer_size = 508 K Sort buffer seems to be fine JOINS Current join_buffer_size = 132.00 K You have had 14143 queries where a join could not use an index properly You should enable "log-queries-not-using-indexes" Then look for non indexed joins in the slow query log. If you are unable to optimize your queries you may want to increase your join_buffer_size to accommodate larger joins in one pass. Note! This script will still suggest raising the join_buffer_size when ANY joins not using indexes are found. OPEN FILES LIMIT Current open_files_limit = 1024 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 = 64 tables You have a total of 1227 tables You have 64 open tables. Current table_cache hit rate is 0%, while 100% of your table cache is in use You should probably increase your table_cache TEMP TABLES Current max_heap_table_size = 16 M Current tmp_table_size = 32 M Of 130989 temp tables, 1% were created on disk Effective in-memory tmp_table_size is limited to max_heap_table_size. Created disk tmp tables ratio seems fine TABLE SCANS Current read_buffer_size = 252 K Current table scan ratio = 752 : 1 read_buffer_size seems to be fine TABLE LOCKING Current Lock Wait ratio = 1 : 1126 You may benefit from selective use of InnoDB. If you have long running SELECT's against MyISAM tables and perform frequent updates consider setting 'low_priority_updates=1' Dahingehend würde ich gerne wissen, was für meine Maschine so die "optimalen" Werte wären. Das selbe für den Apache ... Über eine Antwort würde ich mich sehr freuen Gruß Sven Zitieren
Amstelchen Geschrieben 3. Dezember 2007 Geschrieben 3. Dezember 2007 schaut soweit ja nicht schlecht aus - allerdings ist dein MySQL-release über 2 1/2 jahre alt. sprechen gründe gegen ein upgrade auf 4.1.22? du kannst dem MySQL-server angeben, dass long queries geloggt werden - das steht auch im tuning primer drin. ist der MySQL direkt in den apachen eingebunden oder läuft das über ein apache-modul wie z.b. PHP? welche version vom apachen setzt du ein? s'Amstel Zitieren
Unique86 Geschrieben 3. Dezember 2007 Autor Geschrieben 3. Dezember 2007 schaut soweit ja nicht schlecht aus - allerdings ist dein MySQL-release über 2 1/2 jahre alt. sprechen gründe gegen ein upgrade auf 4.1.22? du kannst dem MySQL-server angeben, dass long queries geloggt werden - das steht auch im tuning primer drin. ist der MySQL direkt in den apachen eingebunden oder läuft das über ein apache-modul wie z.b. PHP? welche version vom apachen setzt du ein? s'Amstel Hallo Amstel, erstmal vielen Dank für die Antwort auf diese Thematik. Grundsätzlich spricht nichts gegen ein Upgrade auf eine neueres MySQL Release, sofern alles weiterhin funktioniert. Soweit ich weiß, ist der MySQL direkt in den Apache eingebunden (habe den Rootserver übernommen) wo finde ich dementsprechende Informationen? Die Version des Apache 2.0.54 ... Zitieren
Amstelchen Geschrieben 3. Dezember 2007 Geschrieben 3. Dezember 2007 Soweit ich weiß, ist der MySQL direkt in den Apache eingebunden (habe den Rootserver übernommen) d.h. keine scriptsprache dazwischen? wo finde ich dementsprechende Informationen? in der liste der im apachen (mit LoadModule) geladenen module: "httpd -l" (also kleines L) listet dir die geladenen module. allenfalls poste diese ausgabe doch mal hier. in der httpd.conf im ersten abschnitt sind alle module ladenden anweisungen zu finden. Die Version des Apache 2.0.54 ... auch reichlich alt und von unzähligen security releases überholt worden ´ s'Amstel Zitieren
Unique86 Geschrieben 3. Dezember 2007 Autor Geschrieben 3. Dezember 2007 Hi, also hier ist mal die Liste. Compiled in modules: core.c prefork.c http_core.c mod_so.c Als Scriptsprache wird php5 genutzt. Kann ich denn MySQL und den Apache auf den aktuellesten Stand bringen, ohne das ich Datenverluste zu verzeichnen habe ?! Gruß Sven Zitieren
flashpixx Geschrieben 3. Dezember 2007 Geschrieben 3. Dezember 2007 Hallo, neben den veralteten Ständen der Dienste, ist mir auch immer aufgefallen, falls eigene Scripte laufen, dass hier z.B. SQL Statements häufig sehr unperformant formuliert werden: "select * from" wenn nur ein Feld verwendet wird $result = select * from while (..) select * from tabelle where a = $result[feld] Blobs werden innerhalb der Datenbank abgelegt Bitte wirklich mal schauen, wo zuviel Zeit für die Ausführung verloren geht. Oft sind es nicht die Konfigurationen, sondern die eigene Programmierung. HTH Phil Zitieren
Unique86 Geschrieben 3. Dezember 2007 Autor Geschrieben 3. Dezember 2007 Hallo, neben den veralteten Ständen der Dienste, ist mir auch immer aufgefallen, falls eigene Scripte laufen, dass hier z.B. SQL Statements häufig sehr unperformant formuliert werden: "select * from" wenn nur ein Feld verwendet wird $result = select * from while (..) select * from tabelle where a = $result[feld] Blobs werden innerhalb der Datenbank abgelegt Bitte wirklich mal schauen, wo zuviel Zeit für die Ausführung verloren geht. Oft sind es nicht die Konfigurationen, sondern die eigene Programmierung. HTH Phil Hallo Phil, daran habe ich auch schon gedacht, weil andere Seiten wesentlich schneller laufen, die auf dem selben Server liegen. Gruß Sven Zitieren
geloescht_JesterDay Geschrieben 4. Dezember 2007 Geschrieben 4. Dezember 2007 You have 4692 out of 5381439 that take longer than 10 sec. to complete Das ist doch auf jeden Fall etwas, was mal gar nicht sein sollte. Länger als 10 Sekunden! Wieviele Millionen Sätze werden da verarbeitet und wieviele hundert Tabellen miteinander verknüpft? Meistens hilft in dem Fall schon ein entsprechender Index auf die Datei und es läuft viel schneller. (Ein weiteres Problem ist dann natürlich die Ausgabe des Ergebnisses, aber das wird ja von MySQL nicht geloggt. Also hier hat wirklich die reine Abfrage auf dem Server länger als 10 Sekunden gedauert.) Zitieren
Carnie Geschrieben 5. Dezember 2007 Geschrieben 5. Dezember 2007 Als ich mal Probleme mit der Auslastung meines Root Servers hatte , half ein Wechsel vom Apache zu Lighttpd. Allerdings war bei mir das Problem nicht in den Skripten selber begründet sondern in der Menge der Zugriffe. Da bei dir ja nur einzelne Seiten Probleme machen würde ich sagen überprüfe als erstes deine Indizes sowie die jeweiligen Skripte. Auch den schnellsten Server bekommt man mit schlechtem Coding ganz schnell in die Knie. Zitieren
Unique86 Geschrieben 5. Dezember 2007 Autor Geschrieben 5. Dezember 2007 Als ich mal Probleme mit der Auslastung meines Root Servers hatte , half ein Wechsel vom Apache zu Lighttpd. Allerdings war bei mir das Problem nicht in den Skripten selber begründet sondern in der Menge der Zugriffe. Da bei dir ja nur einzelne Seiten Probleme machen würde ich sagen überprüfe als erstes deine Indizes sowie die jeweiligen Skripte. Auch den schnellsten Server bekommt man mit schlechtem Coding ganz schnell in die Knie. Hallo, ja genau das war mein Problem, habe den Sourcecode und die Abfragen um ca. 50% minimieren können. Zudem sind einige Abfragen SELECT * FROM durch SELECT id FROM ersetzt worden. Die Ladezeiten haben sich drastisch verringert. Vielen Dank für den Tip Gruß´Sven Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.