Dans les projets sur lesquels je travaille, mon principal langage de développement est PHP. En raison de besoins ou pour combler les lacunes de PHP, je dois créer diverses extensions pour PHP. Par exemple, PHP lui-même ne prend pas en charge les threads, les files d'attente. , et les processus. Il ne peut pas être utilisé dans un environnement de production. On peut dire que PHP n'a pas de "processus", il existe donc de nombreux articles sur Internet expliquant comment implémenter les files d'attente PHP, le multi-threading, etc. Comprenant, au lieu d'utiliser PHP lui-même pour implémenter cette fonctionnalité qui ne peut garantir la robustesse, il est préférable d'explorer et d'utiliser certains langages intégrés et performants.
J'ai appris le langage golang sur Weibo. La syntaxe de golang est similaire à celle du C et du python. Les étudiants ayant de l'expérience dans ces deux langages auront une entrée plus fluide ! Les avantages du langage golang sont ici. Je ne les expliquerai pas un par un ! !
Après avoir étudié pendant un certain temps, l'activité de maintenance s'est heurtée à un goulot d'étranglement. De plus, comme l'activité que je maintenais appartenait à la couche d'interface, la logique était relativement simple et seules les données json étaient générées, j'ai donc commencé à le faire. utiliser Golang pour reconstruire le système existant.La transformation est en cours.Parce que certains collègues sont sceptiques à propos de Golang et que la plupart des comparaisons de performances en ligne ne sont que des résultats de mots bonjour, qui ont peu d'importance en matière de référence, j'ai utilisé deux machines intranet en ligne pour créer un système. Comparaison formelle des performances commerciales entre PHP et Golang
Configuration du serveur : 16 cœurs E5620 à 2,40 GHz 11 Go de mémoire
L'entreprise comprend : DB (oracle) et requête redis Lorsqu'il y a un cache, la base de données ne sera plus. interroger et lire directement Redis, en interrogeant deux clés primaires par lots
Utilisez le test ab d'Apache pour tester la simultanéité de 200, 20 000 requêtes
test de concurrence de Golang
qps de Golang est d'environ 9675/s, le plus élevé est d'environ 10200/s, utilisation du processeur Le taux de pointe est d'environ 10,6 %. Golang a activé le multicœur et maintenu 40 pools de connexions Redis
Le lien php ci-dessus est la réécriture d'URL de Golang, afin d'être compatible avec les projets php, ne vous méprenez pas !
Test de concurrence PHP
Le QPS de PHP est d'environ 1726/s, le plus élevé est d'environ 2100/s, le pic du CPU est de 50,1%, ce qui est assez effrayant
De plus, j'ai également testé des requêtes par lots de plus de clés primaires. de Golang est tombé à 4700/s et php à 1078/s. Lorsque la concurrence ab a été augmentée à 400, php a commencé à avoir des échecs de requêtes
Après que la concurrence de golang ait été augmentée à 2500, j'ai été surpris que ses performances soient. toujours excellent. Si vous avez des doutes, vous pouvez le tester vous-même
La conclusion tirée des résultats des tests ci-dessus : en raison de l'utilisation multicœur, le " Multi-threading » de Golang ainsi que le pool de connexions Redis, faites Allez loin dans la comparaison de concurrence avec PHP, et la puissance de traitement est environ 4 fois celle de PHP
Par conséquent, il est recommandé de maintenir un grand nombre de requêtes et de rencontres goulots d'étranglement Les étudiants du projet peuvent essayer d'utiliser Golang pour l'améliorer
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!