Maison > Article > développement back-end > Comprendre la transformation des performances de PHP7 en une minute (performances multipliées par 4)
PHP5.1 Le temps de réponse moyen d'un tri rapide avec 5000 numéros est de 2587 ms
PHP5.2 La moyenne le temps de réponse du tri rapide avec 5000 nombres est de 2625 ms
PHP5.3 Le temps de réponse moyen du tri rapide avec 5000 nombres est de 2509 ms
PHP5.4 Temps de réponse moyen du tri rapide de 5000 nombres 2339 ms
PHP7.0 5000 nombres temps de réponse moyen de tri rapide 685 ms
PHP5.1 Temps de réponse moyen WordPress 505 ms
PHP5.2 Temps de réponse moyen WordPress 521 ms
PHP5.3 Temps de réponse moyen de WordPress 498 ms
PHP5.4 Temps de réponse moyen de WordPress 470 ms
PHP7.0 Temps de réponse moyen de WordPress 158 ms
PHP5.4 Tri rapide de 500 numéros TPS 552
PHP7.0 500 numéros Tri rapide de numéros TPS 3165
Page d'accueil de l'application Flyme Community PHP5.4 TPS 1535
Page d'accueil de l'application Flyme Community PHP7.0 TPS 1975
Page de liste de la section Flyme Community APP PHP5.4 TPS 2237
Page de liste de la section Flyme Community APP PHP7.0 TPS 2387
1. JIT
2. Modifications dans Zval
3. Type interne zend_string
4. Modifications dans les tableaux PHP (HashTable et Zend Array)
5. Mécanisme d'appel de fonction (Fonction Convention d'appel)
6. Laissez le compilateur effectuer une partie du travail à l'avance via des définitions de macros et des fonctions en ligne
Le but du proxy Redis est la haute disponibilité et la mise en cache distribuée de Redis
Réussi Le test de performances est une connexion relativement directe vers redis. La perte de performances liée à l'utilisation de Proxy est d'environ 10 à 15 % (différentes entreprises peuvent avoir un impact plus important)
Y a-t-il donc de la place pour l'optimisation de Proxy ?
Les performances des connexions longues PHP7 Redis sont environ 10 % supérieures aux performances des connexions courtes (les différentes entreprises varient considérablement)
Le pool de connexions à la base de données est responsable de l'allocation, de la gestion et de la libération des connexions à la base de données. Il permet aux applications de réutiliser une connexion à la base de données existante au lieu d'en établir une nouvelle.
Atlas est un middleware de base de données développé et maintenu par 360. Il est situé entre l'application et MySQL. Il implémente le protocole client-serveur de MySQL, communique avec l'application en tant que serveur et communique avec MySQL en tant que client. Il protège les détails de la base de données des applications et réduit la charge sur MySQL.
Atlas prend en charge les temps d'arrêt de la base de données principale sans affecter la lecture, la séparation lecture-écriture, le partage automatique des tables, le traitement de sécurité, le redémarrage en douceur, le pool de connexions, etc.
Après avoir utilisé le pool de connexions à la base de données, l'effet de levier des performances TPS a été augmenté de 80%
Jetons un coup d'œil à l'effet
Comment Opcache accélère
Regardez les résultats après l'ajout d'opcache (moyenne des requêtes Le temps de réponse a été réduit de deux fois)
PGO est une optimisation de compilation technologie qui peut être utilisée avec des compilateurs tels que GCC pour améliorer l’efficacité de compilation du compilateur.
Bien que PGO puisse améliorer l'efficacité de la compilation, il n'est pas largement utilisé.
La raison est très simple :
1. Son modèle compliqué de double compilation et ses scénarios d'utilisation limités font que PGO semble inutile
2. Après l'émergence de produits comme opcache, l'amélioration des performances apportée par PGO Ce n'est pas très évident .
<source lang="xml" collapse="false" first-line="1"> #php-fpm.conf listen = /dev/shm/php-fcgi.sock #php-fpm2.conf listen = /dev/shm/php-fcgi2.sock #/usr/local/php/sbin/php-fpm --fpm-config /usr/local/php/etc/php-fpm.conf #/usr/local/php/sbin/php-fpm --fpm-config /usr/local/php/etc/php-fpm2.conf #代理 upstream backend{ server unix:/dev/shm/php-fcgi.sock; server unix:/dev/shm/php-fcgi2.sock; } </source>
HugePage (augmentation de 2%-3%)
La mémoire par défaut est paginée à 4 Ko, et l'adresse virtuelle et l'adresse mémoire doivent être converties, et cette conversion nécessite une recherche de table
Afin d'accélérer le processus de recherche de table, le processeur aura un intégré. TLB (Translation Lookaside Buffer). Évidemment, 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 le Cache Miss du TLB sera élevé. Donc, si nous pouvons activer des pages de mémoire volumineuses, ce manque de cache TLB peut être indirectement réduit.
<source lang="xml" collapse="false" first-line="1"> opcache.huge_code_pages=1 sudo sysctl vm.nr_hugepages=128 </source>
Optimisation des paramètres de performances de phase
Configuration php.ini
<source lang="xml" collapse="false" first-line="1"> opcache.enable=1 opcache.enable_cli=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60 opcache.save_comments=0 opcache.fast_shutdown=1 opcache.huge_code_pages=1 opcache.file_cache=/dev/shm/opcache/ </source>
PHP-FPM
<source lang="xml" collapse="false" first-line="1"> listen = /dev/shm/php-fcgi.sock pm = static pm.max_children = 320 pm.max_requests = 10240 </source>
Problèmes de performances HTTPS Nginx
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!