Modernisation Oracle Forms

Comment résoudre l'erreur frm-93552 cannot connect to runtime process

Problème

Un client obtenait l'erreur FRM-93552 à partir d'environ 100 sessions utilisateur par serveur. Le système de production tournait sous Windows Server 2008 32 bits, avec Forms 11.1.1.4, 8 processeurs et 40 Go de RAM.

L'utilisation de la RAM était faible : seulement 15 Go sur 40 Go. L'utilisation du processeur était en moyenne de 5 %. Les ressources système n'avaient donc pas atteint leur seuil.

Cause

Au moment de l'erreur, les messages suivants étaient consignés dans les journaux d'événements système de Windows :

Event Type: Warning
Event source: Win32k
Event ID: 243
Description: A desktop heap allocation failed

OU

Event Type: Warning
Event Soure: Win32k
Event ID: 244
Description: Failed to create a desktop due to desktop heap exhaustion

OU

Description: Application startup failures (0xc0000142)…

Windows renvoie l'erreur ci-dessus parce que le serveur Forms crée une session “frmweb.exe” pour chaque utilisateur, toutes rattachées à OPMN. À mesure que de nouvelles sessions utilisateur Forms étaient créées, l'espace de tas (heap) de Windows utilisé augmentait. Selon la taille du tas alloué, le nombre de sessions et la quantité de données qu'elles utilisaient, le tas a fini par s'épuiser, et aucune nouvelle session frmweb.exe ne pouvait plus être créée.

Nous avons donc constaté que le tas de bureau Windows (Desktop Heap) réservé aux processus non interactifs était insuffisant pour prendre en charge le nombre d'utilisateurs finaux du client.

Résolution

Nous avons augmenté l'espace de tas des processus non interactifs de 512 à 4096. Le nombre d'utilisateurs finaux que le système pouvait prendre en charge est passé de 100 à 1400.

REMARQUE : cette opération exige un redémarrage du matériel ou du serveur. Assurez-vous de planifier une interruption de service.

Pour modifier le tas des processus non interactifs, procédez comme suit :

1. Ouvrez Regedit

2. Allez à la clé de registre suivante : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems

3. Ouvrez la clé “Windows”

4. Repérez SharedSection=<some_number>,<some_number>,<some_number>, par exemple : SharedSection=1024,3072,512

5. Modifiez la 3e valeur de SharedSection. L'exemple suivant fait passer le tas des processus non interactifs de 512 Ko à 4096 Ko

Avant :
SharedSection=1024,3072,512

Après :
SharedSection=1024,3072,4096

6. Enregistrez les modifications de la clé.

7. Redémarrez le serveur ou le matériel.

REMARQUE : le tas maximal que vous pouvez répartir entre les 3 tas est de 48 Mo. Le système n'accepte aucune valeur supérieure à 48 Mo. Pour en savoir plus sur l'allocation du tas Windows : http://support.microsoft.com/kb/184802