Maison  >  Article  >  développement back-end  >  Les notes de haute qualité sont ici ! À propos de l'optimisation des performances PHP7

Les notes de haute qualité sont ici ! À propos de l'optimisation des performances PHP7

藏色散人
藏色散人avant
2021-09-18 16:12:332502parcourir

Opcache

1. Principe d'Opcache
Le processus d'exécution normal de PHP est le suivant

demande de requête (nginx, apache, cli, etc.) –> ; scanne son dictionnaire et son expression –> Analyser le fichier –> Créer le code informatique à exécuter (appelé Opcode) –> Enfin, exécuter l'Opcode –> exécuté une fois. Si le code source PHP ne change pas, alors l'Opcode ne changera pas. Évidemment, il n'est pas nécessaire de régénérer l'Opcode à chaque fois. Combiné avec le mécanisme de mise en cache omniprésent sur le Web, nous pouvons mettre en cache l'Opcode. Ne sera-t-il pas plus rapide d'accéder directement à l'Opcode mis en cache à l'avenir ? Activer la mise en cache de l'Opcode L'organigramme suivant est le suivant :

Le but du cache de l'Opcode est d'éviter une compilation répétée et de réduire la surcharge du processeur et de la mémoire.

2. Configuration d'Opcache
Ajouter sous php.ini :

// 加载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. Principe de HugePage

En activant cette fonctionnalité, PHP7 "déplacera" son propre segment TEXTE (corps d'exécution) vers Huagepage , dans le précédent. tests, nous avons pu constater régulièrement une augmentation du QPS de 2 à 3 % sur WordPress. Quant à ce qu'est Hugepage, pour faire simple, la mémoire par défaut est paginée en 4 Ko, et l'adresse virtuelle et l'adresse mémoire doivent être converties, et cette conversion nécessite une recherche dans la table afin d'accélérer le processus de recherche dans la table. , le CPU aura un TLB (Translation Lookaside Buffer) intégré, il est évident que si la page virtuelle est plus petite, le nombre d'entrées dans le tableau sera plus important et la taille du TLB est limitée. Plus il y a d'entrées, plus elle est élevée. le Cache Miss du TLB le sera, donc si nous pouvons activer les grandes pages de mémoire, nous pouvons indirectement réduire ce TLB Cache Miss. Quant à l'introduction détaillée, je n'entrerai pas dans les détails après de nombreuses recherches sur Google. Ici, j'explique principalement comment faire. activez cette nouvelle fonctionnalité, qui apportera des améliorations significatives des performances.

2. fichiers php compilés en tant que fichiers pour obtenir la protection du code source php et l'accélération des scripts. Il y aura des améliorations évidentes des performances
2. Configuration du cache de fichiers Opcache

Ajoutez dans php.ini:

$ sudo sysctl vm.nr_hugepages=512 // 切勿越大越好,会长占内存
De cette façon, PHP permettra d'exporter certains fichiers binaires Opcode. être mis en cache dans le répertoire /tmp, qui peut exister tout au long du cycle de vie PHP

Vous devez redémarrer php-fpm après la configuration

Test personnel
Système : centOs 7
version php : 7.4 nginx. laravel : 8,5

Avant optimisation

cpu : 95%-96%Mémoire : 2G/16G

Concurrence 4W en 10 minutes

Taux d'échec : 24%Rapport d'agrégation



Traitement des transactions par seconde
! [Optimisation des performances PHP7]

![Notes d'optimisation des performances PHP7]


Après optimisation

Cpu : 20 % -40 %

Mémoire : 5,8 G/16 G (Ici, j'ai réglé HugePage sur 2048)

4W en 10 minutes Concurrence
Taux d'échec : 0 %Les notes de haute qualité sont ici ! À propos de loptimisation des performances PHP7


Premier test de stress

Rapport d'agrégationLes notes de haute qualité sont ici ! À propos de loptimisation des performances PHP7

Transactions traitées par seconde




Deuxième test de stress

Rapport d'agrégation


Les notes de haute qualité sont ici ! À propos de loptimisation des performances PHP7 chaque Traiter les transactions en quelques secondes

Les notes de haute qualité sont ici ! À propos de loptimisation des performances PHP7Apprentissage recommandé : "

Tutoriel PHP7

"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer