Michael: Apache sehr langsam

Hi,

Problem:

Habe xampplite (v.1.6.8) am Laufen. In unserer Datenbank (phpmyadmin), in der kundendaten liegen, funktionieren z. B. die select-abfragen sehr schnell.

Sobald ich aber unser php-geschriebenes tool, dass die kundendaten verwaltet, starte und hier nach bestimmten kundendaten suche, dauert die abfrage ewig.

Am Tool selbst kann es nicht liegen, da auf unserem alten Webserver auch xampplite in der selben version drauf ist und hier geht alles ziemlich fix (apache, php-konfiguration auch die selbe).

Im Windows Taskmanager steigt der apache.exe Prozess im Moment der Abfrage auf 60-70 %. Die Abfrage selbst dauert ca. 10 Sekunden. Was ist hier los?

Habe bereits die 'eAccelerator'-Extension installiert. Hat nichts gebracht.

Weiß jemand weiter?

LG

  1. Moin!

    Sobald ich aber unser php-geschriebenes tool, dass die kundendaten verwaltet, starte und hier nach bestimmten kundendaten suche, dauert die abfrage ewig.

    Lass dir den von deinem Tool generierten Query mal als Text im Browser ausgeben und verwende diesen exakt so in PHPMyAdmin. Dauert das genauso lange?

    Wenn ja, hast du vermutlich ein Datenbankproblem mit der Indizierung.

    Am Tool selbst kann es nicht liegen, da auf unserem alten Webserver auch xampplite in der selben version drauf ist und hier geht alles ziemlich fix (apache, php-konfiguration auch die selbe).

    Wenn du von vornherein Fehlerursachen ausschließt, und deshalb gar nicht erst prüfst, ob deine reine Vermutung zutreffend ist, suchst du eventuell nicht an den verantwortlichen Stellen. Nur mal so als Grundsatzanmerkung. Wenn zwei Systeme angeblich identisch sind, und sich trotzdem unterschiedlich verhalten, ist die erst Prüfung, ob wirklich alles identisch ist.

    Im Windows Taskmanager steigt der apache.exe Prozess im Moment der Abfrage auf 60-70 %. Die Abfrage selbst dauert ca. 10 Sekunden. Was ist hier los?

    Habe bereits die 'eAccelerator'-Extension installiert. Hat nichts gebracht.

    Wenn Datenbankabfragen mit PHP lange dauern, ist PHP nur extrem selten daran Schuld. Fast immer ist es die konkrete Datenbankabfrage. Insofern bringt die eAccelerator absolut nichts für dein Problem.

    - Sven Rautenberg

    1. Lass dir den von deinem Tool generierten Query mal als Text im Browser ausgeben und verwende diesen exakt so in PHPMyAdmin. Dauert das genauso lange?

      Ja, das dauert genauso lange. Das Tool läuft noch auf dem alten Server 1:1, sodass die Query genau die selbe ist.

      Wenn ja, hast du vermutlich ein Datenbankproblem mit der Indizierung.

      Ich habe von dem alten Webserver die entsprechende Datenbank exportiert (als SQL, Fremdschlüsselüberprüfung nicht deaktiviert, im Prinzip alle Einstellungen standardmäßig gelassen) und in die neue Datenbank auf dem neuen Webserver importiert.

      Wie genau stelle ich ein Indizierungsproblem fest und wie behebe ich es? Falsch exportiert?

      1. Moin!

        Wie genau stelle ich ein Indizierungsproblem fest und wie behebe ich es? Falsch exportiert?

        Möglich. Prüfe die Indices aller abgefragten Tabellen auf beiden Servern auf Identität. Handelt sich ja hoffentlich nur um eine handvoll.

        - Sven Rautenberg

        1. Möglich. Prüfe die Indices aller abgefragten Tabellen auf beiden Servern auf Identität. Handelt sich ja hoffentlich nur um eine handvoll.

          Habe ich gemacht. In unserer Datenbank gibt es 33 Tabellen. Bei der relevanten Tabelle sind alle Indizes vorhanden, 1:1.

          Spielen da die anderen Indizes der anderen Tabelle eine Rolle? Die müssten aber auch alle passen.

          1. Moin!

            Möglich. Prüfe die Indices aller abgefragten Tabellen auf beiden Servern auf Identität. Handelt sich ja hoffentlich nur um eine handvoll.

            Habe ich gemacht. In unserer Datenbank gibt es 33 Tabellen. Bei der relevanten Tabelle sind alle Indizes vorhanden, 1:1.

            Spielen da die anderen Indizes der anderen Tabelle eine Rolle? Die müssten aber auch alle passen.

            Du solltest als allererstes mal den Query auf Indexnutzung checken. Den fraglichen SQL-Query mal mit vorangestelltem EXPLAIN an die Datenbank schicken und das Ergebnis durchgucken. Oder hier posten. Daraus ergibt sich in der Regel, ob deine Indices gut sind, oder ob sie überhaupt genutzt werden.

            - Sven Rautenberg