Configuration des paramètres de mémoire / Memory configuration



Produit concerné / Related product

JMap

Versions

4, 5, 6, 6.5, 7



Jump to English version

Le besoin de mémoire de JMap Server dépend de son utilisation et de sa charge (le volume de données vectorielles et matricielles, le nombre et type de déploiements, le nombre d'applications, le nombre de projets et de couches, les extensions, etc.), variant d'un serveur à l'autre. La configuration des paramètres de mémoire est essentielle au fonctionnement optimal de JMap. 

Paramètres système

La configuration de ces paramètres se trouve dans le fichier /bin/startjmapserver.vmoptions. Le fichier contient deux paramètres relatifs à l'utilisation de la mémoire :  

1) -Xmx est la mémoire totale allouée à JMap. La valeur par défaut est choisie lors de l'installation initiale de JMap ('Heap size'). Par exemple, -Xmx768m indique que JMap dispose de 768 Mo pour son ensemble, -Xmx3000m indique que JMap dispose de 3 Go. Celui-ci est le paramètre à augmenter si vous voulez assigner plus de mémoire à JMap. En pratique, souvent le processus de JMap dépasse la quantité de mémoire allouée étant donné que JMap démarre des processus externes à Java qui ne sont pas limités à cette valeur (utilisation de GDAL, librairies C++ DWG, DGN, etc.).

La taille de la mémoire ne doit pas dépasser la mémoire disponible du serveur JMap. Une valeur trop élevée peut entraîner des manques de mémoires du système et cela peut affecter d'autres applications : la totalité de la mémoire du système étant utilisée, le système peut compenser en utilisant le disque dur, ce qui nuit fortement ses performances. Il peut même empêcher certaines applications du serveur de bien fonctionner, n'étant pas en mesure de leur fournir la mémoire requise. À l'inverse, une valeur trop petite peut causer des OutOfMemoryError lors des opérations de JMap Server, ne permettant pas son bon fonctionnement. Trouver une valeur adéquate de mémoire totale devient donc critique.

Un serveur pour une organisation de taille moyenne est souvent configuré avec 2000m à 4000m de mémoire.  Les serveurs d'organisations de taille plus importante le sont avec 4000m à 8000m ou plus. L'utilisation actuelle de mémoire d'un serveur JMap peut être visualisée à partir de JMap Admin, dans la section JMap Server / Status ou à l'aide d'un gestionnaire de tâches du système. Par exemple, un serveur Windows 2012 64 bits avec 8 Go de mémoire physique dont 6 Go de mémoire libre, pourrait être configuré avec une valeur de 768m à ~5500m. Pour un serveur JMap de taille modeste, 5000m serait probablement excessif et n'offrirait aucun avantage de performance comparativement à 2000m ou 3000m, ses besoins de mémoires étant déjà satisfaits.

2) -XX:MaxPermSize, est un paramètre pour la génération permanente. La valeur par défaut de -XX:MaxPermSize=256m est largement suffisante pour la majorité des serveurs. Si aucune erreur spécifique à ce paramètre ne survient, vous n'avez pas besoin d'augmenter ce paramètre et même l'augmenter ne présenterait aucun gain de performance. Ce paramètre n'est plus utilisé depuis Java 1.8.

Paramètres de l'Admin

Certaines configurations peuvent être changées à partir de JMap Admin.  

Section cache

1) Taille de la mémoire. Comprend les données chargées antérieurement afin de minimiser les requêtes à la base de données et au disque. Ce cache aide à améliorer les performances de JMap Server. Les statistiques du cache sont affichées dans la section État de JMap Server. Ce paramètre est utilisé pour contrôler le volume de tuiles des couches tuilées gardées en mémoire, ce qui évite des accès en lecture sur le disque dur et accès à la base de données. Par défaut, 64 Mo indique qu'il gardera au maximum 64 Mo de tuiles en mémoire. La taille du cache de chaque tuile est visible dans la section configuration de la couche.

La valeur à configurer dépend du volume et types de données des couches tuilées. Le taux d’efficacité est un bon indicateur pour la taille. Si le taux est très élevé et la mémoire utilisée pour les données est basse, ex; 99% efficacité avec utilisation 234/1024 Mo, la taille de mémoire de 1024 est trop élevée. Dans ce cas, 256 ou 300 Mo serait préférable. Avec 23% efficacité et 63.7 / 64 Mo, la taille du cache en mémoire est trop basse et le cache n’est pas efficace. 2.5 à 5% de la mémoire congurée pourrait être un bon point de départ. Ex: Pour 4 Go de mémoire, 100-200 Mo pour le cache de des données.

2) Taille de l'imagerie. Taille du cache destinée aux opérations d'imagerie. Ce cache est utilisé par JMap Server lors du traitement de fichiers images (sources de données matricielles qui lisent les fichiers images). Il aide grandement à améliorer les performances de JMap Server lors de la manipulation d'images volumineuses. Ce paramètre n'est utilisé que pour les sources de données de type TIFF/GEOTIFF et l'augmenter peut accélérer la génération du cache des images et donc le temps de la mise à jour de la source de données. Les sources de données GDAL, ECW/JPEG2000 et WMS ne sont pas affectées par ce paramètre, elles utilisent l'ensemble de la mémoire de JMap et n'ont aucun bénéfice d'une augmentation de ce paramètre.

Il est important de considérer que la mémoire utilisée par le cache ne sera plus disponible pour les opérations de JMap Server.  Par exemple, avec un Xmx de 768Mo, si la taille du cache était augmentée à 256 Mo et celui de l'imagerie à 256 Mo, JMap pourrait utiliser jusqu'à 512 MB de cache ce qui lui laisserait 256 Mo pour son fonctionnement. Cette configuration est inadéquate et il y aurait de fortes chances que JMap tombe en OutOfMemory puisque JMap Server ne disposerait plus d'assez de mémoire pour son fonctionnement normal. Un OutOfMemoryError étant une erreur critique, JMap pourrait par exemple ne plus accepter de connexion des clients, ne pas être capable de répondre à une requête (ex; recherche d'adresse, extraction d'éléments,etc.), ne plus être en mesure de générer les images requises pour les clients webs, ne pas être capable de sauvegarder des modifications faites à partir de l'Admin, etc.

Section producteur d'image

Chaque projet contient un producteur d'image qui est utilisé pour la génération d'images pour les clients webs ou mobile. L'augmentation de la taille maximale de sa mémoire peut apporter des améliorations de performance en fonction des données du projet. Pour un projet déployé avec un client web/mobile configuré pour utiliser GeoWebCache, le temps de la génération du cache de GeoWebCache pourrait être améliorée. Sans GeoWebCache, les images demandées par les clients sont générées à la demande et pour un projet avec un volume de données important, les besoins de mémoire pourraient dépasser la valeur par défaut de 64 Mo. Dans ce contexte, l'augmentation de la taille de la mémoire pourrait améliorer le temps de génération des images et réduire le temps d'attente de réponse des clients. Encore une fois, la mémoire allouée au producteur d'image n'est plus disponible pour l'ensemble des opérations de JMap Server et sa taille optimale dépend du type et volume de données et des configurations des couches des projets.

Paramètres de mémoire des déploiements Pro

Cette section n'est pas reliée à la configuration de mémoire de JMap Server mais aborde la configuration de mémoire des applications JMap Pro.

Lors du déploiement d'une application Pro, deux paramètres de mémoire doivent être configurés :

1) Max. de mémoire pour les données. Cette valeur est l'équivalent de la section 'taille du cache' de JMap Admin. Il s'agit de la portion de mémoire réservée aux données des différentes couches. Pour un projet contenant un grand volume de données et de couches, l'augmentation de cette valeur est nécessaire pour son bon fonctionnement. Lorsque la limite est atteinte, les données sont effacées de la mémoire et redemandées au serveur ou relues à partir du disque, au besoin.  

Une taille trop petite ne permet pas au client d'afficher des données dépassant la valeur établie. Par exemple, un projet contenant une couche de rues peut être affiché entièrement si cette couche consomme 18 des 32 Mo de mémoire configurés. Si le client veut afficher au même temps une couche de l'ensemble des bâtiments qui consomme 24 Mo, ceci devient impossible car la limite de 32 Mo de mémoire est dépassée. Une configuration de 64 Mo est donc plus adéquate dans ce contexte.

2) Taille max. du tas. Cette valeur est l'équivalent du Xmx. Il s'agit de la mémoire totale allouée à l'application Pro. Encore une fois, l'augmentation du paramètre de mémoire pour les données réduit la quantité de mémoire disponible à l'ensemble de l'application Pro. Pour un grand volume de données il est nécessaire d'augmenter la taille du tas de l'application si la taille de la mémoire utilisée pour les données est augmentée. La mémoire optimale du client dépend du type et quantité de données ainsi que du nombre et types d'extensions, du nombre de vues utilisées, nombre de couches, etc. Généralement, 512 Mo pour l'application et 128 Mo pour les données, ou 600 Mo pour l'application et 200 Mo pour les données sont des tailles suffisantes pour la majorité des projets bien configurés qui nécessitent plus de mémoire que celle configurée par défaut. Dans des contextes de données très volumineuses et des postes client étant en mesure de répondre aux besoins élevés de mémoire du client, 1024 Mo pour l'application et 512 Mo sont des tailles qui devrait bien répondre aux besoins.

À noter qu'une mauvaise configuration de projet peut engendrer des problèmes importants de mémoire du coté client. Par exemple, une couche avec un tuilage inadéquat ou affichée à une mauvaise échelle peut consommer une portion importante de la mémoire disponible pour les données. Une couche de rues de 18 Mo avec un tuilage 1x1 consomme en permanence ces 18 Mo. Un tuilage 12x12 et une échelle d'affichage plus appropriée peuvent réduire le besoin de mémoire de 18 Mo à 0.1 Mo. La bonne configuration des couches du projet est aussi essentielle au bon fonctionnement de JMap.

 

MAJ 2024

La mémoire configurée pour JMap Pro doit être proportionnelle à la mémoire des postes client dans lesquels JMap Pro est utilisée :

  • Si les postes ont 4GB de RAM, par exemple, et l'on configure 4GB de RAM pour JMap Pro, il y aura des erreurs (OutOfMemoryException) car les autres programmes en exécution sur le poste (système d”exploitation, etc.) requièrent de la mémoire RAM et JMap Pro n’aura pas accès aux 4GB configurés.

  • JMap Pro requiert au moins 1 GB de RAM disponible dans le poste client pour fonctionner.

Il faut trouver un juste milieu en fonction des données, des utilisateurs, des niveaux de zoom, sélection, performance des postes client, etc.


English version

The memory requirement of JMap Server depends on its use and its load (the volume of vector and raster data, the number and types of deployments, the number of applications, the number of projects and layers, the extensions, etc.), varying from one server to another. Configuring memory settings is essential to the optimal operation of JMap.

System Settings

The configuration of these parameters is located in the /bin/startjmapserver.vmoptions file. It contains two parameters related to the memory usage: 

1) -Xmx is the total memory allocated to JMap. The default value is the value chosen during the initial installation of JMap ('Heap size'). For example, -Xmx768m indicates that JMap has 768 MB to work, -Xmx3000m indicates that JMap has 3 GB. This is the parameter to increase if you want to assign more memory to JMap. In practice, often JMap processes exceed the amount of allocated memory since JMap starts processes outside Java that are not limited to this value (e.g. use of GDAL, C ++ DWG libraries, DGN, etc.). 

The size of the memory must not exceed the available memory of the JMap server. Too high a value can cause system memory outages and this could affect other applications: the entire system memory being used, the system could compensate by using the hard drive, which would greatly affect its performance. It could even prevent some server applications from working well, not being able to provide them with the required memory. On the other hand, a value that is too small could cause OutOfMemoryError during JMap server operations and therefore would not work properly. Finding an adequate value becomes critical.

A server for a medium-sized organization is often configured with 2000m to 4000m of memory. The servers of larger organizations are with 4000m to 8000m or more. The current memory use of JMap Server can be viewed from JMap Admin, in the JMap Server / Status section, or by using a system task manager. For example, a 64-bit Windows 2012 server with 8 GB of physical memory, including 6 GB of free memory, could be configured with a value of 768m at ~ 5500m. For a modest sized JMap server, 5000m would probably be excessive and would probably not offer any performance advantage over 2000m or 3000m, as its memory requirements are already met.

2) -XX: MaxPermSize, is a parameter for permanent generation. The default value of -XX:MaxPermSize=256m is enough for most servers. If no error specific to this parameter occurs, you do not need to increase this parameter, and even increasing it will not show any performance gain. This parameter is no longer used since Java 1.8.

Admin Settings

Some configurations can be changed from JMap Admin.

Cache Section

1) Memory size. Includes previously loaded data to minimize queries to the database. The cache helps improve the performance of JMap Server. Cache statistics are displayed in the Status section of JMap Server. This parameter is used to control the tile volume of tiled layers stored in memory, which prevents read access to the hard disk. The default value of 64 MB indicates that it will keep a maximum of 64 MB of tiles in memory. The cache size of each tile is visible in the layer configuration section.

