Nel nostro progetto .net facciamo riferimento a una DLL CLI di terze parti. Questa DLL è solo un'interfaccia alla loro libreria C++ proprietaria. Il nostro progetto è un'applicazione web asp.net (MVC4/Web API).Riferimento a una DLL instabile
La libreria non gestita C++ è piuttosto instabile. A volte si blocca con es. puntatori penzolanti Non abbiamo modo di risolverlo e l'utilizzo di questa libreria è un'esigenza di prima classe per i clienti.
Quando l'applicazione si arresta in modo anomalo, il pool di applicazioni in IIS non risponde più. Dobbiamo riavviarlo, e così facendo ci vogliono un paio di minuti (sì, così tanto!).
Vorremmo mantenere questa DLL instabile dall'arresto anomalo della nostra applicazione. Qual è il modo migliore per farlo? Possiamo mantenere la DLL CLI in un AppDomain separato? Come?
Grazie in anticipo.
Che cosa hai osservato? Il processo si blocca dopo un certo numero di chiamate? Sospetti che la DLL instabile abbia perdite di memoria? – xpereta
Le perdite di memoria non sono state un problema fino ad ora. Durante lo sviluppo, la DLL a volte blocca il server di sviluppo con una violazione di accesso alla memoria. A volte il server di sviluppo utilizza ~ 70% della CPU fino a quando non uccido il processo.Quando viene distribuito in IIS, i problemi di arresto anomalo e di CPU non stanno davvero accadendo così tanto, ma una volta ogni tanto il processo di IIS smette di rispondere e un riavvio di IIS richiede molto tempo. – Schiavini
Hai provato ad aumentare il tasso di riciclaggio del processo IIS? – xpereta