1 @Dynatrace
Sous l’angle de la performance
10,11,12 février
Antoine Ferté : antoine.ferte@dynatrace.com
Rafael Portolano : rafael.portolano@dynatrace.com
Consultants Dynatrace
2 @Dynatrace
Sous l’angle de la performance
Démos live Retex SharePointA.P.M.
Pourquoi ?
Principe de
fonctionnement
Principales causes de
lenteurs observées
Tips pour optimiser les
pages lentes
Mesurer le ressenti de
mes utilisateurs
Isoler les anomalies
10,11,12 février
[8 mn] [20 mn] [12 mn]
3 @Dynatrace
 Manque d’accompagnement
 Conception, ergonomie inadaptée
 Performance, erreurs techniques
3 freins à l’adoption de
Priorité 1 : la satisfaction utilisateurs
4 @Dynatrace
Manque de visibilité
 Des environnements techniques 
complexes
 Des outils fonctionnant en sillot
 Des situations de crise fréquentes
Etat des lieux
5 @Dynatrace
Deux questions essentielles
 Mes utilisateurs rencontrent t-ils une
insatisfaction ?
 Quelle est l’origine du dysfonctionnement ?
6 @Dynatrace
Comment Dynatrace répond à ces 2 questions ?
Développeur
Utilisateur JAVA
Big Data
Autre
Mainframe
Contenu tiers
CDN
RéseauRéseau
Serveur
Dynatrace
7 @Dynatrace
Visibilité jusqu’au code source
8 @Dynatrace
L’impact de l’infrastructure sur les applications
Développeur
Utilisateur JAVA
Big Data
Autre
Mainframe
Contenu tiers
CDN
RéseauRéseau
Serveur
Dynatrace
9 @Dynatrace
Démo #1
Mesurer le ressenti utilisateur
10 @Dynatrace
Support: Décrivez-moi votre écran
User: [Echap], [F1], [F2], [F3] ...
Support: Non ! Ca c'est votre clavier !
L'écran, c'est la télé ...
User : Vous me prenez pour un C..
ou quoi ?
11 @Dynatrace
www.laval.ca
Exemple d’une visite utilisateur sur le site de Laval monitoré par Dynatrace
coté client uniquement (pas d’agent applicatif)
12 @Dynatrace
Vue sur toutes requêtes web générées par mes utilisateurs.
Présentation des temps de réponses et du poids des ressources.
Analyse de la visite dans la solution Dynatrace
13 @Dynatrace
Cartographie de la transaction et temps de réponse
14 @Dynatrace
Actions utilisateurs de ma visite (quelque soient les
navigateurs web ou mobile)
15 @Dynatrace
Navigation descendante -> quelles sont
les transactions générées par cette action
16 @Dynatrace
Séquence d’appel des ressources : plus 1,8 sec consommé
pour charger le fichier « jquery-ui-accordion.js »
17 @Dynatrace
Vérification de l’impact de ce fichier JS sur les temps de réponse
et le trafic : ce fichier est appelé 26 fois (sur toutes les pages
visitées, une optimisation semble nécessaire)
18 @Dynatrace
La visibilité transverse complète
Démo #2
19 @Dynatrace
Navigation sur un site de GED monitoré par Dynatrace (agent applicatif installé)
Navigation puis tentative
d’ouverture d’un fichier
Excel qui aboutit par une
popup d’erreur
20 @Dynatrace
Pour chaque visite : chemin de navigation présenté lisiblement.
Affichage des actions utilisateurs et des temps de réponse.
Analyse de la visite dans Dynatrace :
21 @Dynatrace
- Temps de réponse passés dans chaque tiers
- Etat de santé : Applicatif, Process et des Hosts
Cartographie de ma visite : 
Cartographie de bout en bout de ma visite :
22 @Dynatrace
Détail de l’état de santé de mon Host
23 @Dynatrace
Descente dans le code pour retrouver l’exception apparue à
l’ouverture de mon doc Excel : « Excel Services not running »
24 @Dynatrace
Visibilité sur les requêtes SQL appelées depuis la couche applicative
25 @Dynatrace
Vérification de la configuration sur la
centrale d’administration des Excel
Service de mon WebApp
26 @Dynatrace
Synthèse
Les problèmes peuvent venir de partout !
Côté client
 Des pages complexes, lourdes, des CDN peu performants (cache de contenu)
 JavaScripts (séquence et poids) et compatibilité Browsers