The value to configure depends on the data volume of the tiled layers. Memory cache efficiency is a good indicator. If the efficacy is high and most of configured memory for data is used, indicates a good value. But if the efficacy is high and most of the memory for data is not used, ex; 234 / 1024 MB with 99% efficacy, the memory value could be lowered to 250-300MB to optimize memory usage. If efficacy is low and most memory for data is consumed, ex; 63.6/64MB with 20% efficacy, the configured more memory for data is too low and should be increased. 2.5 to 5% is a good starting point. Ex: for 4GB of memory for JMap, 100-200 MB for data.

2) Size of the imagery. Cache size for imaging operations. This cache is used by JMap Server when processing image files (raster data sources that read image files). It helps greatly improve the performance of JMap Server when handling large images. This parameter is only used for TIFF/GEOTIFF data sources and increasing it can accelerate the generation of the image cache and thus the time of updating the data source. GDAL, ECW/JPEG2000, and WMS data sources are unaffected by this parameter, they use all of JMap's memory and get no benefit from an increase of this parameter.

It is important to consider that the memory used by the cache is no longer available for JMap Server operations. For example, with an Xmx of 768 MB, if the cache size is increased to 256 MB and that of the imagery to 256 MB, JMap can use up to 512 MB for caching, which leaves 256 MB for its operation. This configuration is inadequate and there is a good chance that JMap will fall into OutOfMemory because JMap does not have enough memory for normal operation. An OutOfMemoryError is a critical error and for example JMap could no longer accept client connection, no longer be able to respond to a request (address search, extraction of elements, etc.), no longer be able to generate images required for web clients, no longer be able to save changes made from Admin, etc.

Image Producer Section

Each project contains an image producer that is used for image generation for web or mobile clients. Increasing the maximum memory size can yield performance improvements based on project data. For a project deployed with a web/mobile client configured to use GeoWebCache, the time for generating the GeoWebCache cache could be improved. Without GeoWebCache, the images requested by the clients are generated on demand and for a project with a large data volume, the memory requirements could exceed the default value of 64 MB. In this context, the increase in the size of memory could improve the image generation time and reduce customer response time. Again, the memory allocated to the image producer is no longer available for JMap Server operations and its optimal size depends on the type and volume of data and project layer configurations.

Memory Settings for Pro Deployments

This section is not related to the JMap Server memory configuration but addresses the memory configuration of Pro applications. When deploying a Pro application, two memory settings must be configured:

1) Max. memory for the data. This value is the equivalent of the 'cache size' section in JMap Admin. This is the portion of memory reserved for the data of the different layers. For a project containing a large volume of data and layers, the increase of this value is necessary for its correct functioning. When the limit is reached, the data is erased from memory and re-requested from the server or reloaded from the disk as needed.

A size that is too small does not allow the client to display data that exceeds the set value. For example, a project that contains a street layer can be displayed entirely if this layer consumes 18 of the 32 MB of configured memory. If the client wants to display at the same time a layer of all buildings that consumes 24 MB, this becomes impossible because the limit of 32 MB of memory is exceeded. A configuration of 64 MB is therefore more appropriate in this context.

2) Max. of the heap. This value is the equivalent of Xmx. This is the total memory allocated to the Pro application. Again, increasing the memory setting for the data reduces the amount of memory available to the entire Pro application. For a large volume of data it is necessary to increase the size of the heap of the application if the size of the memory used for the data is increased. The optimal client memory depends on the type and quantity of data as well as the number and types of extensions, the number of views, the number of layers, and so on. Typically, 512 MB for the application and 128 MB for the data or 600 MB for the application and 200 MB for the data are sufficient sizes for the majority of well-configured projects that require more memory than the one configured by default. In very large data contexts and client workstations being able to meet the high memory needs of the client, 1024 MB for the application and 512 MB are sizes that should meet the needs.

Note that a poor project configuration can cause significant memory problems on the client side. For example, a layer with an inadequate tiling or displayed at a wrong scale can consume a large portion of the available memory for the data. A layer of 18 MB streets with a 1x1 tiling continuously consumes 18 MB. A 12x12 tiling and a more appropriate display scale can reduce the memory requirement from 18 MB to 0.1 MB. The proper configuration of the project layers is also essential for JMap Server to work.

Update 2024

The memory configured for JMap Pro must be proportional to the memory of the client workstations in which JMap Pro is used:

  • If the workstations have 4GB of RAM, for example, and we configure 4GB of RAM for JMap Pro, there will be errors (OutOfMemoryException) because the other programs running on the workstation (operating system, etc.) require of RAM memory and JMap Pro will not have access to the configured 4GB.

  • JMap Pro requires at least 1 GB of RAM available on the client workstation to function.

You have to find a happy medium based on data, users, zoom levels, selection, performance of client workstations, etc.