Problème
Vous voyez des blocs rouges de temps non instrumenté dans la trace de transaction avec transaction_tracer.detail=1
défini.
Cause
Il y a deux raisons pour lesquelles vous pouvez voir des blocs rouges de temps non instrumenté dans une trace de transaction.
La première raison est lorsque vous avez une fonction qui est appelée fréquemment et qui est très rapide (en dessous du seuil par défaut de 2 ms pour la liste des 100 premières).
La deuxième raison, et la plus courante, est lorsqu'une fonction :
- Prend beaucoup de temps à exécuter
- Est écrit en C
- Il s'agit soit d'une fonction interne, soit d'une fonction fournie par un module externe
Dans cette situation, les coupables les plus fréquents sont des fonctions qui envoient de gros blocs de données ou de gros fichiers à l'utilisateur. Si l'utilisateur dispose d'une connexion lente, l'envoi de petits fichiers (de petites images par exemple) peut prendre beaucoup de temps en raison d'une simple latence du réseau. Étant donné qu'aucune fonction interne ou d'extension C n'est instrumentée, l'agent PHP n'a personne sur qui « blâmer » le temps passé, et cela apparaît dans une trace de transaction comme du temps non instrumenté.