Domanda

ha chiunque abbia ottenuto con successo Ironpython in esecuzione senza problemi in un ambiente web? Sto correndo in alcuni problemi.

Primo problema, non sto effettivamente eseguendo alcun tipo di script specifici di Ironpython, sto implementazione del Pygments Libreria così posso Ottieni l'evidenziazione della sintassi del lato server. La biblioteca è di circa 20 file.

Oltre al fatto che l'ultima versione di Ironpython non può compilare gli script in una DLL (a causa di questo problema ), lo farò in esecuzione con successo copiando tutti i file e le dipendenze nella cartella Bin.

Il problema è che sono andato a guardare come il mio processo W3WP.exe sta facendo quando si esegue evidenziando e notato alcuni problemi ShowStopper:

È stato utile?

Soluzione

È una storia piuttosto lunga. (Tldr, scusa). Questo è .NET, molto probabilmente guardando la frammentazione dell'heap piuttosto che l'esaurimento della memoria.

Se stai davvero perdendo memoria, si tiene premuto per riferimenti troppo a lungo. Rivedi IDISPOSIBILI (in particolare la comprensione dell'elenco può ferire, soprattutto con le cose Linqy come Orderby e distinte attaccate).

I Una volta ha realizzato un'applicazione 2x Esegui 2x più velocemente, quando è stato in grado di fallire in modo affidabile esauritura / frammentazione del mucchio attaccando un semplice .tolista () sulle più grandi enumerazioni che ho dovuto guidare un grande processo.

Ci sono buoni profiler di memoria per .NET, ma attualmente so come utilizzare solo mono -profiler (cattiva memoria). Un semplice google ti aiuterà a trovare un profiler che puoi usare sul tuo ambiente: lascia che ti dica esattamente cosa oggetti assegnati dove si frammentano il tuo mucchio


.

PS. Dato che ti ho visto puntando il dito sulle applicazioni Web sulla seconda scansione della tua domanda, aggiungerei: controlla quali riferimenti (indirettamente) vengono tenuti dallo stato della sessione (applicazione, sessione).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top