2010-03-30 5 views
3

Nous chargeons un gros fichier plat dans BizTalk Server 2006 (version originale, pas R2) - environ 125 Mo. Nous exécutons une carte par rapport à celle-ci, puis prenons chaque ligne et appelons une procédure stockée.OutOfMemoryException Traitement de gros fichier

Nous recevons l'exception OutOfMemoryException lors du traitement de l'orchestration, le service Windows redémarre, utilise la mémoire complète de 2 Go et se bloque à nouveau.

Le serveur est de 32 bits et défini pour utiliser le commutateur/3GB.

J'ai également séparé le flux en 3 hôtes: un pour la réception, l'autre pour l'orchestration et le troisième pour les envois.

Quelqu'un a des suggestions pour obtenir ce fichier à l'erreur wihout de traitement?

Merci, Krip

Répondre

2

Où planter? Est-ce que cela fait passer la forme Transform? Une autre suggestion à essayer est d'exécuter la transformation dans le port de réception. Pour un traitement plus efficace, vous pouvez même débatcher le message et faire appel à plusieurs instances d'orchestration simultanées pour appeler les proc stockées. Cela réduirait définitivement le profil de la mémoire et augmenterait les performances.

3

S'il s'agit d'un fichier plat envoyé via une carte, vous le convertissez correctement en XML? L'augmentation de la taille pourrait être énorme. XML peut facilement ajouter un facteur de 5 à 10 fois sur un fichier plat. Surtout si vous utilisez des noms de balises descriptifs ou longs (ce que vous feriez normalement). Quelque chose de simple que vous pourriez essayer est de renommer les nœuds xml en noms plus courts, en fonction du nombre d'enregistrements (ça sonne beaucoup), cela pourrait en fait avoir un impact significatif sur votre empreinte mémoire. Peut-être une approche plus entreprise consisterait à subdiviser ceci en un pipeline personnalisé en paquets de messages distincts qui peuvent être acheminés via le système en morceaux plus maniables (comme ce que suggère Chris). Ensuite, la limitation du système et les mesures de la mémoire pourraient prendre le relais. Sans en savoir plus sur vos données, il serait difficile de dire comment le faire au mieux, mais avec un fichier de 125 Mo, je suppose que vous avez probablement une tonne de lignes répétées qui n'ont pas besoin d'être traitées séquentiellement.

+0

Très intéressant. Il est logique que les noms de nœuds XML plus petits signifient une taille de paquet plus petite. Merci pour les conseils! – Krip

Questions connexes