Leistungsprobleme mit Magento 2

7

Ich teste meine Website unter " https://developers.google.com/speed/pagespeed/insights/ " und habe nur niedrige Bewertungen (9-12 / 100).

Mein Setup:

Virtueller Server (CentOS) mit 16 GB RAM, 6 Kernen (Intel Xeon), SSD-Speicher Magento 2.1.7 Apache 2.4.6
MariaDB 10.1

Ich habe dafür gesorgt, dass meine php.ini 14 GB RAM enthält (memory_limit = 14000M).

Auch bearbeitet .htaccessund .user.iniim Magento-Stammverzeichnis und Pub-Verzeichnis (alle haben 14 GB RAM).

Meine Konfigurationsdatei für MariaDB (/etc/my.cnf) sieht folgendermaßen aus:

[client] port = 3306 socket = /var/lib/mysql/mysql.sock

[mysqld] port = 3306 socket = /var/lib/mysql/mysql.sock skip-external-locking key_buffer_size = 384M max_allowed_packet = 10M
table_open_cache = 4096 sort_buffer_size = 16M
read_buffer_size = 4M read_rnd_buffer_size = 14M
myisam_sort_buffer_size = 64M thread_cache_size = 256

query_cache_type = 1 query_cache_limit = 4M

query_cache_size = 512M thread_concurrency = 8

log-bin = mysql-bin server-id = 1 innodb_buffer_pool_size = 3000M
innodb_additional_mem_pool_size = 80M

[mysqldump] quick max_allowed_packet = 512M

[mysql] no-auto-rehash

[myisamchk] key_buffer_size = 256M
sort_buffer_size = 256M read_buffer = 4M
write_buffer = 4M

[mysqlhotcopy] interaktives Timeout

Ich weiß nicht, warum meine Website immer noch so langsam ist (die Serverantwort beträgt laut Google Pagespeed immer 1-2,5 Sekunden), obwohl meine Hardware gut genug ist (genügend RAM).

PS: Mein Magento-Modus ist Entwickler und alle CSS-Optionen zum Minimieren und Zusammenführen sind deaktiviert.

Blackpanther0001
quelle
Bitte posten Sie Textergebnisse von Centos von ulimit -a und iostat -x zur Analyse.
Wilson Hauck
Wenn Sie Textergebnisse von Centos von ulimit -a und iostat -x zur Analyse veröffentlichen, ist jemand besser darauf vorbereitet, Vorschläge zu berücksichtigen. Gibt es eine Chance, dass wir eine Skype-Verbindung herstellen können?
Wilson Hauck
Wenn Sie bereit sind, Fortschritte
Wilson Hauck,

Antworten:

3

Grund für Slow

  1. Es befindet sich im Entwicklermodus mit aktiviertem CSS / JS-Merge / Bundle / Minify.
  2. Es läuft auf langsamer Hardware.
  3. Einige Erweiterungen von Drittanbietern beeinträchtigen die Leistung.
  4. SSD nicht verwendet.
  5. Der Ganzseiten-Cache und andere Caches sind deaktiviert.

PS: So erfahren Sie, in welchem ​​M2-Modus Sie sich befinden:

cd magento_main_folder
php bin/magento deploy:mode:show

Wenn Sie sich im Entwicklermodus befinden

Dieser Modus wird benötigt, wenn Sie gerade Ihre Site für die Produktion vorbereiten. Aber eine Wartezeit von 30 Sekunden kann sehr frustrierend und nervig sein. Hier sind 3 einfache Korrekturen, mit denen Sie versuchen können, magento2 zu beschleunigen:

1. Deaktivieren Sie CSS & JS Merge / Bundle / Minify. Dieser Trick allein hat mir geholfen, die Geschwindigkeit von 50 auf 2 Sekunden zu reduzieren.

Go to Stores > Configuration > Advanced > Developer > Javascript Settings and CSS Settings 

2. Umstellung auf PHP7 Während Magento 2 unter PHP 5.6 hervorragend funktioniert, kann eine Umstellung auf PHP7 allein die Leistung um 25% verbessern.

3. Serverressourcen Magento 2 ist ein komplexes System. Insbesondere im Entwicklermodus ist leistungsstarke Hardware erforderlich. Vermeiden Sie Virtualisierung. Stellen Sie sicher, dass Sie M2 mindestens 2 GB RAM zuweisen.

Wenn Sie sich im Produktionsmodus befinden

1. Überprüfen Sie Ihre Erweiterungen von Drittanbietern. Magento 2 kann mit Plugins und Modulen erheblich erweitert werden. Im Gegensatz zu Kernfunktionen, die vom Magento Core Team und Experten codiert wurden, werden Erweiterungen von Drittanbietern (in den meisten Fällen) von durchschnittlichen Programmierern entwickelt. Mit durchschnittlichen Fähigkeiten. Ein schlecht geschriebenes Modul kann Magento erheblich verlangsamen. Erstellen Sie eine Liste aller installierten Plugins und deaktivieren Sie sie nacheinander. Überprüfen Sie, ob dies die Leistung in irgendeiner Weise beeinträchtigt. Identifizieren Sie einen Engpass und wenden Sie sich an den Anbieter, um Unterstützung zu erhalten. Fahren Sie fort und installieren Sie ein neues Magento 2 mit Beispieldaten auf demselben Server. Vergleichen Sie die Geschwindigkeit mit Ihrer Produktionsstätte. Wenn ein Standard-M2 so langsam ist wie Ihr angepasster Magento-Speicher, fahren Sie mit Schritt 2 fort. Wenn er erheblich schneller ist, wissen Sie, dass Sie eine Erweiterung haben, die Sie verlangsamt.

2. Serverhardware macht Magento 2 langsam Sie können einfach herausfinden, ob Sie einen neuen M2 auf demselben Server installieren und dessen Leistung mit Ihrem Produktionsstandort vergleichen. Wenn Sie keinen Unterschied feststellen, ist Ihr Hosting-Plan offensichtlich nicht für magento2 geeignet. Melden Sie sich für ein besseres Hosting an und sichern Sie sich mehr CPU / RAM-Leistung. Sei hier nicht billig!

3. Stellen Sie sicher, dass der Ganzseiten-Cache aktiviert ist

 System > Cache Management
Rahul Singh
quelle
1

Ich würde empfehlen, (auch als Testoption) Lösungen wie:

  1. NewRelic
  2. Blackfire.io
  3. xdebug

Diese Tools zeigen Ihnen die genauen Traces und das Timing jedes einzelnen PHP-Trace, der an einer Operation / Transaktion beteiligt ist (und ermöglichen es Ihnen, Engpässe in Anwendungs- / Datenbankabläufen zu finden).

Piotr Siejczuk
quelle
0

Vorschläge, die Sie für Ihren Abschnitt my.cnf [mysqld] berücksichtigen sollten, um die Leistung zu verbessern

Führen Sie mit der Leertaste # Folgendes aus, um Standardeinstellungen gegenüber der Gesamtzuordnung für zuzulassen

sort_buffer_size
read_buffer_size
read_rnd_buffer_size

Stellen Sie Folgendes ein:

query_cache_limit=1M  # from 512M for max size of 1 RESULT into QC
query_cache_min_res_unit=512  # from 4096 to store more RESULTS into QC
thread_cache_size=100  # from 256 for CAP see refman V8 to avoid OOM
innodb_lru_scan_depth=256  # from 1024 to conserve CPU time every second
innodb_flush_neighbors=0  # from ON to conserve CPU SSD has no rotational delay
innodb_purge_threads=4  # from 1 to expedite purge activity
innodb_flushing_avg_loops=10  # from 30 to reduce loop delays
max_write_lock_count=16  # to allow RD after nn write lcks vs up to ~4 Billion lcks

Bitte poste den Fortschritt von Zeit zu Zeit.

Weitere Vorschläge finden Sie in meinem Profil, Netzwerkprofil für Kontaktinformationen.

Wilson Hauck
quelle
@shahirhajir Hattest du Gelegenheit, einen der oben genannten Vorschläge auszuprobieren? Fortschritte machen?
Wilson Hauck