Déploiement / configuration
 Crawl perpetual, Service de cache, MySite mal dimensionnés, …)
Code custom
27 @Dynatrace
Pages lentes : causes & solutions
Retours
d’expériences
28 @Dynatrace
Custom Web Parts - Bad Coding #1
Tous les List Items sont remontés dans la requête la BDD
DO NOT
int nbElements = SPContext.Current.List.Items.Count;
Item Count est chargé depuis la table AllUserData et mis en mémoire
DO
int nbElements = SPContext.Current.List.ItemCount;
29 @Dynatrace
Custom Web Parts - Bad Coding - #2
DO NOT
for (int itemIx=0;itemIx< SPContext.Current.List.Items.Count;itemIx++)
{ SPListItem listItem = SPContext.Current.List.Items[itemIx];
// do something ... }
Chaque itération engendre 2 ExecuteReader ( count & accés aux proprietés )
Au final 202 appels SQL avec plus d‘1 sec
30 @Dynatrace
Custom Web Parts - Bad Coding - #2
DO
SPListItemCollection items = SPContext.Current.List.Items;
foreach (SPListItem listItem in items)
{ // do something ...}
Une seule requête à la base pour remonter la collection
31 @Dynatrace
Composants (Ex. Grid Control) - #3
Chaque Cellule de grille 
exécute un select.
493 au total !
Aucune de ces exécutions 
n’a été préparée
32 @Dynatrace
Call Asynchrone - #4
Async Threads occupés en I/O
33 @Dynatrace
1er Appel “DoAsyncCall” trés lent - #4
Web Service appelé par la WebPart
L’HttpWebRequest utilise la class ServicePoint
Le 1er Web Service met 5.8s à retrouver les infos
34 @Dynatrace
Les threads attendent ! - #4
On a 10 appels parallèles en tâche de fond qui attendent
Les autres threads passent leur tps
en “waiting” dans the ServicePoint
35 @Dynatrace
Solution: Change Defaults #4
36 @Dynatrace
37 @Dynatrace
Essayez gratuitement Dynatrace Free Edition
Téléchargement sur Dynatrace.fr

Reprenez la main sur vos applications SharePoint en mesurant et en optimisant la performance et la disponibilité de cet environnement

  • 1.
    1 @Dynatrace Sous l’anglede la performance 10,11,12 février Antoine Ferté : antoine.ferte@dynatrace.com Rafael Portolano : rafael.portolano@dynatrace.com Consultants Dynatrace
  • 2.
    2 @Dynatrace Sous l’anglede la performance Démos live Retex SharePointA.P.M. Pourquoi ? Principe de fonctionnement Principales causes de lenteurs observées Tips pour optimiser les pages lentes Mesurer le ressenti de mes utilisateurs Isoler les anomalies 10,11,12 février [8 mn] [20 mn] [12 mn]
  • 3.
    3 @Dynatrace  Manque d’accompagnement Conception, ergonomie inadaptée  Performance, erreurs techniques 3 freins à l’adoption de Priorité 1 : la satisfaction utilisateurs
  • 4.
    4 @Dynatrace Manque devisibilité  Des environnements techniques  complexes  Des outils fonctionnant en sillot  Des situations de crise fréquentes Etat des lieux
  • 5.
    5 @Dynatrace Deux questionsessentielles  Mes utilisateurs rencontrent t-ils une insatisfaction ?  Quelle est l’origine du dysfonctionnement ?
  • 6.
    6 @Dynatrace Comment Dynatracerépond à ces 2 questions ? Développeur Utilisateur JAVA Big Data Autre Mainframe Contenu tiers CDN RéseauRéseau Serveur Dynatrace
  • 7.
  • 8.
    8 @Dynatrace L’impact del’infrastructure sur les applications Développeur Utilisateur JAVA Big Data Autre Mainframe Contenu tiers CDN RéseauRéseau Serveur Dynatrace
  • 9.
    9 @Dynatrace Démo #1 Mesurerle ressenti utilisateur
  • 10.
    10 @Dynatrace Support: Décrivez-moivotre écran User: [Echap], [F1], [F2], [F3] ... Support: Non ! Ca c'est votre clavier ! L'écran, c'est la télé ... User : Vous me prenez pour un C.. ou quoi ?
  • 11.
    11 @Dynatrace www.laval.ca Exemple d’unevisite utilisateur sur le site de Laval monitoré par Dynatrace coté client uniquement (pas d’agent applicatif)
  • 12.
    12 @Dynatrace Vue surtoutes requêtes web générées par mes utilisateurs. Présentation des temps de réponses et du poids des ressources. Analyse de la visite dans la solution Dynatrace
  • 13.
    13 @Dynatrace Cartographie dela transaction et temps de réponse
  • 14.
    14 @Dynatrace Actions utilisateursde ma visite (quelque soient les navigateurs web ou mobile)
  • 15.
    15 @Dynatrace Navigation descendante-> quelles sont les transactions générées par cette action
  • 16.
    16 @Dynatrace Séquence d’appeldes ressources : plus 1,8 sec consommé pour charger le fichier « jquery-ui-accordion.js »
  • 17.
    17 @Dynatrace Vérification del’impact de ce fichier JS sur les temps de réponse et le trafic : ce fichier est appelé 26 fois (sur toutes les pages visitées, une optimisation semble nécessaire)
  • 18.
    18 @Dynatrace La visibilitétransverse complète Démo #2
  • 19.
    19 @Dynatrace Navigation surun site de GED monitoré par Dynatrace (agent applicatif installé) Navigation puis tentative d’ouverture d’un fichier Excel qui aboutit par une popup d’erreur
  • 20.
    20 @Dynatrace Pour chaquevisite : chemin de navigation présenté lisiblement. Affichage des actions utilisateurs et des temps de réponse. Analyse de la visite dans Dynatrace :
  • 21.
    21 @Dynatrace - Tempsde réponse passés dans chaque tiers - Etat de santé : Applicatif, Process et des Hosts Cartographie de ma visite :  Cartographie de bout en bout de ma visite :
  • 22.
    22 @Dynatrace Détail del’état de santé de mon Host
  • 23.
    23 @Dynatrace Descente dansle code pour retrouver l’exception apparue à l’ouverture de mon doc Excel : « Excel Services not running »
  • 24.
    24 @Dynatrace Visibilité surles requêtes SQL appelées depuis la couche applicative
  • 25.
    25 @Dynatrace Vérification dela configuration sur la centrale d’administration des Excel Service de mon WebApp
  • 26.
    26 @Dynatrace Synthèse Les problèmespeuvent venir de partout ! Côté client  Des pages complexes, lourdes, des CDN peu performants (cache de contenu)  JavaScripts (séquence et poids) et compatibilité Browsers Déploiement / configuration  Crawl perpetual, Service de cache, MySite mal dimensionnés, …) Code custom
  • 27.
    27 @Dynatrace Pages lentes: causes & solutions Retours d’expériences
  • 28.
    28 @Dynatrace Custom WebParts - Bad Coding #1 Tous les List Items sont remontés dans la requête la BDD DO NOT int nbElements = SPContext.Current.List.Items.Count; Item Count est chargé depuis la table AllUserData et mis en mémoire DO int nbElements = SPContext.Current.List.ItemCount;
  • 29.
    29 @Dynatrace Custom WebParts - Bad Coding - #2 DO NOT for (int itemIx=0;itemIx< SPContext.Current.List.Items.Count;itemIx++) { SPListItem listItem = SPContext.Current.List.Items[itemIx]; // do something ... } Chaque itération engendre 2 ExecuteReader ( count & accés aux proprietés ) Au final 202 appels SQL avec plus d‘1 sec
  • 30.
    30 @Dynatrace Custom WebParts - Bad Coding - #2 DO SPListItemCollection items = SPContext.Current.List.Items; foreach (SPListItem listItem in items) { // do something ...} Une seule requête à la base pour remonter la collection
  • 31.
    31 @Dynatrace Composants (Ex.Grid Control) - #3 Chaque Cellule de grille  exécute un select. 493 au total ! Aucune de ces exécutions  n’a été préparée
  • 32.
    32 @Dynatrace Call Asynchrone- #4 Async Threads occupés en I/O
  • 33.
    33 @Dynatrace 1er Appel“DoAsyncCall” trés lent - #4 Web Service appelé par la WebPart L’HttpWebRequest utilise la class ServicePoint Le 1er Web Service met 5.8s à retrouver les infos
  • 34.
    34 @Dynatrace Les threadsattendent ! - #4 On a 10 appels parallèles en tâche de fond qui attendent Les autres threads passent leur tps en “waiting” dans the ServicePoint
  • 35.
  • 36.
  • 37.
    37 @Dynatrace Essayez gratuitementDynatrace Free Edition Téléchargement sur Dynatrace.fr