begin process at 2010 03 20 18:46:01
  Trouver un code source :
 
dans
 
Accueil > Forum > 

ASP.NET

 > 

Divers

 > 

Autre

 > 

Crash d'IE ou thread abandonné suite à grosse insertion en bdd


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Crash d'IE ou thread abandonné suite à grosse insertion en bdd

jeudi 10 janvier 2008 à 17:25:35 | Crash d'IE ou thread abandonné suite à grosse insertion en bdd

rastali

Bonjour à tous,

J'ai un gros souci sur l'application que je développe (VS 2005, ASP.NET 2.0 C#).
J'effectue le traitement de données suivant:
- lecture d'un fichier xml
- affichage des informations à l'écran
- saisie d'informations complémentaires par l'utilisateur
- insertion des données en base.

C'est lors de l'étape d'insertion des données en base qu'il y a un problème. Je dois insérer parfois jusqu'à 30000 enregistrements. Le traitement dure entre 2h et 2h30 suivant la quantité d'info contenue dans les fichiers xml.

Au début je faisais un simple appel de ma procédure stockée d'insertion dans une boucle, la barre de progression de IE progressé pour finalement arriver sur la page d'erreur d'IE (impossible d'afficher la page) et le traitement n'etait pas terminé.

Après quelque recherche, j'ai ajouté un UpdatePanel et un UpdateProgress. Au bout d'un moment (environ 30 minutes) le message affiché dans le ProgressTemplate de l'UpdateProgress disparaissait, puis un pop-up d'erreur s'affichait avec le code erreur suivant : "Sys.WebForms.PageRequestManagerServerErrorException: An unknown error occurred while processing the request on the server. The status code returned from the server was : 500"  et j'ai déjà eu le meme message d'erreur avec le code erreur 12152.
Après un click sur le bouton OK de la pop up, quand le code erreur est 500, la fonction qui appelle la proc stock me renvoie : Le thread a été abandonné. et le traitement ne se termine pas.
Après un click sur le bouton OK de la pop up, quand le code erreur est 12152, le traitement continue de façon transparente jusqu'à la fin, et je peux naviguer sur mon application, mais cette pop up est tout de meme derangeante, sans compter que je préférerai que le message de l'Update Progress reste affiché.

Dernière solution testée, j'ai essayé d'effectuer ces multiples insertions a l'intérieur d'un thread. Donc la j'ai directement la main sur l'appli, je peux donc changer de page, mais du coup je ne peux pas savoir quand le thread est fini. Mais le gros problème, c'est que ca fini par planter avec l'erreur : le thread a été abandonné, et donc l'insertion des données n'est pas complète.

Est-ce que quelqu'un à une solution à mon problème ?
jeudi 10 janvier 2008 à 23:06:56 | Re : Crash d'IE ou thread abandonné suite à grosse insertion en bdd

jesusonline

Membre Club Administrateur CodeS-SourceS
Bonsoir,

Entre 2h et 2h30 ??? ASP.net n'est pas du tout prévu pour ça ! Si tu veux faire ce genre de chose, je te conseille grandement de faire cette opération à un service windows ou autre appli.

1. L'utilisateur upload son fichier
2. Le serveur enregistre le fichier en base ou ailleurs
3. Tu rediriges vers une page avec un UpdatePanel + un timer, tu affiches les informations d'avancement & co que tu récuperes dans la base ou ailleurs
4. Le service windows traite le fichier et stocke les informations d'avancement dans la base ou ailleurs.

ASP.net est concu pour faire des traitement le plus court possible. Monopoliser un thread du pool (20 au total) est très couteux, pour peu que 20 personnes fassent le traitement en meme temps tu bloques le serveur (en fait 17 ou 18 car 2 ou 3 threads sont reservés à localhost pour les opérations d'urgence)


Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
vendredi 11 janvier 2008 à 09:55:48 | Re : Crash d'IE ou thread abandonné suite à grosse insertion en bdd

rastali

Bonjour, merci de ta réponse. Alors tout d'abord il est prevu un seul utilisateur unique de l'application. Cette mise à jour de la base par fichiers xml est prévu une fois par trimestre. L'un de mes soucis principaux c'est que l'application est censé etre utilisée des la semaine prochaine :s Je n'avais fait des tests qu'avec peu de données, et c'est en faisant des tests avec un jeu de données conséquents que ca plante. Je ne comprends pas bien ton explication (je n'y connais rien en service windows), en fait le probleme principal vient du fait que l'utilisateur complete et modifie les données, puis choisi de les insérer en base ou pas. De ce fait, je ne vois pas du tout comment gérer cela avec un service windows (les infos des fichiers doivent etre lues directement par le service windows, c'est ca? je ne vois pas comment le service win peut récupérer les infos des fichiers et celles saisies par l'utilisateur). En fait je pense que je peux m'en sortir mais j'aurai besoin d'un peu d'aide pour le service windows, je m'explique: dans les données des fichiers à insérer en base, les données qui prennent beaucoup de temps ne sont pas modifiées par l'utilisateur. Par exemple, si je met en commentaite cette partie la du code, le traitement se fait en 3 minutes à peine. Ainsi, je pourrai fonctionner de la sorte : -données non modifiées par l'utilisateur : service windows -données modifiées par l'utilisateur : asp.net le fichier est stocké sur le serveur de l'appli, il faut donc que je crée mon service windows, mais est-ce que l'on peut déclencher le service windows, cad l'application asp.net peut-elle appelée une fonction du service windows pour la déclencher ?
vendredi 11 janvier 2008 à 11:03:23 | Re : Crash d'IE ou thread abandonné suite à grosse insertion en bdd

jesusonline

Membre Club Administrateur CodeS-SourceS
Service Windows ou application Console, pour l'instant là n'est pas le soucis.

Quand l'utilisateur envoie le fichier, tu l'enregistre dans la base de données.
Ton service windows va checker toutes les x minutes dans la base si y'a qqchose à faire et si oui il le fait.
ta page web va checker toutes les x secondes l'état de l'opération que le service windows stock dans la base.

Mais une application web pour un seul utilisateur ... je sui quasi sur qu'une application win était bien plus adapté.


Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
vendredi 11 janvier 2008 à 11:19:33 | Re : Crash d'IE ou thread abandonné suite à grosse insertion en bdd

rastali

Ok je vais tenter ca. Sinon, pour une solution temporaire, dans le cas ou j'utilise l'update panel, n'est-il pas possible d'intercepter la pop-up que m'envoie IE, vue que le traitement continue derriere, je voudrais juste pouvoir intercepter la pop up afin de ne pas l'afficher... bon on ne verrait pas l'avancement du traitement mais ca pourrait etre une solution temporaire viable? POur l'appli win, l'utilisateur veut pouvoir accéder a l'appli de n'importe ou et n'importe quelle machine, et je ne pouvais pas discuter de ce point...
vendredi 11 janvier 2008 à 11:42:19 | Re : Crash d'IE ou thread abandonné suite à grosse insertion en bdd

jesusonline

Membre Club Administrateur CodeS-SourceS
ClickOnce ..

Oui tu peux récupérer l'evenement EndRequest du PageRequestManager : [ Lien ] mais c'est pas propre.


Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
vendredi 11 janvier 2008 à 17:20:05 | Re : Crash d'IE ou thread abandonné suite à grosse insertion en bdd

rastali

Bon bah j'avais legerement fait n'importe quoi, en revoyant mon code avec mon chef et surtout mes procs stocks, je me suis rendu compte que je bouclais deux fois et qu'en plus mes procs etaient vraiment pas optimisées. Donc apres reecriture correct du code, optimisation des procs et creation des index pertinents, j'en arrive a entre 5 et 7 minutes de traitement suivant les autres applis qui tournent sur le serveur, et je n'ai aucun plantage en utilsant l'update progress (oui oui je sais la j'ai l'air d'un c*n ^^). Me disais aussi, meme si j'ai 30000 insertions, 2h ca faisait vraiment vraiment long. En plus la on est en serveur de test (serveur oracle + serveur IIS) qui est nettement moins puissant que les serveurs de prod (oracle separé de iis). Donc ma derniere question, penses-tu qu'il est toujours necessaire de gerer cela avec une appli console?
vendredi 11 janvier 2008 à 17:46:05 | Re : Crash d'IE ou thread abandonné suite à grosse insertion en bdd

jesusonline

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Si c'est un traitement léger non :)

mais si la traitement dure plus de 20min oui


Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
vendredi 11 janvier 2008 à 17:48:42 | Re : Crash d'IE ou thread abandonné suite à grosse insertion en bdd

rastali

Ok merci, je vais faire des tests en prod la semaine prochaine et suivant les ressources prises par l'insertion des données je passerai par une appli console. En tout cas merci encore à toi et bon w-e!


Cette discussion est classée dans : code, erreur, traitement, insertion, thread


Répondre à ce message

Sujets en rapport avec ce message

Le thread a été abandonné. [ par v.massip ] Bonjour à tous!J'ai un petit problème d'exception.Voilà le problème:Dans mon site ASP-VB.NET framework2, j'utilise le code-behind de plusieurs pages p ASP [ par gphys ] J'essaie désespérément de me connecter à ma base de données et j'ai ce type de message :Erreur d'exécution Microsoft VBScript erreur '800a000d' Type i Liste déroulante [ par Grun ] Bonjour,J'ai fais une liste déroulante et j'ai une erreur que je ne comprends pas Voici le code de ma liste :<form name="form1" method="post" action= ou est mon erreur svp [ par guitoulefoux ] Bonjour,j'ai une liste box alimenté par une base access et quand je clique dessus je voudrais que le choix que j'ai fais dans ma liste box apparaisse insertion dans une BD [ par richch ] je n'a pas compris comment résoudre ce problème, veuillez m'aider, voici la requête:OBJdbConnection.execute("INSERT INTO Article (code_Famille, code_P Pb Internet Explorer [ par lenneth666 ] Voila j'ai ma page emploi.aspx qui fonctionne parfaitement sous Firefox. Par contre lorsque que je veut la charger sur Internet Explorer, j'ai un mess Erreur Javascript sur événement [ par RegVB ] Bonjour à tous,J'ai résolu mon souci précédent grace à ce lien : <a target="_blank" title="Enregistrer ses WebControl dans le web.config" temp_hr erreur smpt [ par achora2006 ] salut tous le mondeje veux envoyer un email via asp.net jé rédiger le code mais j'ai des problème avec le seveurvoici l'erreurLe message n'a pas pu êt PageRequestManagerServerErrorException... entre autre ^^' [ par Xav85 ] Bonjour,Je rencontre actuellement un problème dans mon code ASP.NET, et ça fait plusieurs jours que je n'arrive pas à m'en sortir, donc je me décide à insertion detail view [ par aymen87 ] bonsoirje voudrai inserer des données dans une table en utilisant un detailsview, mais le probleme c'est que evidemment quand j'insere une clé redonda


Nos sponsors


Sondage...

Comparez les prix


HTC Magic

Entre 429€ et 429€

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,170 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales