Alfresco : audit de performances d’Explorer vs Share

Alfresco Share, étant plus récent qu’Alfresco Explorer, bénéficie de nouvelles améliorations et c’est bien normal. Mais au delà des nouveautés fonctionnelles, qu’en est-il des performances ? C’est ce que StarXpert a cherché à savoir en effectuant un audit des deux interfaces.

StarXpert a donc mis face à face Alfresco Explorer, l’interface développée en JSF, et Alfresco Share, l’interface développée avec le nouveau framework Spring Surf. StarXpert a utilisé JMeter pour stresser l’application, et a étudié le comportement de la machine pendant les phases de tests grâce à des outils développés en interne.

Méthodologie

La version installée est Alfresco Enterprise 3.4. Un script JMeter a été développé pour stresser l’interface Explorer. Puis, un script équivalent a été développé pour l’interface Share. Ces scripts sont simples : Ils se contentent de parcourir une dizaine d’espaces contenant entre 4 et 866 fichiers pdf (pour un total de 2 319 fichiers). Le scénario est le suivant :

  1. L’utilisateur s’authentifie
  2. Il accède à l’espace racine d’Alfresco (My Alfresco ou Repository)
  3. Il accède à l’espace de test racine, contenant les 10 espaces de tests.
  4. Il rentre dans un espace de test et liste les fichiers.

Les étapes 3 et 4 sont répétées en boucle jusqu’à la fin du test. Le script changeant d’espace à chaque itération, au total 1000 itérations sont effectuées pour chaque test.

Le test a été lancé successivement avec 5, 10, 15, 20, 25, 30, 35, 40, 45 et 50 threads simultanés. Il faut préciser qu’un thread ne correspond pas à un utilisateur réel. On peut considérer qu’un thread impact le serveur de la même façon que 5 à 10 utilisateurs travaillant simultanément.

Le serveur utilisé pour ce test est un serveur virtualisé sur vmware avec 2 cpu et 4Go de RAM, application sur Tomcat et MySQL.

Résultat

Les deux graphiques ci-dessous présentent une synthèse des résultats pour les deux interfaces.

Les barres représentent le temps de réponse moyen d’une page en millisecondes. Le premier trait pointillé correspond à 1 seconde, le premier trait plein correspond à 2 secondes.

Les lignes représentent le débit moyen en pages par minutes. L’échelle utilisée ici est exponentielle, en moyenne le débit est compris entre 300 et 1100 pages par minutes.

On constate que l’interface Explorer s’effondre lorsque la charge est trop importante (>35 threads) alors que l’interface Share encaisse la charge de façon linéaire.

On peut voir aussi que le débit maximal de la machine (~1k pages/minutes) est atteint avec 15 threads, soit 75 à 150 utilisateurs. Au dessus de ce seuil, les performances vont naturellement se dégrader.

Cependant, le point le plus important de l’étude est de constater qu’après les tests de charge, le système se rétablit parfaitement si on utilise l’interface Share, ce qui n’est pas le cas pour l’interface Explorer. Un redémarrage de l’environnement Tomcat devient indispensable !

Ceci s’explique en regardant l’évolution de la mémoire JAVA. La région Old Generation de la pile mémoire se remplit progressivement au cours des tests, jusqu’à atteindre le seuil maximal. Ceci provoque un déclenchement disproportionné du Garbage Collector et impact très fortement les performances.

En utilisant l’interface Share, ce phénomène ne se rencontre pas.

Conclusion

Cette étude nous montre que l’interface Share gère mieux la mémoire Java que l’interface Explorer. Elle peut donc plus facilement subir un pic d’activité sans compromettre la stabilité de l’application. On peut conclure également que l’usage d’outils de stress et de supervision (tels que ceux développés par StarXpert) est necessaire pour mieux calibrer et optimiser les serveurs Alfresco.

 

StarXpert dévoile de nouveaux outils d’administration d’Alfresco

StarXpert installe et personnalise des serveurs Alfresco depuis 2006. En cinq ans nous avons remonté un certain nombre de demandes de nos clients visant à faciliter l’administration d’Alfresco. Nous avons répondu à ces demandes en développant de nouveaux outils, preuve qu’Alfresco est extensible grâce à son API et à son code ouverts. Nous avons regroupé ces outils sous forme d’une suite, véritable boite à outils : les StarXpert Admin Tools. En effet, les StarXpert Admin Tools sont des webscripts qui permettent de réaliser différentes taches d’administration, et qui sont intégrés à la console d’administration Share au même titre qu’ASUR (l’outil de reporting Alfresco).

Fonctionnalités des StarXpert Admin Tools :

  1. Ajouter un manager à un site : sur un site Share, seul le gestionnaire du site peut promouvoir un membre au titre de gestionnaire. Or, si le gestionnaire vient à quitter l’entreprise, personne ne peut le remplacer. Pour pallier à ce manque, le nouvel outil permet à un administrateur d’ajouter directement un nouveau gestionnaire du site.
  2. Editer les versions d’un document : les documents définis comme ‘versionnable’ sont versionnés à la manière d’un SVN. Le nouvel outil permet de gérer ces versions, pour par exemple ne garder que la dernière version d’un document par jour, ou bien reculer ou avancer de N version. L’outil permet d’éviter une proliferation de versions rendant le suivi difficile.
  3. Configuration avancée d’alfresco (JMX) : la configuration d’alfresco ( Services, ports…) peut normalement être changée en modifiant les fichiers de configuration sur un serveur à l’arrêt. Le nouvel outil permet de changer la configuration d’Alfresco à chaud en trois étapes :
    1. Téléchargement d’un fichier CSV qui contient la configuration JMX d’alfresco.
    2. Modification des attributs désirés.
    3. Upload du fichier CSV modifié. La dernière action permet de mettre à jour la configuration d’Alfresco instantanément
  4. Lister les erreurs d’indexation Lucene : Alfresco indexe les fichiers texte grâce à lucene. Le nouvel outil permet de lister les erreurs d’indexation qui peuvent se produire : nint, nitf, nicm, nintc (Voir le projet Apache Lucene pour plus de détails sur les erreurs possibles).
  5. Afficher les permissions d’un utilisateur : Alfresco ne permet pas de voir les espaces, dossiers et fichiers sur lesquels un utilisateur possède des permissions. Le nouvel outil permet de chercher un utilisateur et d’afficher en un temps record tous les nœuds sur lesquels il a des permissions. Nous avons choisi d’afficher les nœuds de type « folder » et « content » mais il est possible d’étendre l’affichage à tous les nœuds tout aussi rapidement.
  6. Suppression des permissions d’un utilisateur : si un utilisateur est désactivé, par exemple s’il a quitté la société, on doit pouvoir supprimer ses permissions, sans pour autant supprimer l’utilisateur, afin de le garder comme auteur de ses fichiers. Le nouvel outil permet de retrouver un utilisateur et de supprimer toutes ses permissions sur le repository en un temps minimal.
  7. Accès aux consoles Alfresco et aux Webscripts : Dans la console d’administration Share, le nouvel outil facilite l’accès aux consoles d’Alfresco (Workflow, AVM, Surf…) et le rechargement des Webscripts Alfresco et Share.

En savoir plus sur Alfresco Share

Démonstration de la Gestion Documentaire Alfresco