Heim > Artikel > Backend-Entwicklung > Hochwertige Notizen sind da! Über die Leistungsoptimierung von PHP7
1. Opcache-Prinzip
Der normale Ausführungsprozess von PHP ist wie folgt
Request-Anfrage (Nginx, Apache, CLI usw.) –> Zend-Engine liest .php-Datei –> ; scannt sein Wörterbuch und den Ausdruck –> Erstellt den auszuführenden Computercode (genannt Opcode) –> Wenn der PHP-Quellcode nicht geändert wird, muss der Opcode nicht jedes Mal neu generiert werden. In Kombination mit dem allgegenwärtigen Caching-Mechanismus können wir den Opcode zwischenspeichern. Wird es in Zukunft nicht schneller sein, direkt auf den zwischengespeicherten Opcode zuzugreifen? Aktivieren Sie das Opcode-Caching. Das folgende Flussdiagramm sieht wie folgt aus:
Der Zweck des Opcode-Cache besteht darin, wiederholte Kompilierungen zu vermeiden und den CPU- und Speicheraufwand zu reduzieren.
2. Opcache-Konfiguration
Fügen Sie unter php.ini hinzu:
// 加载opcache(需确认已安装opcache拓展) zend_extension=opcache.so // 开启opcache opcache.enable = 1 // OPcache共享内存存储大小,单位MB opcache.memory_consumption=1024 // 1G // PHP使用了一种叫做字符串驻留,默认是4MB opcache.interned_strings_buffer=32 // 这个选项用于控制内存中最多可以缓存多少个PHP文件,这个选项必须得设置得足够大,大于你的项目中的所有PHP文件的总和 opcache.max_accelerated_files=80000 // 设置缓存的过期时间(单位是秒),为0的话每次都要检查 opcache.revalidate_freq=3 // 从字面上理解就是“允许更快速关闭” opcache.fast_shutdown=1 // CLI环境下,PHP启用OPcache opcache.enable_cli=1
Durch die Aktivierung dieser Funktion „verschiebt“ PHP7 sein eigenes TEXT-Segment (Ausführungskörper) nach Huagepage Tests konnten wir bei WordPress einen kontinuierlichen QPS-Anstieg von 2 bis 3 % feststellen. Um es einfach auszudrücken: Der Standardspeicher ist in 4 KB ausgelagert, und die virtuelle Adresse und die Speicheradresse müssen konvertiert werden. Diese Konvertierung erfordert eine Tabellensuche, um den Tabellensuchvorgang zu beschleunigen. Die CPU verfügt über einen integrierten TLB (Translation Lookaside Buffer). Es ist offensichtlich, dass die Anzahl der Einträge in der Tabelle größer ist und die TLB-Größe begrenzt ist Der Cache-Miss des TLB wird vorhanden sein. Wenn wir also große Speicherseiten aktivieren können, kann dieser TLB-Cache-Miss indirekt reduziert werden. Was die detaillierte Einführung betrifft, werde ich nach langer Suche bei Google nicht näher darauf eingehen. Hier erkläre ich hauptsächlich, wie man es aktiviert Diese neue Funktion wird erhebliche Leistungsverbesserungen mit sich bringen.
2. HugePage-Konfiguration$ sudo sysctl vm.nr_hugepages=512 // 切勿越大越好,会长占内存
Reservieren Sie 512 große Seitenspeicher:
cat /proc/meminfo | grep Huge AnonHugePages: 106496 kB HugePages_Total: 512 HugePages_Free: 504 HugePages_Rsvd: 27 HugePages_Surp: 0 Hugepagesize: 2048 kB
Dann fügen Sie php.ini hinzu:
opcache.huge_code_pages=1
Sie müssen php-fpm nach der Konfiguration neu starten
Persönlicher Test
System: centOs 7
php-Version: 7.4 ! [PHP7-Leistungsoptimierung]
![PHP7-Leistungsoptimierungshinweise]
CPU: 20%-40%
Speicher: 5,8G/16G (Hier habe ich HugePage auf 2048 eingestellt)
4W in 10 Minuten Parallelität
Fehlerrate: 0 %
Erster Stresstest
Aggregationsbericht
Pro Sekunde verarbeitete Transaktionen
Zweiter Stresstest
Aggregationsbericht
Empfohlenes Lernen: „
PHP7-Tutorial“
Das obige ist der detaillierte Inhalt vonHochwertige Notizen sind da! Über die Leistungsoptimierung von PHP7. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!