11.886 messaggi dal 09 febbraio 2002
Contributi
Esistono anche deadlock causati dal codice:
http://www.c-sharpcorner.com/UploadFile/1d42da/deadlock-in-threading-in-C-Sharp/
http://nikgupta.net/2014/06/20/deadlocks-when-using-tasks/
http://nikgupta.net/2014/07/02/configureawait-solves-deadlocks-when-using-tasks/

Non sono del tutto convinto che il problema sia il BasicHttpsBinding, almeno non direttamente, anche se così sembra. È impossibile per me sapere come intervenire dato che non hai fornito un progetto di esempio in cui si possa osservare il problema.


Come posso indagare su IIS per capire dove si blocca, o la causa della mancata risposta ?

Nella tua applicazione, vai nel metodo che sta causando il blocco, scrivi delle righe di log frequenti. Quando l'applicazione si blocca, vai a vedere cosa c'è nel log così riuscirai a capire qual è l'ultima istruzione eseguita. Quella successiva è quella che sta causando il blocco.

ciao,
Moreno

Enjoy learning and just keep making
135 messaggi dal 01 febbraio 2017
BrightSoul ha scritto:
Esistono anche deadlock causati dal codice:
http://www.c-sharpcorner.com/UploadFile/1d42da/deadlock-in-threading-in-C-Sharp/
http://nikgupta.net/2014/06/20/deadlocks-when-using-tasks/
http://nikgupta.net/2014/07/02/configureawait-solves-deadlocks-when-using-tasks/

Non sono del tutto convinto che il problema sia il BasicHttpsBinding, almeno non direttamente, anche se così sembra. È impossibile per me sapere come intervenire dato che non hai fornito un progetto di esempio in cui si possa osservare il problema.


Come posso indagare su IIS per capire dove si blocca, o la causa della mancata risposta ?

Nella tua applicazione, vai nel metodo che sta causando il blocco, scrivi delle righe di log frequenti. Quando l'applicazione si blocca, vai a vedere cosa c'è nel log così riuscirai a capire qual è l'ultima istruzione eseguita. Quella successiva è quella che sta causando il blocco.

ciao,
Moreno

Va bene Moreno, studierò i link proposti. Per quanto riguarda il tuo consiglio ho già eseguito il debug passo passo lato server e quando si blocca infatti mi dice che è in attesa da una risposta esterna che non dipende dall'ambiente .NET. Qualcosa del tipo "non c'è nessun codice in esecuzione in .NET ...".

Sto pensando di fare la prova su un altra macchina installata di sana pianta con IIS e vedere se il problema si riproduce anche lì.

La mia impressione (ma può darsi che sbagli) è che abbia a che fare con la cache, per cui dopo un certo numero di "scambi" questa si riempia. Infatti a causa della codifica supplementare il lavoro che deve fare è maggiore.

Dico ciò perchè quando si blocca e vado nel pannello di IIS e cerco di arrestarlo, perde anche 1 minuto per fermarsi, mentre in condizione normali il sito si arresta nel giro di 1 o max 2 secondi.

Era questo il motivo per cui volevo esaminare i registri di IIS, sono sicuro che c'è un bug lì.

Infine non ho potuto allegare il progetto, perchè il livello di complessità è elevato con un'interazione massiccia fra almeno tre componenti che dovrebbero essere riprodotti, ovvero Il Client che invia le richieste di lettura, il server che le elabora provvedendo ad eseguire le altre operazioni di contorno (ho provato anche a scollegare alcune di queste operazioni corollario), ed il DB, oggetto delle richieste e che resituisce i dati da diverse tabelle. Dato che sono solo letture non ci sono transaction coinvolte.

Ridurre il tutto, semplificandolo ad una richiesta server/DB, potrebbe anche non saturare mai la banda e portare all'errore.

Per questo volevo operare a livello di IIS, vorrei un log dettagliato delle operazioni che compie, per capire dove si blocca, dato che nell'applicazione nn c'è nessun blocco (almeno è questo che dice Visual Studio).

Grazie Moreno.
Gino.
Modificato da SensoBit il 07 marzo 2018 08.18 -

UNSTRING identifier-1 id-2 id-3
DELIMITED BY [ALL] OR [ALL] literal-1 lit-2
INTO {id-4 [DELIMITER IN id-5]
[COUNT IN id-6]}
[WITH POINTER id-7]
[TALLYING IN id-8]
[ON OVERFLOW imperative-statement-1]
[NOT ON OVERFLOW imper-2]
[END-UNSTRING]
11.886 messaggi dal 09 febbraio 2002
Contributi
Per monitorare IIS puoi usare i suoi performance counters.

https://docs.microsoft.com/en-us/iis/extensions/configuring-application-request-routing-arr/using-performance-counters
https://stackify.com/how-to-monitor-iis-performance/
https://blog.serverdensity.com/monitor-iis/


Era questo il motivo per cui volevo esaminare i registri di IIS, sono sicuro che c'è un bug lì.

