Ciao,
eccoci .. il caso:
ricevo da ftp un file csv ( da 30000record)...
questo file lo converto in xml (in realtà viene solo rinominato) ... e lo sparo in una cartella. Quindo ho nella cartelal un file xml con dentro 30000 record.
L'orchestrazione che attinge alla cartella ha come tipo di receice una pipeline custom che serve per prendere xml e trasformalo in xml (vero e prorpio) .. q questo punto poi nella orch fa una serie di interrogazioni a db ....select , insert, .. e via dicendo.
Problema: a un certo punto della situazione ho in bts console (hub page) piu di 35-50 000 runnig service instance con altre 10-15000 in ready service instance.... ho notato che il tutto va abb fluido finchè i "running" sono intorno ai 10-15000 ma poi se sono di piu comincia a rallentarsi fino quasi a fermarsi.
Cè qualche "trucco" da fare per incrementare le performance o qualcosa di simile?? tenendo cmq presente che se spezzo il file iniziale in tanti file piu piccoli , per evitare la stessa situazione devo darglieli in pasto 1 alla volta dopo che il precedenta ha finito.... per cui anche se facessi un flusso che prende il file e lo spezza , lo mette in una cartella e poi da li attinge il mio flusso non cambierebbe nulla no??
ciao!
Ciao a tutti
lo scenario è molto interessante ... a prima vista per incrementare le performance io demanderei alcune attività a degli assembly .net esterni, per esempio tutte le interrogazioni al DB ... così ci si può rendere conto anche di dove è il collo di bottiglia ...
Saluti
Ciao Claudio,
ho paura che sia un problema legato alle risorse che hai a disposizione sul sistema, per poter dare una risposta più precisa occorrerebbe avere deidati di monitoring.E' difficile capire, così a secco, dove sia il bottleneck, posso impotizzare che sia a livello di memoria.Usare debatching su questi volumi richiede un certo tipo di risorse.
Non riesci a elaborare blocchi di record alla volta, cioè diminuire il numero di messaggi singoli?Per esempio:http://www.codeproject.com/KB/biztalk/DebatchingFlatfile.aspx
Puoi aumentare le perfonmance di BizTalk diminuendo il tempo di lettura su db ma non credo risolva il tuo problema.Attendo news
ciao
Nino
Mi unirei a Enrico per il lato DB.varrebbe la pena prendere in cosiderazione qualche logica su database per organizzare elaborazioni di gruppo.
Sono d'accordo con Enrico e Nino sul fatto di esternalizzare alcune operazioni a metodi .net (al riguardo potresti guardare il mio post sulle chiamate db in cache: http://biztalkia.com/blogs/jonnidip/archive/2009/01/26/query-sql-in-loop-di-mappe-xslt.aspx).
Inoltre ti consiglierei di prestare attenzione possibili migliorie da apportare ad eventuali mappe utilizzate. Ad esempio, il functoid "concatenate" non è adatto a concatenazioni multiple (intendo più di due). Piuttosto conviene utilizzare un functoid di "scripting" che concatena utilizzando StringBuilder. Lo stesso problema vale per il "cumulative concatenate", che itera per i nodi configurati...
Giovanni.
questa orchestrazione incriminata .. :-D
in pratica viene lanciata da debatch di un flat file .. deve fare una serie di verifiche su db ( su piu tabelle)... moltiplicate il tutto per nr. di record che vanno da 25000 a 90000 ...
Per intanto uso un trucco (manuale) ,spezzo il csv in tanti cvs da 5000 record ... e il tutto viene completato in 5 minuti (ora che uso il wcf custom) ....
idee...
intanto ringrazio tutti per la disponibilità