2017-04-11 2 views
0

J'ai eu quelques plaintes concernant le temps de réponse d'une application, alors je cherche où accélérer les choses. À l'aide d'un écouteur de phase de profilage et de certains wrappers de profilage, je m'attendais à trouver certaines choses qui devaient être mises en cache. Cependant, cela ne semble pas être le cas. Un essai exemple typique ressemble à ceci:Effectuer des réglages de performance et ne pas savoir où se trouve le temps

Controller>afterRestoreView completed in 0:00.000.044769 
PhaseProfiler>LIFECYCLE>RESTORE_VIEW completed in 0:00.017.090231 
PhaseProfiler>LIFECYCLE>APPLY_REQUEST_VALUES completed in 0:00.012.076884 
PhaseProfiler>LIFECYCLE>PROCESS_VALIDATIONS completed in 0:00.003.804324 
PhaseProfiler>LIFECYCLE>UPDATE_MODEL_VALUES completed in 0:00.002.898762 
PhaseProfiler>LIFECYCLE>INVOKE_APPLICATION completed in 0:00.000.113143 
Controller>beforeRenderResponse completed in 0:00.000.012222 
Controller>afterRenderResponse completed in 0:00.000.003143 
Counted resolves: 4975 
Top ten most expensive resolves: 
Total took a total of 0:00.020.281386s 
flashScope took a total of 0:00.006.770973s 
caseBean took a total of 0:00.004.517358s 
caseFilter took a total of 0:00.003.038453s 
row took a total of 0:00.001.741708s 
session took a total of 0:00.001.026528s 
compositeData took a total of 0:00.000.983215s 
uiService took a total of 0:00.000.641919s 
requestScope took a total of 0:00.000.391530s 
options took a total of 0:00.000.176558s 
PhaseProfiler>LIFECYCLE>RENDER_RESPONSE completed in 0:02.900.494895 
PhaseProfiler>LIFECYCLE completed in 0:02.936.944360 

donc quelque chose dans renderResponse est de prendre environ 2,9 secondes, mais ce n'est pas mes gestionnaires d'événements et ce ne sont pas mes fixations variables. L'utilisation de System.nanoTime n'est pas très performante, mais elle semble ajouter environ une seconde ou moins par rapport à System.currentTimeMillis, il me manque donc pas mal de temps. Je ne peux représenter que moins de 21ms.

Existe-t-il des techniques pour creuser plus profondément?

Répondre

3

Utilisez ce projet: https://www.openntf.org/main.nsf/project.xsp?r=project/XPages%20Toolbox

Bien que je n'étais pas en mesure de faire le travail de l'agent sur R9, son profileur CPU fait un travail parfait. Il peut identifier les goulets d'étranglement spécifiques à la méthode SSJS, à la méthode Java ou à l'appel de l'API Notes. Hautement recommandé.

+0

Je suis toujours sur 8.5.3 donc pas de R9 est une fonctionnalité, pas un bug: D. –

+2

XPages Toolbox devrait fonctionner sur 8.5.2+. Les éléments clés placent la base de données dans le bon emplacement (la racine), pointé vers le fichier jar, dont l'emplacement est défini dans le fichier de configuration de texte devant être placé dans le dossier du programme Domino, pointé sur le fichier notes.ini. Il doit également y avoir une modification de la politique de sécurité java (cela peut être juste pour changer les niveaux de journalisation). Par conséquent, il n'est pas recommandé pour les serveurs de production. –