Zum Inhalt springen

Performanceoptimierung

Erstellt am 2. Juli 2013 · 1 Antwort · letzte Antwort am 3. Juli 2013

Tags: Frage

klodeckl ·

Hallo,

ich hätte da ein Problem hinsichtlich der Performance. Bei manchen TYPO3 Systemen auf meinem Server habe ich teilweise recht lange Ladezeiten, insbesondere nachdem der Cache gelöscht ist, aber auch so, Hauptsache der APC hat es nicht im Cache. Genau, der APC ist auch installiert und bekommt sogar ein ganzes GB nur zum cachen. Sobald der APC greift, rennt er ohne Ende. Wenn nicht kann es schonmal zu 8 bis 30 Sekunden Wartezeit kommen. In der Zeit ist dann immer die CPU wait load ziemlich hoch wenn ich mir mit top die Auslastung ansehe. Ich kann mir aber nicht erklären woher die wait load kommt. Andere nicht T3 Systeme sind schon flotter, z. B. ein Magento geht recht flott, aber während des Aufrufs sehe ich auch hier, das die wait load kurzzeitig schonmal auf 20 bis 50 % ansteigen kann. Ich habe aber auch das Gefühl, dass es speziell mit dem 6er Zweig von TYPO3 am schlimmsten ist (irgendwie wird doch jede neue Version langsamer).

Zum System, das ist ein i5 mit 16 GB RAM, Debian 6 mit Plesk 11, PHP 5.3.25 (mit APC) und MySQL 5.5. Apachemodule sind natürlich auch einige drauf. Die Domains laufen entweder als Fastcgi oder Apache Modul.

Viele Dank für eure Hilfe! Grüße
Bernhard

klodeckl ·

Also es tritt beispielsweise auch bei einem frisch installiertem Introduction Package von TYPO3 auf, dass es irgendeine Erweiterung/Modul macht, glaube ich daher weniger, es tritt auch auf mehreren Systemen auf und nicht nur auf einem. Die langen Ladezeiten und CPU wait load kommen nur, wenn der APC mal nicht greift.

Ich dachte bis jetzt eher immer an Apache-Tuning. Hier meine aktuelle Konfig vom Apache:

Timeout 300
KeepAlive On
KeepAliveTimeout 7
    StartServers          5
    MinSpareServers       8
    MaxSpareServers      80
    ServerLimit		400
    MaxClients          400
    MaxRequestsPerChild   0

Was wäre denn von der php.ini interessant? Memory Limit ist auf den meisten vhosts auf 256, Minimum aber 128, die betroffenen haben auf jeden Fall 256. Die Konfig vom APC ist:

; configuration for php apc module
extension=apc.so
; Es sollen Informationen über den Hochladevorgang gespeichert werden.
apc.rfc1867 = On
; Benutze upload_ als Präfix für den Eintrag im Zwischenspeicher.
apc.rfc1867_prefix = upload_
; Name des versteckten Formularelementes, welches diese Funktionalität aktiviert.
apc.rfc1867_name APC_UPLOAD_PROGRESS
;## PHP file cache 2 hours ##
apc.ttl=7200
;## User cache 2 hours ##
apc.user_ttl=7200
;## Garbage collection 1 hour ##
apc.gc_ttl=3600
;apc.shm_size=1280M
apc.shm_size=1024M
apc.max_file_size = 2M
;Relative to the number of cached files (you may need to watch your stats for a day or two to find out a good number)
apc.num_files_hint=7000
apc.user_entries_hint=4096

my.cnf:

key_buffer		= 16M
max_allowed_packet	= 16M
thread_stack		= 192K
thread_cache_size       = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover         = BACKUP
max_connections        = 250
table_cache            = 4096
table_definition_cache = 4096
max_heap_table_size = 32M
tmp_table_size = 32M
query_cache_limit	= 2M
query_cache_size        = 192M
join_buffer_size = 192K
init_connect = 'SET collation_connection = utf8_general_ci'
init_connect = 'SET NAMES utf8'
innodb_buffer_pool_size=768M
innodb_additional_mem_pool_size=500K
innodb_log_buffer_size=500K
innodb_thread_concurrency=2

Ich befürchte gerade, dass es weder mit dem Apache, noch mit MySQL zusammenhängt. Ich habe nämlich gerade den folgenden Befehl am laufen:
mysqlcheck -uadmin -p`cat /etc/psa/.psa.shadow` --auto-repair --optimize
Dabei fällt mir ebenso eine hohe wait Last auf. Was kann da noch der Auslöser sein? Das einzige was mir einfällt, dass die Festplatte evtl. zu langsam ist?

cpu-top.png