Post on 07-Aug-2015
1 @Dynatrace
Sous l’angle de la performance
10,11,12 février
Antoine Ferté : antoine.ferte@dynatrace.comRafael 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éveloppeurUtilisateur JAVA
Big DataAutre
Mainframe
Contenu tiersCDN
RéseauRéseau
ServeurDynatrace
7 @Dynatrace
Visibilité jusqu’au code source
8 @Dynatrace
L’impact de l’infrastructure sur les applications
DéveloppeurUtilisateur JAVA
Big DataAutre
Mainframe
Contenu tiersCDN
RéseauRéseau
ServeurDynatrace
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èseLes 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 NOTint nbElements = SPContext.Current.List.Items.Count;
Item Count est chargé depuis la table AllUserData et mis en mémoire
DOint nbElements = SPContext.Current.List.ItemCount;
29 @Dynatrace
Custom Web Parts - Bad Coding - #2DO NOTfor (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 - #2DOSPListItemCollection 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 tpsen “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