Heim >Backend-Entwicklung >PHP7 >Hochwertige Notizen sind da! Über die Leistungsoptimierung von PHP7

Hochwertige Notizen sind da! Über die Leistungsoptimierung von PHP7

藏色散人
藏色散人nach vorne
2021-09-18 16:12:332618Durchsuche

Opcache

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

HugePage

1. HugePage-Prinzip

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

Opcache-Datei-Cache

Verwendung Opcache zum Speichern Kompilierte PHP-Dateien als Dateien, um den Schutz des PHP-Quellcodes und die Skriptbeschleunigung zu erreichen. Es wird offensichtliche Leistungsverbesserungen geben


Sie müssen php-fpm nach der Konfiguration neu starten

Persönlicher Test

System: centOs 7

php-Version: 7.4

nginx Laravel: 8,5

Vor der Optimierung

CPU: 95 % - 96 %

! [PHP7-Leistungsoptimierung]
![PHP7-Leistungsoptimierungshinweise]

Nach der Optimierung

CPU: 20%-40%
Speicher: 5,8G/16G (Hier habe ich HugePage auf 2048 eingestellt)
4W in 10 Minuten Parallelität
Fehlerrate: 0 %


Hochwertige Notizen sind da! Über die Leistungsoptimierung von PHP7Erster Stresstest

Aggregationsbericht


Hochwertige Notizen sind da! Über die Leistungsoptimierung von PHP7Pro Sekunde verarbeitete Transaktionen


Zweiter Stresstest

Aggregationsbericht

alle Transaktionen in Sekunden verarbeiten


Hochwertige Notizen sind da! Über die Leistungsoptimierung von PHP7

Empfohlenes Lernen: „

PHP7-Tutorial

Hochwertige Notizen sind da! Über die Leistungsoptimierung von PHP7

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen