Page 1 sur 2
Problème avec un agent

Publié:
02 Déc 2010 à 14:39
par abertisch
Bonjour,
J'ai un petit problème avec un agent qui s'exécute sur le trigger "After new mail has arrived".
L'agent s'exécute très bien mais fait un lourd traitement (~12h). La base est répliquée sur 2 autres serveurs toutes les 30 minutes.
Une fois par jour à heure fixe (6h du mat) l'agent s'exécute sur un des 2 autres serveurs

alors qu'il tourne déjà depuis plusieurs heures sur le serveur de traitement et il me faut la merde dans mon traitement
J'avais jamais eu ce problème avec des serveurs en 7 mais depuis la migration en 8.5.1 FP3, j'ai ce problème.
Qqun aurait-il une idée ?
Merci de votre aide.


Publié:
02 Déc 2010 à 14:42
par Michael DELIQUE
salut
si je comprend bien tu as 12h de traitement à chaque "After new mail has arrived" !?

Publié:
02 Déc 2010 à 14:46
par abertisch
Salut,
J'ai un processus qui ne démarre que lors de la réception d'un mail. Ce traitement peut-être plus ou moins long mais le problème ce présente lorsqu'il y a 12h et plus de traitement.
Mon plus gros problème c'est pas le traitement mais bien l'exécution de l'agent sur plusieurs serveurs...


Publié:
02 Déc 2010 à 14:50
par Michael DELIQUE
tu recois bcp de mails ?
ce triggers est réputer pour pas etre top !

Publié:
02 Déc 2010 à 14:52
par abertisch
Michael DELIQUE a écrit:tu recois bcp de mails ?
ce triggers est réputer pour pas etre top !
Non le mail n'arrive qu'une fois par jour à heure plus ou moins fixe.
Mais le plus drôle ce que l'agent s'exécute tout seul durant toute la journée alors qu'il n'y a aucun mail.

Publié:
04 Déc 2010 à 01:57
par roubech
un traitement qui dure 12h, j'hallucine, sachant que le timeout par défaut de l'amgr est de 10 min
si l'agent est planifié pour tourner apres reception sur le serveur A, j'imagine qu'il s'agit d'un autre agent qui est planifié à heure fixe sur le serveur B (faisant surement appel au même code)
mais pourquoi faire tourner le meme traitement sur un autre serveur ?
si tu veux éviter qu'ils se recoupe, quand l'un démarre, qu'il mette un flag quelque part pour que l'autre puisse vérifier le flag avant de démarrer

Publié:
05 Déc 2010 à 00:34
par d.bugger
Es-tu convaincu que l'agent est optimisé à donf ? Pourquoi ça tourne 12h ? As-tu 2000 db.Search dedans, dans une base de 1000000 documents ?
Suggestion : couper l'agent en plusieurs étapes, chaque étape dans son agent, avec des documents pour des résultats intermédiaires, s'il faut .

Publié:
05 Déc 2010 à 15:53
par Michael DELIQUE
re,
ouaip, je serai curieux de jeter un oeil au code...

Publié:
06 Déc 2010 à 09:08
par abertisch
Bonjour,
Alors pour répondre à certaines questions le pourquoi 12h, le code, etc...
Sachez simplement que c'est un import de documents (~100'000) dans des bases notes (~95'000) et création de mails.
Alors oui c'est long mais j'ai déjà fait pas mal de modifications afin de réduire le temps de traitement. Mais voilà je n'ai gagné que 12h... il en reste encore 12h.
Mais j'ai trouvé une solution temporaire qui ira très bien.
Merci de votre aide.

Publié:
06 Déc 2010 à 11:44
par d.bugger
95K docs...

je comprends.
N'oublie pas
NotesView.AutoUpdate= False

Publié:
06 Déc 2010 à 11:51
par Michael DELIQUE
je dirais :
- pas de computewithform
- pas de getNTHDocument
pas d'instanciations de vue/database dans les boucles si c'est toujours la même.

Publié:
06 Déc 2010 à 13:30
par abertisch
Michael DELIQUE a écrit:je dirais :
- pas de computewithform
- pas de getNTHDocument
pas d'instanciations de vue/database dans les boucles si c'est toujours la même.
C'est pas vraiment le côté programmation qui me pose problème mais plus l'enclenchement de l'agent sur plusieurs serveurs sans aucune raison.
Mais je viens de relire ma phrase du dessus mais je voulais dire que c'est une importation de documents dans 95'000 bases notes. Le nombre de documents en largement supérieur à 100'000 docs


Publié:
06 Déc 2010 à 13:43
par d.bugger
95K bases ?? Merde divine...
Pour éviter l'exécution sur les autres serveurs, crée un document (profil?) qui contient le nom du master-serveur qui exécute l'agent. L'agent commence par ouvrir ce document, et ne continue que si son nom est dedans. Sur les autres, il faut terminer l'agent tout de suite.

Publié:
06 Déc 2010 à 13:57
par abertisch
d.bugger a écrit:95K bases ?? Merde divine...
Pour éviter l'exécution sur les autres serveurs, crée un document (profil?) qui contient le nom du master-serveur qui exécute l'agent. L'agent commence par ouvrir ce document, et ne continue que si son nom est dedans. Sur les autres, il faut terminer l'agent tout de suite.
Je te le fais pas dire... niveau maintenance c'est encore gérable, l'application est très autonome
Idée intéressante, je note. Merci.


Publié:
06 Déc 2010 à 21:59
par roubech
roubech a écrit:si l'agent est planifié pour tourner apres reception sur le serveur A, j'imagine qu'il s'agit d'un autre agent qui est planifié à heure fixe sur le serveur B (faisant surement appel au même code)
mais pourquoi faire tourner le meme traitement sur un autre serveur ?
ou se peut-il que ce soit le même agent mais que le délai de réplication fait que "l'arrivée du mail" qui déclenche l'agent sur le second serveur bien après ?