MySQL-Auslastung 99%

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MySQL-Auslastung 99%

    Hi,

    wenn ich mich via SSH bei meinem Server (Debian 32bit) einlogge und mir dann mit top die CPU-Auslastung ansehe, verbraucht MySQL immer zwischen 90 und 100% der ganzen CPU. Dementsprechend langsam ist dann natürlich auch meine Website.

    Ich hoste eigentlich kein großes Script. Nur ein mehr oder weniger kleines Marke Eigenbau.

    Gibt es da einen Trick, wie ich die Auslastung runter kurble?

    Vielen Dank,
    AndroidChromeOS
    Mit freundlichen Grüßen,
    AndroidChromeOS

  • #2
    Vermutlich hast du irgendwo böse Schleifen oder ganz kuriose Datenbankabfragen. Somit würde ich erstmal die Abfragen und deren Dauer mitloggen, dann siehst du, welche wie lange und wie oft ausgeführt werden.

    Du kannst dir auch in phpMyAdmin (oder direkt im MySQL-Client) anschauen, welche Prozesse gerade laufen.

    Kommentar


    • #3
      Hi,

      danke für deine schnelle Antwort aber für mich sieht das alles ganz normal aus. Aber siehe selbst..
      Angehängte Dateien
      Mit freundlichen Grüßen,
      AndroidChromeOS

      Kommentar


      • #4
        Anhand des Screenshots sieht man leider nicht, wieviele Datenbankabfrage in einem bestimmten Zeitraum getätigt werden.

        Kommentar


        • #5
          Hmm ich bin mal die Statistiken durchgegangen. Was mir aufgefallen ist:
          Opened_tables = 1,548
          Table_locks_waited = 521 k

          Da steht bei beidem, dass eine hohe Zahl nicht gut ist. Was bedeutet das genau?
          Mit freundlichen Grüßen,
          AndroidChromeOS

          Kommentar


          • #6
            Während einem Update oder Insert wird die jeweilige Tabelle gelockt und in der Zeit kann keine andere Abfrage auf die Tabelle zugreifen und muss warten.

            Kommentar


            • #7
              Kann man da nicht das Timeout etwas runter stellen? Dann würde die Auslastung doch sinken, oder?
              Mit freundlichen Grüßen,
              AndroidChromeOS

              Kommentar


              • #8
                Welchen Timeout?

                Kommentar


                • #9
                  Gibt es keinen Timeout, der es dann wieder entlocked? Oder wird das sofort nach der Abfrage wieder entsperrt. Weil wenn ich mir mal die Prozesse anschaue, sind viel mehr Locked als Updating.
                  Mit freundlichen Grüßen,
                  AndroidChromeOS

                  Kommentar


                  • #10
                    Zitat von AndroidChromeOS Beitrag anzeigen
                    Gibt es keinen Timeout, der es dann wieder entlocked? Oder wird das sofort nach der Abfrage wieder entsperrt. Weil wenn ich mir mal die Prozesse anschaue, sind viel mehr Locked als Updating.
                    Es wird automatische entsperrt, wenn der Update- oder Insert-Vorgang fertig ist. Aber Schreibvorgänge dauernd nun mal ihre Zeit. Eventuell solltest du mal kontrollieren was da so häufig in die Datenbank geschrieben wird und ob man das nicht reduzieren kann.

                    Kommentar


                    • #11
                      Ich habe mir mal ein paar minuten lang angeguckt was da so alles rein geschrieben wird und es sind nur notwendige Dinge. Aber viel ist es im Grunde nicht. Es sind auch nur ca. 10 User gleichzeitig online. Das sollte doch für einen root ein Leichtes sein, oder?
                      Mit freundlichen Grüßen,
                      AndroidChromeOS

                      Kommentar


                      • #12
                        Das sollte doch für einen root ein Leichtes sein, oder?
                        Keine Ahnung, da kann man viel Mist bauen.

                        Aber solange die Tabellen Struktur und die Statements geheim sind, kann man da überhaupt nix sagen.

                        Ausser:
                        Das MySQL EXPLAIN kann dir helfen die Engpässe zu lokalisieren.
                        Wir werden alle sterben

                        Kommentar


                        • #13
                          Google mal nach MySQL Tuning-primer!
                          Damit kannst du leicht herausfinden, was nicht stimmt. Das Tool wird Empfehlungen geben, die du erstmal ignorieren solltest. Denn ziemlich sicher steckt der Bock in deiner Webseite.
                          Zuletzt geändert von onemorenerd; 25.12.2010, 21:25.

                          Kommentar


                          • #14
                            Okay ich hab das mal laufen lassen. Soweit alles gut, außer:
                            Code:
                            TABLE CACHE
                            Current table_cache value = 64 tables
                            You have a total of 20 tables
                            You have 64 open tables.
                            Current table_cache hit rate is 4%
                            , while 100% of your table cache is in use
                            You should probably increase your table_cache
                            sollte ich das machen?

                            //Edit: Ich weiß ja nicht was ich in meinem Script falsch mache. Ich benutze immer $variable = mysql_fetch_assoc(mysql_query("SELECT ...")); und while-schleifen habe ich nur da, wo sie auch dringend nötig sind.

                            Meine Tabellen sind quasi immer gleich aufgebaut: id, wert1, wert2, ..

                            Ich weiß nicht was ich noch sagen kann. Wenn ihr noch was braucht, dann kann ich es euch natürlich gerne liefern.
                            Zuletzt geändert von AndroidChromeOS; 25.12.2010, 22:29.
                            Mit freundlichen Grüßen,
                            AndroidChromeOS

                            Kommentar


                            • #15
                              Ich denke, dass das Problem nicht beim Server sondern bei deiner Applikation liegt. Ich würde mal an der Stelle anfangen zu suchen.
                              Zuletzt geändert von h3ll; 25.12.2010, 22:30.

                              Kommentar

                              Lädt...
                              X