PHP/mySQL sehr langsam

WulfmanGER

Commander
Registriert
Juli 2005
Beiträge
2.225
Hallo zusammen,

ich hab meinen Homeserver geupdatet ... von i3-560 (8GB; WHS2011) auf R5-3400G (16GB; Win10Pro). Zudem hab ich Webroot und Datenbanken von einer SATA2-SSD auf eine NVMe umgezogen. Die (Major-)Versionen, Konfig hab ich 1:1 übernommen. Meine Annahme war jetzt: Die sehr gute Performance wird beibehalten. Besser ging es nicht wirklich.

Leider nicht. Das Problem ist aber nicht PHP an sich und auch nicht mySQL an sich - es ist das zusammenspiel von beiden.

Test #1:
phpMyAdmin -> Ich rufe folgendes auf
Code:
SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE';
Dauer: ca. 15sek.

Den gleichen Befehl gebe ich jetzt auf der Console ein (mysql.exe)
Dauer: 0,09sek

=> mySQL scheint also nicht "verkonfiguriert" zu sein. Auch andere Querys per Console -> Top

Test #2:
ich hab eine reine PHP-Anwendungen ohne Datenbankabfragen. Hier kann ich wild rumklicken und bekomme SOFORT content angezeigt.

Ich vermute hier also das php und mySQL nicht sauber miteinander kommunizieren.

Mir fehlt jetzt leider ein Ansatz wo ich das Problem suchen könnte. Habt ihr da eine Idee?

Versionen:
php 5.6.40
mySQL 5.7.17
Apache 2.4.41 (mit http/2)
Windows 10 Pro (aktuell)

Danke schon mal ;)
 
Mal mit einem aktuellen PHP (7.4) probieren?
 
Das ist der Fehler, aus eigener Erfahrung, Tests und Berichten bekannt. Nimm PHP in der aktuellen Version.

...

Ergänzung ()

Lawnmower schrieb:
Mal mit einem aktuellen PHP (7.4) probieren?

Nein - ich hab noch eine 7.2 hier liegen, die ich aber gerade nicht zum laufen bekommen. Aber wie gesagt: warum ist das zusammenspiel zwischen php und mysql mit einem schnelleren System langsamer als mit einem langsamen System? Macht jetzt nicht so sehr sinn? Oder übersehe ich da was?

Wenn ich so einfach auf 7.x wechseln könnte, hätte ich das zudem schon lange gemacht :( leider hab ich hier mehrere Scripte liegen die schon über 10 Jahre alt sind ... mit 7.x darf ich alles neu machen (da bin ich bei -> wollte dafür auch die nächste Zeit 7.x parallel installieren) - das sind mehrere Tausend Zeilen - das macht man nicht mal eben so :(
 
Zuletzt bearbeitet:
Und wie kommunizieren PHP und MySQL?

Klingt nach irgendeinem Limit, was irgendwo noch gesetzt ist.
 
wie wird die verbindung zum sql aufgebaut? per name oder IP.
Das mal umstellen vielleicht geht es dann besser
 
PHP und MySQL können entweder per Socket oder per IP miteinander kommunizieren (bei localhost wird meist der Socket verwendet). Bei IP kann der Verbindungsaufbau durchaus lange dauern, z.B. wenn IPv6 falsch konfiguriert ist (erst Aufbau per IPv6, Timeout und dann Rückfall auf IPv4).
 
mySQL liegt natürlich auf den gleichen System. Wie baut phpMyAdmin den die Verbindung auf? Und wie stell ich das um? Meine Scripte bauen über localhost auf.

Das mit IPv6 ist ein guter Ansatz gewesen - aber Windows-Seitig hab ich das deaktiviert (wie bei WHS schon). In der Apache, PHP, SQL-Konfig nutze ich kein IPv6.

Ich hab weder Konfig noch Scripte geändert mit dem Umzug.

RalphS schrieb:
Klingt nach irgendeinem Limit, was irgendwo noch gesetzt ist.
an sowas hab ich auch gedacht ... aber wie finde ich das?


Ich hatte unter WHS vor Jahren mal ein ähnliches Problem. Die Performance war nahezu im Keller. Ich hab optimierungstipps für die 3 Komponten durchprobiert (Konfigänderungen) - brachte mich nur im Nachkommabereich näher an einer akzeptablen Geschwindigkeit. Habe dann mal alles was mit mysql/apache/php zu tun hat in der Ausschlussliste der des MS-Virenscanners gesetzt -> Peng -> Super Performance! Das hab ich hier jetzt auch schon probiert. Die SQL-Dateien, Verzeichnisse, Prozesse .... brachte nichts.
Ergänzung ()

7.2 installiert, aktiviert -> KEINE Verbesserung. Immer noch das gleiche Performancegap ...
Ergänzung ()

Noch ein Nachtrag ... die IPv6-Idee find ich langsam Charmant ... Netstat sagt mir das neben den ganzen IPv4-Verbindungen mit server:3306 (wartend) auch eine Verbindung mit ::1 (also IPv6) versucht wird aufzubauen. "SYN_GESENDET"

Ein Ping localhost gibt ::1 zurück.

Ok - dann forsche ich mal weiter in der Richtung :)
 
Zuletzt bearbeitet:
Wulfman_SG schrieb:
Ein Ping localhost gibt ::1 zurück.

Ok - dann forsche ich mal weiter in der Richtung :)

Ping gibt wie er lustig ist eine IP4 oder IP6 adresse zurück. Einfach -4 anhängen
 
wern001 schrieb:
Ping gibt wie er lustig ist eine IP4 oder IP6 adresse zurück. Einfach -4 anhängen
mir ging es ja erstmal darum was localhost sagt ... das Ergebnis: IPv6 ist nicht vollständig deaktiviert. (ich erinnere mich - da war auch etwas bei WHS mit ipv6)

Wenn ich in meinem Script jetzt die mySQL-Serveradresse auf 127.0.0.1 ändere -> SUPER! Sogar mein Killer-Stats-Script ist jetzt ca. 0,8sek schneller als mit dem alten System (Rechenpower schlägt eben doch fehlenden Skill G .. das Script ist über 10 Jahre alt - mal eben ändern ist aber nicht...)

phpMyAdmin nutzt also auch "localhost" statt 127.0.0.1 (hab da nie was konfiguriert)

Jetzt muss ich also Windows dazu überreden von IPv6 die finger zu lassen ...
Ergänzung ()

Problem ganz einfach gelöst ohne Windows auseinander zu frickeln ;)
Dragon0001 schrieb:
(erst Aufbau per IPv6, Timeout und dann Rückfall auf IPv4).
Das war der entscheidende Hinweis. DANKE! :)
Da der mySQL nur im LAN erreichbar ist (und von mehreren Systemen genutzt wird) - von WAN-Seiten gar nicht, steht in der mySQL jetzt: bind-address = * <- damit sind alle IPv4 und IPv6-Verbindungen erlaubt und es klappt.
 
Zuletzt bearbeitet:
Zurück
Oben