Credo che sia altamente improbabile che si tratti di un bug di IIS. E' più probabile che l'installazione di Windows sulla macchina che stai usando abbia problemi, quindi fai bene a volerne provare un'altra.

E' più probabile che il problema sia nel codice, fallo vedere a un consulente.

Ciao,
Moreno

Enjoy learning and just keep making
135 messaggi dal 01 febbraio 2017
BrightSoul ha scritto:
Esistono anche deadlock causati dal codice:
http://www.c-sharpcorner.com/UploadFile/1d42da/deadlock-in-threading-in-C-Sharp/
http://nikgupta.net/2014/06/20/deadlocks-when-using-tasks/
http://nikgupta.net/2014/07/02/configureawait-solves-deadlocks-when-using-tasks/

Non sono del tutto convinto che il problema sia il BasicHttpsBinding, almeno non direttamente, anche se così sembra. È impossibile per me sapere come intervenire dato che non hai fornito un progetto di esempio in cui si possa osservare il problema.


Ho visto i link indicati, il primo è realtivo ai blocchi in C#, ma io uso VB. Gli altri due parlano del blocco in ambiente GUI (sempre in C#), introducendo il ConfigureAwait(false) di cui avevamo già parlato, ma AWAIT (origine del blocco citato nell'articolo) non è usata nel mio progetto, dato che si affida al classe proxy generata dall'ambiente VS in base ai servizi esposti dal WCF.

In merito al consiglio di rivolgermi al consulente ... il consulente sono (anzi dovrei essere) io .. eheheheh ...

Penso di investire altri 3 giorni sulla cosa, con la nuova macchina e col log di IIS.
Dopodichè risolto o no, vado avanti, il progetto è grosso. Per male che vada (ma in un secondo tempo), abbandono la classe proxy da lui generata e mi affido ad Await ("recentemente" introdotto), anche se questo significa gestire a manuzza gli eventi (ed i ritardi), e rivedere, e riscrivere gran parte del codice Asincrono.

Darò in ogni caso qui esito.

Grazie.
Gino.

UNSTRING identifier-1 id-2 id-3
DELIMITED BY [ALL] OR [ALL] literal-1 lit-2
INTO {id-4 [DELIMITER IN id-5]
[COUNT IN id-6]}
[WITH POINTER id-7]
[TALLYING IN id-8]
[ON OVERFLOW imperative-statement-1]
[NOT ON OVERFLOW imper-2]
[END-UNSTRING]
11.886 messaggi dal 09 febbraio 2002
Contributi

anche se questo significa gestire a manuzza gli eventi (ed i ritardi), e rivedere, e riscrivere gran parte del codice Asincrono.

Prima di riscrivere il codice, verifica dov'è il problema altrimenti c'è rischio di lavorare e non ottenere benefici.


Darò in ogni caso qui esito.

Ok, grazie anticipatamente per la condivisione.

ciao,
Moreno

Enjoy learning and just keep making
135 messaggi dal 01 febbraio 2017
Rieccomi, dopo varie perdite di tempo, con una banalità sul certificato (errori strani dopo l'importazione del certiticato che funzionava sulla macchina di sviluppo), ho potuto effettuare i test anche su un nuovo server 2012.
La macchina di sviluppo su cui girava IIS 7.5 ha Win 7.
La macchian di produzione su cui gira IIS 8.5 ha Win Server 2012 R2.
Il blocco si verifica anche qui ...
Volevo postare un print screen di Fiddler, dove si vedono le varie richieste e le risposte del server, fino all'ultima, prima della morte definitiva, ma nn trovo il pulsante di inserimento immagini.
Forse anche questo forum si basa su servizi esterni di hosting per gli allegati ...

Provo ad indagare sui link indicati prima per i contatori di IIS, oramai sono rimasti due gg.

A doppppo.

UNSTRING identifier-1 id-2 id-3
DELIMITED BY [ALL] OR [ALL] literal-1 lit-2
INTO {id-4 [DELIMITER IN id-5]
[COUNT IN id-6]}
[WITH POINTER id-7]
[TALLYING IN id-8]
[ON OVERFLOW imperative-statement-1]
[NOT ON OVERFLOW imper-2]
[END-UNSTRING]
11.886 messaggi dal 09 febbraio 2002
Contributi

Volevo postare un print screen di Fiddler

Meglio ancora, salva le sessioni (File -> Save -> All Sessions...). Fai uno zip e caricalo su Google Drive, One Drive o altro, poi condividi il link per scaricare il file.

ciao,
Moreno

Enjoy learning and just keep making
135 messaggi dal 01 febbraio 2017

UNSTRING identifier-1 id-2 id-3
DELIMITED BY [ALL] OR [ALL] literal-1 lit-2
INTO {id-4 [DELIMITER IN id-5]
[COUNT IN id-6]}
[WITH POINTER id-7]
[TALLYING IN id-8]
[ON OVERFLOW imperative-statement-1]
[NOT ON OVERFLOW imper-2]
[END-UNSTRING]

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.