Par définition, un site dynamique (lorsqu'il n'est pas en mode AWP) conserve sur le serveur une "session" active pour chaque internaute. Un précédent billet "le point sur ... la libération des sessions des sites Web dynamiques" du blog rappelle ce principe.

 

Pendant toute la durée de vie de la session d'un utilisateur du site, de la mémoire sera nécessaire pour sa session. Cette quantité de mémoire sera directement dépendante du développeur du site. En effet de la mémoire sera nécessaire pour :

  • toutes les variables déclarées dans le projet, les pages, les collections de procédures,
  • toutes les instances de classes,
  • les données chargées en mémoire par des requêtes,
  • les pages,
  • exécuter les codes serveurs. Par exemple une génération d'un état en PDF, ou une consolidation de données qui ne serait pas déportée sur un serveur de données ou dans un autre processus "back-office" dédié, nécessite de la RAM.

 

Pour des raisons historiques, les serveurs web avaient initialement une quantité de mémoire limitée, le serveur d'application de WEBDEV transfert systématiquement la mémoire allouée dans le swap de Windows. Ce transfert se fait lorsque la session n'est pas active. Les accès mémoires peuvent être pénalisés par ce mécanisme, notamment si le développeur fait des allocations importantes, c'est de plus en plus souvent le cas avec la "webisation" des applications.

 

Une option, pas encore documentée à ce jour, du serveur d'application de WEBDEV permet de supprimer ce "swap" systématique, le laissant alors à la charge du système d'exploitation. C'est bien plus rapide, du moment que le serveur dispose de la mémoire nécessaire aux sessions lancées (dans la négative il gérera le "swap").

 

Voici comment modifier cette gestion du serveur d'application et donc accélérer les accès :

  • lancer l'éditeur du registre REGEDIT sur le serveur en tant qu'administrateur,
  • dérouler la clé HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PC SOFT\WEBDEV\<version WEBDEV>.0 (dans le cas exceptionnel d'un serveur encore en 32 bits, la clé n'aura pas le nœud WOW6432Node)
  • ajouter une valeur chaîne (REG_SZ) nommé "LOWRAMUSAGE"
  • saisir la donnée 0 (le chiffre zéro) pour cette valeur :

 

La prise en compte du réglage est immédiate pour les prochaines sessions lancées, il n'est pas nécessaire de redémarrer le serveur web, ni le service du serveur d'application de WEBDEV.


Attention, dans ce mode le gestionnaire de tâches de Windows montre en permanence la mémoire utilisée, et non plus la mémoire après le "swap" vers un fichier d'échange. On peut donc penser que dans ce mode la session utilise plus de mémoire. C'est inexact, la même quantité de mémoire est allouée dans tous les cas, elle change simplement de zone. Un utilitaire tel que Process Explorer peut permettre de voir très précisément les espaces mémoires (les "working set") utilisés dans les deux modes (ndlr, mais là il faut aussi prévoir une lecture attentive d'un ouvrage tel que "Windows Internals" ).


Important : même si les accès à la mémoire sont plus rapides, il reste néanmoins à la charge du programmeur de libérer la mémoire qu'il utilise dans ses traitements serveurs :

  • libérer les tableaux et objets en mémoire lorsqu'ils ne sont plus utilisés,
  • libérer les requêtes lorsqu'elles ne sont plus utilisées (HAnnuleDéclaration),
  • si des pages ne sont plus utilisées après un traitement, mais que la session reste active, fermer les contextes qui n'ont plus lieux d'être (ContexteFerme),
  • fermer les connexions vers les serveurs de données lorsqu'il n'y a plus d'accès,
  • ...

 

 

< Retour

Publier un commentaire : 
Votre adresse email ne sera pas publiée