Magento Performance Optimierung mit openSUSE und Plesk

Unser Shop Forum Shop-Systeme liefert euch Informationen, Tipps, Tricks und Hilfen zum Open-Source Shop-System Magento


Magento Performance Optimierung mit openSUSE und Plesk

Beitragvon seo-beratung » 28.06.09

Die Beschreibung der Magento Performance Optimierung basiert auf einem STRATO HighQ-Server SR-6 (v8.4) mit openSUSE 11.x inklusive Plesk 9.x x86-64 (Hardware: Arbeitsspeicher/RAM 4 GB, AMD-Prozessor/CPU Opteron 1214 HE, CPU-Leistung 2 x 2,2 GHz und Festplatten 2 x 500 GB).

ToDo-Liste

Schritt 1: MySQL Datenbank Server Konfiguration anpassen
Schritt 2: Apache Konfiguration anpassen
Schritt 3: APC PHP Bytecode Cache installieren
Schritt 4: gzip/deflate Kompression
Schritt 5: Apache Direktive FileETags
Schritt 6: Expires Header hinzufügen
Schritt 7: Speichern der Sessions in der Datenbank


Schritt 1: MySQL Datenbank Server Konfiguration anpassen

Folgende Konfigurationswerte in der Datei /etc/my.cnf anpassen auf Systemen mit mehr als 4 GB Arbeitsspeicher (RAM):
Code: Alles auswählen
#key_buffer = 16M
key_buffer = 512M
#max_allowed_packet = 1M
max_allowed_packet = 64M
#table_cache = 64
table_cache = 512
#sort_buffer_size = 512K
sort_buffer_size = 4M
#read_buffer_size = 256K   
read_buffer_size = 4M
#read_rnd_buffer_size = 512K
read_rnd_buffer_size = 2M
#myisam_sort_buffer_size = 8M
myisam_sort_buffer_size = 64M

Folgende Konfigurationswerte neu hinzufügen:
Code: Alles auswählen
tmp_table_size = 128M
query_cache_size = 96M
query_cache_type = 1
thread_cache_size = 8
max_connections = 400
wait_timeout = 300

Beim Einsatz von InnoDB Tabellen (Standard bei Magento) folgende Zeilen auskommentieren:
Code: Alles auswählen
# Uncomment the following if you are using InnoDB tables
innodb_data_home_dir = /var/lib/mysql/
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /var/lib/mysql/
innodb_log_arch_dir = /var/lib/mysql/
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size = 16M
innodb_buffer_pool_size = 2048M
#innodb_additional_mem_pool_size = 2M
innodb_additional_mem_pool_size = 20M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

Schritt 2: Apache Konfiguration anpassen

Weitere Informationen und Speicherorte bekommen Sie in der Datei /etc/apache2/httpd.conf. Die standardmäßige Konfiguration von KeepAlive finden Sie in der Datei /etc/apache2/server-tuning.conf:
Code: Alles auswählen
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15

Schritt 3: APC PHP Bytecode Cache installieren
Nachinstallieren von phpize bzw phpize5 (sowie php-config bzw. php-config5) im Vezeichnis /usr/bin/ mit dem Befehl:
Code: Alles auswählen
yast --install php5-devel
yast --install autoconf

Nachinstallieren von make mit yast gefolgt von ALT+F und ALT+S (search)

Jetzt läßt sich APC installieren:
Code: Alles auswählen
cd /
wget http://pecl.php.net/get/APC-3.0.19.tgz
tar xvfz APC-3.0.19.tgz
cd APC-3.0.19
phpize
./configure --enable-apc-mmap --with-apxs2 --with-php-config=/usr/bin/php-config
make
make install

Danach ergänzen Sie die Datei php.ini ganz am Ende um folgende Zeilen:
Code: Alles auswählen
;;;;;;;;;;;;;;;;;;;;;;;;;;
; APC PHP Bytecode Cache ;
;;;;;;;;;;;;;;;;;;;;;;;;;;
extension="apc.so"
apc.enabled=1
apc.file_update_protection=2
apc.optimization=0
apc.shm_size=32
apc.shm_segments=1
apc.gc_ttl=7200
apc.ttl=7200
apc.num_files_hint=1024
apc.enable_cli=0

Anschließend starten Sie den Webserver neu mit
Code: Alles auswählen
/etc/init.d/apache2 restart

Schritt 4: gzip/deflate Kompression

