Amélioration des performances de chargement par lots

eDirectory 8.8 propose de nouvelles options pour accroître les performances de chargement par lots.

Les paramètres réglables pour les performances de chargement par lots avec l'utilitaire ICE d'importation/de conversion/d'exportation Novell sont les suivants :

Reportez-vous également aux différents paramètres réglables de votre système d'exploitation.


Paramètres du cache eDirectory

Les principaux facteurs sont la gestion inadaptée des entrées/sorties de disque et l'allocation de mémoire insuffisante pour le cache eDirectory. Si eDirectory est la seule application du serveur, vous pouvez régler le cache sur des valeurs supérieures, avec une limite maximale de 2,5 Go. Tout cache alloué est finalement utilisé. Une taille de mémoire cache supérieure améliorera les performances de eDirectory sur les données non rémanentes.

La plage de réglage du cache va de 100 Mo à 2,5 Go. En règle générale, vous n'aurez pas besoin de plus de trois à quatre fois la taille de l'ensemble DIB. Pour les ensembles DIB volumineux, limitez le cache à 2 Go.

La plus petite taille de cache testée est 0 et la plus grande 2,5 Go. Pour déterminer la taille appropriée du cache, vous devez connaître les besoins en mémoire des autres processus exécutés sur le serveur, ainsi que la quantité de mémoire cache sur disque nécessaire. Nous vous conseillons d'essayer différentes tailles pour trouver le meilleur équilibre.

Pour optimiser les performances de chargement par lots, allouez un pourcentage supérieur du cache eDirectory pour le cache de bloc. Nous recommandons de choisir une valeur de 90 %. Cette valeur peut être réinitialisée, une fois l'opération terminée.

L'utilisation de iMonitor est le moyen le plus rapide de modifier le paramètre blockcachepercentage. Pour ce faire, suivez les instructions figurant dans la section Utilisation de Novell iMonitor 2.1.

Pour plus d'informations, reportez-vous à la section « Tuning the cache subsystem » (Réglage du sous-système de cache) sur le site Web Novell® eDirectory 8.7.1:Performance Tuning for Linux* and UNIX* (Novell® eDirectory 8.7.1 : optimisation des performances pour Linux* et UNIX*).


Définition de la taille de transaction LBURP

La taille de transaction LBURP définit le nombre d'enregistrements qui sont envoyés au serveur LDAP par l'utilitaire ICE, durant une même transaction. En augmentant cette valeur, vous pouvez améliorer les performances de chargement par lots, en supposant toutefois que vous avez défini une mémoire suffisante et que l'augmentation n'entraîne pas de conflit d'entrées/sorties.

La taille de transaction par défaut est 25, ce qui est suffisant pour les petits fichiers LDIF (moins de 100 000 opérations), mais non pour un nombre important d'enregistrements. La taille de transaction LBURP peut être définie entre 1 et 350.


Modification de la taille de transaction

Pour modifier la taille de transaction, changez la valeur requise dans le paramètre n4u.ldap.lburp.transize du fichier /etc/opt/novell/eDirectory/conf/nds.conf. Dans les situations idéales, une taille de transaction plus élevée assure des performances supérieures. Cependant, vous ne devez pas attribuer des valeurs arbitrairement élevées à la taille de transaction pour les raisons suivantes :

  • Une taille de transaction plus élevée exige que le serveur alloue plus de mémoire à l'exécution de la transaction. Si le système commence à manquer de mémoire, cela peut provoquer un ralentissement dû aux échanges.
  • Le fichier LDIF doit être exempt d'erreurs et toutes les entrées préexistantes dans eDirectory doivent être mises en commentaire. Si la transaction présente ne serait-ce qu'une seule erreur (y compris les cas où l'objet à ajouter existe déjà dans l'annuaire), eDirectory ne tient pas compte du paramètre de la transaction LBURP et effectue une validation après chaque opération pour garantir l'intégrité des données.

    Pour plus d'informations, reportez-vous à « Debugging LDIF Files » (Débogage de fichiers LDIF).

  • L'optimisation LBURP ne fonctionne que pour les objets Feuille. Si la transaction renferme à la fois un conteneur et les objets qui lui sont subordonnés, eDirectory la traite comme une erreur. Pour éviter ce problème, nous recommandons de charger les objets Conteneur d'abord à l'aide d'un fichier LDIF distinct ou d'activer l'utilisation des références en aval.

    Pour plus d'informations, reportez-vous à la section « Enabling Forward References » (Activation des références en aval) dans le manuel Novell eDirectory 8.8 Troubleshooting Guide (Guide de dépannage de Novell eDirectory 8.8).


Augmentation du nombre de requêtes asynchrones dans ICE

Il s'agit du nombre d'entrées que le client ICE peut envoyer au serveur LDAP en mode asynchrone avant d'attendre l'envoi des résultats par le serveur.

Le nombre de requêtes asynchrones peut être défini entre 10 et 200. La valeur par défaut est 100. Toute valeur inférieure au minimum (10) est ramenée à la valeur par défaut. La valeur minimale est suffisante pour les petits fichiers LDIF.

Idéalement, une taille de fenêtre plus élevée assure de meilleures performances. Vous ne devez toutefois pas attribuer des valeurs arbitrairement élevées à la taille de fenêtre car une taille de fenêtre élargie oblige le client à allouer plus de mémoire au traitement des entrées dans le fichier LDIF. Si le système commence à manquer de mémoire, cela peut provoquer un ralentissement dû aux échanges.

Vous pouvez modifier le nombre de requêtes asynchrones dans ICE à l'aide de l'option de ligne de commande ICE ou de iManager.


Avec l'option de ligne de commande ICE

Il est possible de spécifier le nombre de requêtes asynchrones à l'aide de l'option de ligne de commande -Z de ICE. Elle est disponible dans le gestionnaire cible LDAP.

Pour définir 50 comme nombre de requêtes asynchrones envoyées au client ICE, entrez la commande suivante :

ice -SLDIF -f fichier_LDIF -a -c -DLDAP -d cn=admin,o=novell -Z50 -w mot_de_passe


Avec l'Assistant ICE de iManager

Pour définir le nombre de requêtes asynchrones envoyées par le client ICE via iManager, procédez comme suit :

  1. Cliquez sur le bouton Rôles et tâches Ic?ne R?les.

  2. Cliquez sur Maintenance de eDirectory > Assistant Importation/Conversion/Exportation.

  3. Tapez la valeur dans le champ Taille de la fenêtre LBURP des écrans du gestionnaire cible LDAP pour les tâches Importation de données à partir d'un fichier et Migration de données entre des serveurs LDAP.

  4. Cliquez sur Suivant.

    Pour plus d'informations, consultez l'aide de l'Assistant.


Augmentation du nombre de threads d'écriture LDAP

Le serveur LDAP comporte désormais plusieurs threads d'écriture. Utilisez l'option de ligne de commande -F de ICE pour activer les références en aval afin d'éviter toute erreur possible due à un traitement concurrent, en entrant la commande suivante :

ice -SLDIF -f fichier_LDIF -a -c -DLDAP -d cn=admin,o=novell -w mot_de_passe  -F


Désactivation de la validation de schéma dans ICE

Utilisez les options de ligne de commande -C et -n de ICE pour désactiver la validation de schéma au niveau du client ICE en entrant la commande suivante :

ice -C -n -SLDIF -f fichier_LDIF -a -c -DLDAP -d cn=admin,o=novell -w mot_de_passe


Désactivation des modèles ACL

Vous pouvez désactiver les modèles ACL (Access Control List - liste de contrôle d'accès) pour accroître les performances de chargement par lots. Certaines ACL risquent alors d'être manquantes, mais vous pouvez résoudre ce problème en ajoutant les ACL nécessaires au fichier LDIF ou en les appliquant ultérieurement.

  1. Exécutez la commande suivante :

    ldapsearch -D cn_admin -w mot_de_passe -b cn=schema -s base objectclasses=inetorgperson 

    Cette commande donne le résultat suivant :

    dn: cn=schemaobjectClasses: ( 2.16.840.1.113730.3.2.2 NAME 'inetOrgPerson' SUP 
    organizationalPerson STRUCTURAL MAY ( groupMembership $ ndsHomeDirectory
    $ loginAllowedTi meMap $ loginDisabled $ loginExpirationTime $
    loginGraceLimit $ loginGraceRem aining $ loginIntruderAddress $
    loginIntruderAttempts $ loginIntruderResetTim e $
    loginMaximumSimultaneous $ loginScript $ loginTime $
    networkAddressRestri ction $ networkAddress $ passwordsUsed $
    passwordAllowChange $ passwordExpirationInterval $
    passwordExpirationTime $passwordMinimumLength $ passwordRequired $
    passwordUniqueRequired $ printJobConfiguration $ privateKey $ Profile $
    publicKey $ securityEquals $ accountBalance $ allowUnlimitedCredit $
    minimum AccountBalance $ messageServer $ Language $ UID $
    lockedByIntruder $ serverHolds $ lastLoginTime $ typeCreatorMap $
    higherPrivileges $ printerControl $ securityFlags $ profileMembership $
    Timezone $ sASServiceDN $ sASSecretStore $ sASSecretStoreKey $
    sASSecretStoreData $ sASPKIStoreKeys $ userCertificate
    $nDSPKIUserCertificateInfo $ nDSPKIKeystore $ rADIUSActiveConnections $
    rADIUS AttributeLists $ rADIUSConcurrentLimit $ rADIUSConnectionHistory
    $ rADIUSDefa ultProfile $ rADIUSDialAccessGroup $ rADIUSEnableDialAccess
    $ rADIUSPassword $ rADIUSServiceList $ audio $ businessCategory $
    carLicense $ departmentNumbe r $ employeeNumber $ employeeType $
    givenName $ homePhone $ homePostalAddress $ initials $ jpegPhoto $
    labeledUri $ mail $ manager $ mobile $ pager $ ldap Photo $
    preferredLanguage $ roomNumber $ secretary $ uid $ userSMIMECertifica te
    $ x500UniqueIdentifier $ displayName $ userPKCS12 ) X-NDS_NAME 'User' X
    -NDS_NOT_CONTAINER '1' X-NDS_NONREMOVABLE '1' X-NDS_ACL_TEMPLATES ( '2#subtree#[Self]#[All Attributes Rights]' '6#entry#[Self]#loginScript' '1#subtree#[Root Template]#[Entry Rights]' '2#entry#[Public]#messageServer' '2#entry#[Root Template]#groupMembership' '6#entry#[Self]#printJobConfiguration' '2#entry#[Root Template]#networkAddress') )
  2. Dans le résultat obtenu à l'étape précédente, supprimez les informations figurant en gras.

  3. Enregistrez le résultat révisé sous la forme d'un fichier LDIF.

  4. Ajoutez les informations suivantes dans le nouveau fichier LDIF :

    dn: cn=schemachangetype: modifydelete: objectclassesobjectclasses: ( 2.16.840.1.113730.3.2.2 )-add:objectclasses

    Votre fichier LDIF devrait à présent ressembler à ceci :

    dn: cn=schemachangetype: modifydelete: objectclassesobjectclasses: ( 2.16.840.1.113730.3.2.2 )-add:objectclassesobjectClasses: ( 2.16.840.1.113730.3.2.2 NAME 'inetOrgPerson' SUP 
    organization alPerson STRUCTURAL MAY ( groupMembership $ ndsHomeDirectory
    $ loginAllowedTimeMap $ loginDisabled $ loginExpirationTime $
    loginGraceLimit $ loginGraceRem aining $ loginIntruderAddress $
    loginIntruderAttempts $ loginIntruderResetTime $
    loginMaximumSimultaneous $ loginScript $ loginTime $
    networkAddressRestri ction $ networkAddress $ passwordsUsed $
    passwordAllowChange $ passwordExpirationInterval $
    passwordExpirationTime $ passwordMinimumLength $ passwordRequired
    $passwordUniqueRequired $ printJobConfiguration $ privateKey $ Profile $
    publicKey $ securityEquals $ accountBalance $ allowUnlimitedCredit $
    minimum AccountBalance $ messageServer $ Language $ UID $
    lockedByIntruder $ serverHolds $ lastLoginTime $ typeCreatorMap $
    higherPrivileges $ printerControl $ securityFlags $ profileMembership $
    Timezone $ sASServiceDN $ sASSecretStore $ sASSecretStoreKey $
    sASSecretStoreData $ sASPKIStoreKeys $ userCertificate $
    nDSPKIUserCertificateInfo $ nDSPKIKeystore $ rADIUSActiveConnections $
    rADIUSAttributeLists $ rADIUSConcurrentLimit $ rADIUSConnectionHistory $
    rADIUSDefa ultProfile $ rADIUSDialAccessGroup $ rADIUSEnableDialAccess
    $rADIUSPassword $ rADIUSServiceList $ audio $ businessCategory $
    carLicense
    $ departmentNumbe r $ employeeNumber $ employeeType $ givenName $
    homePhone $ homePostalAddress $ initials $ jpegPhoto $ labeledUri $ mail
    $ manager $ mobile $ pager $ ldap Photo $ preferredLanguage $ roomNumber
    $ secretary $ uid $ userSMIMECertifica te $ x500UniqueIdentifier $
    displayName $ userPKCS12 ) X-NDS_NAME 'User' X-ND S_NOT_CONTAINER '1' X
    -NDS_NONREMOVABLE '1' )
  5. Entrez la commande suivante :

    ldapmodify -D cn_admin -w mot_de_passe -f nom_fichier_ NDIF


Liaison en amont

La liaison en amont est un processus d'arrière-plan qui vérifie notamment l'intégrité référentielle dans le cadre des vérifications effectuées 50 minutes après l'activation du serveur eDirectory. Cette vérification s'effectue de nouveau après 13 heures. Veillez à ce que la liaison en amont ne s'exécute pas pendant le chargement par lots, qui risquerait alors d'être perturbé selon la durée du chargement et le nombre d'objets chargés.


Activation/désactivation du cache en ligne

Le cache de changement en ligne peut être activé ou désactivé pour un serveur. Cette option ne peut toutefois être désactivée que si la synchronisation sortante est elle-même désactivée. Si la synchronisation sortante est activée, le cache de changement en ligne l'est également.

La désactivation du cache de changement en ligne rend ce cache non valide pour la réplique concernée ; il apparaît avec un drapeau non valide dans Configuration de l'agent > Partitions. Si le cache de changement en ligne est réactivé, le drapeau non valide est supprimé lors de la reconstruction du cache.


Augmentation du timeout de LBURP

Par défaut, le timeout pour un client est de 20 minutes (1 200 secondes). Mais pendant le chargement par lots, lorsque la taille de la transaction LBURP est de l'ordre de 250, que les objets comportent un grand nombre d'attributs dont les valeurs sont élevées et qu'un traitement LBURP est activé simultanément sur le serveur, le serveur est occupé à traiter les données provenant du client ICE sans lui répondre dans le délai imparti entraînant ainsi l'expiration de ce dernier.

Dès lors, nous vous recommandons d'augmenter le timeout. Pour ce faire, vous pouvez exporter la variable d'environnement LBURP_TIMEOUT avec des valeurs élevées (en secondes).

Par exemple, pour exporter la variable LBURP_TIMEOUT avec 1 200 secondes, entrez la commande suivante :

export ICE_LBURP_TIMEOUT=1200