php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
PHP MySql sehr langsam nach Server wechsel


 
andererseits
29-04-2019, 16:54 
 
Hallo ich bräuchte Hilfe,

ich möchte von einem alten Win2003 Server (Baujahr 2004 "IBM xSeries226") auf einen neuen Ubuntu 18.04 server (Baujahr 2012 "IBM x3500 M4") wechseln.
Der neue Server ist auch schon installiert (alles selbst installiert)
-Ubuntu 18.04 LTS
-Apache2
-PHP 5.6
-Mysql 5.7.25-0ubuntu0.18.04.2

Bis hier hin erst mal alles okay und arbeitet auch alles.

Jetzt kommt das Problem:
Wenn ich Daten importieren oder Abfragen machen möchte ist der neue Server super langsam wenn es über PHP läuft. Ich hab jetzt schon ein paar Wochen lang gegoogelt und viele dinge ausprobiert, aber jetzt weis nicht mehr weiter.

hier die beiden Server im vergleich:
Import ohne PHP direkt über die Mysql Console
alter Server: 5,8 Sekunden
neuer Server: 2,5 Sekunden

Wenn ich das gleiche über php mache:
Alter Server: 58 Sekunden
neuer Server: nach 5 Minuten bricht phpMyAdmin ab und hat gerade mal 9.500 Datensätze von 80.000 importiert
Daher tippe ich auch auf ein Problem mit PHP

info: Error log von php/mysql war immer leer (nichts dazu gekommen nach einem Testlauf)

Was ich bis her versucht habe:
-Server erneut installiert
(auch zwischen durch immer wieder mal, nach vielem installieren und deinstallieren)
-php7.2
-php5.6
-MariaDB
-MysqlDB
-Die php.ini Datei beider Server verglichen (war aber alles gleich)
-Arbeitsspeicher für PHP und Mysql erhöht
-unterschiedliche phpMyAdmin Version probiert.
-das oben genannte in verschiedenen Kombinationen versucht

Mir fällt nichts mehr ein. Der neue Server ist von der Hardware X mal schneller als der alte Server. (auch der System Monitor zeigte wenn max eine Auslastung von 1,5 bis 2,5 % der CPU an, der alte hat da schon eher 25% der CPU genutzt.
Daher vermute ich eine Einstellungssache)

Wo könnte ich anfangen zu suchen.
Oder hat jemand das auch schon mal gehabt und kann mir sagen was das Problem ist.

Für Ideen und Tipps währe ich echt dankbar.

 
h3ll
29-04-2019, 20:19 
 
phpMyAdmin eignet sich auch nicht wirklich für große Imports. Mach sowas besser auf der Command Line.

 
andererseits
29-04-2019, 20:53 
 
Hallo danke für die Antwort :-)


das hab ich auch schon probiert .. über nein eigenes geschriebenes script zum import!



Mein Script über die Shell aufgerufen:
alter Server: 58 Sekunden
neuer Server: nach 1 Stunde abgebrochen "von mir" und immer noch nich alles importiert



wollte das (mein Script) extra weg lassen.
Um zu Zeigen das ich keine doofen Programmier fehler gemacht habe und hab es ja auch über verschiedene PHP wie phpMyAdmin versionen versucht.


der Alte server war immer in max 1 Minute mit der Datei fertig
der neue Server .. noch nich mal na 1 Stunde.


(außnahme direkt über die mysql shell)


Aber greiffe halt nun mal über PHP auf die Datenbank zu.

 
h3ll
30-04-2019, 10:52 
 
Wie sieht die CPU- und Speicherauslastung aus?

 
andererseits
30-04-2019, 12:10 
 
Hallo die Auslastung sieht so aus:

CPU: 0,9% - 1,8% (Ruhezustand ist 0,7%)
Arbeitsspeicher: 5,1% (Ruhezustand ist 4,9%)

 
SysOp
30-04-2019, 15:16 
 
Du weisst nicht wirklich was du da tust oder?

Mit top oder htop bei laufendem Import nachsehen, wo das Problem steckt und dann entsprechend die Logs hochschrauben und Details ansehen.

 
andererseits
30-04-2019, 16:56 
 
nich wirklich,
hatte halt damals denn alten Server mit Win2003 und php, apache und mysql
auch installiert. Und der lief halt direkt vernünftig. (Für meine Verhältnisse)

hier die angaben von htop
apache2: Dauer 4 Minuten CPU max 2%, MEM 0,2 %
mysql: CPU im Durchschnitt 1,3% (max für ne Sek. 9,3%), MEM 1,3 %
der Server hat 16 GB MEM

Welche Logs sollte ich mir anschauen?
kenne:
/var/log/apache2/error.log oder error.log.1
(hier sind nach dem Test keine Meldungen dazu gekommen)
Einstellung in der php.ini sind
; log_errors
; Default Value: Off
; Development Value: On
; Production Value: On
und hatte es auch mal so laufen lassen:
; log_errors
Default Value: On
Development Value: On
Production Value: On

/var/log/mysql/error.log
(hier genau so bzw letzter Eintrag heute 9 Uhr "ready for connections")

Sollte ich mir da noch andere logs ansehen?

 
SysOp
02-05-2019, 14:05 
 
Wie die Namen error.... schon sagen liegen in den Logfiles wohl nur Fehlermeldungen.

htop lässt sich schön nach CPU-Last sortiert ausgeben, da sieht man gleich, ob und welcher Dienst bzw Subprozess CPU frisst.

http://localhost/server-status hilft den Apache zur Laufzeit zu analysieren und eventuelle Ressourcen-Fresser im Apache zu finden.

für langsame queries gibt es ein eigenes logging. ein kleiner Abriss, was man machen kann hier:
MySQL Log File aktivieren - Error vs. Query vs. Slow Query (http://www.sysadminslife.com/linux/mysql-log-file-aktivieren-error-vs-query-vs-slow-query/)

bzw etwas detaillierter hier
https://dev.mysql.com/doc/refman/8.0/en/slow-query-log.html


ps.
ich mag die Thomas Krenn Seiten ganz geren, da gibt es auch etwas zum Thema Mysql-Performance
https://www.thomas-krenn.com/de/wiki/MySQL_Performance_Tuning da wird auf ein Perlscript zum Tunen verwiesen, das kann helfen Engpässe zu finden.

pps
Ich vergass, ich nutze mariadb, sollte das bei dir auch so sein, hier zum slow_query_log in mariadb
https://www.cyberciti.biz/faq/how-to-set-and-enable-mariadb-slow-query-log-linux-unix/

Ach ja, cool, dass du wenigstens zugibst "Ahungslos" zu sein, die meisten streiten herum. Schon deshalb gehört dir geholfen... ;-)

 
andererseits
03-05-2019, 13:00 
 
Hallo

dir schon mal danke für deine Mühe werde mir das alles mal übers WE und nächste Woche durchlesen und mal schauen was ich so finde.

Hab auch noch ein paar eigene Ideen denen ich nachgehen werde.

kann also ein paar Tage dauern bis ich mich hier wieder melde.

bis hierhin schon :danke:


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:34 Uhr.