Die geladenen Apache2 Module befinden sich in der Datei /etc/sysconfig/apache2. Fügen Sie in Zeile 85 (APACHE_MODULES) vor rewrite folgendes ein: "mod_deflate".

Erstellen Sie im Ordner /srv/www/vhosts/wallaby.at/conf/ die Datei vhosts.conf mit folgendem Inhalt:
Code: Alles auswählen
LoadModule deflate_module modules/mod_deflate.so
#above line does the loading of the .so so there's no need to have
# it in the potentially changing httpd.conf

<Directory>
  <IfModule>
# the above makes sure that everything has loaded correctly.
# we don't want apache crashing for no good reason.

# Insert filter
    SetOutputFilter DEFLATE

    # Netscape 4.x has some problems
    BrowserMatch ^Mozilla/4 gzip-only-text/html

    # Netscape 4.06-4.08 have some more problems
    BrowserMatch ^Mozilla/4\.0[678] no-gzip

    # MSIE masquerades as Netscape, but it is fine
    BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

    # Don't compress images
    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary

    # or pdfs
    SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary

    # or binary archives
    SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar|iso|dia)$ no-gzip dont-vary

    # or javascript
    SetEnvIfNoCase Request_URI \.(?:js)$ no-gzip dont-vary

    # Make sure proxies don't deliver the wrong content
    Header append Vary User-Agent env=!dont-vary

    <IfModule>
      #properly handle requests coming from behind proxies
      Header append Vary User-Agent env=!dont-vary
    </IfModule>
  </IfModule>
</Directory>

Aktivieren Sie die vhosts.conf Datei mit dem Befehl:
Code: Alles auswählen
/usr/local/psa/admin/bin/websrvmng -a -v

Und jetzt im root-Ordner des Shops noch in der .htaccess-Datei ein paar Anpassungen vornehmen:
Code: Alles auswählen
# Insert filter on all content
SetOutputFilter DEFLATE
# Insert filter on selected content types only
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript

# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html

# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip

# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

# Don't compress images
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary

# Make sure proxies don't deliver the wrong content
#Header append Vary User-Agent env=!dont-vary

Ob Ihre Seite tatsächlich Daten komprimiert testen Sie bspw. mit dem Online-Tsttool von GIDNetwork bzw. mit WhatsMyIP
Schritt 5: Apache Direktive FileETags

Der Wert von ETag kommt zum Einsatz bei der Cache-Verwaltung zur Einsparung von Netzwerk-Bandbreite. Entkommentieren Sie in der .htaccess-Datei Ihres root-Verzeichnisses des Online-Shops /srv/www/vhosts/domain.tld/httpdocs und ersetzen Sie dabei auch "FileETag none" durch "FileETag +INode".

Schritt 6: Expires Header hinzufügen in der htaccess
Ersetze
Code: Alles auswählen
ExpiresDefault "access plus 1 year"

durch
Code: Alles auswählen
 ExpiresActive On
ExpiresDefault "access plus 1 month"


Schritt 7: Speichern der Sessions in der Datenbank

Diese Konfiguration legen Sie bereits bei der INstallation fest, lässt sich aber auch leicht später manuell anpassen. Ändern Sie in der local.xml im Pfad /srv/www/vhosts/domain.tld/httpdocs/app/etc folgenden Eintrag:
Code: Alles auswählen
<session_save><CDATA></session_save>

zu
Code: Alles auswählen
<session_save><CDATA></session_save>



Schritt XX: Performance-Test und Geschwindigkeits-Test
Google Page Speed - Seiten Geschwindigkeit analysieren und bewerten
Firebug und YSlow (läuft nicht mit Firefox 3.5) - Analysiert Webseiten und unterbreitet Verbesserungsvorschläge
Fiddler - HTTP-Debuggingproxy
Pingdom Tools - Full page test
Solex (Eclipse Plugin) - Web Application Testing
- Web Page Analyzer

Weiterführende Informationen:
Performance is Key! - Notes on Magento’s Performance
APC Dokumentation
squatlabs - APC installieren und APC optimieren
Benutzeravatar
seo-beratung
Moderator
 
Beiträge: 367
Registriert: 03/06
Wohnort: Kleinaitingen


Ähnliche Shop Forum Themen passend zu "Magento Performance Optimierung mit openSUSE und Plesk"

Zurück zu Magento

Wer ist online im Shop Forum?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast