11.886 messaggi dal 09 febbraio 2002
Contributi
Sì, l'immagine si vede.
Noto che ad un certo punto alcune richieste restano pendenti ma poi, dopo quelle, altre due ottengono risposta.

Non è che per caso stai lasciando aperte le connessioni al database? Potrebbe essere che ad un certo punto ti si satura il pool e la richiesta resta in attesa che una delle precedenti connessioni aperte vada in timeout e si renda perciò di nuovo disponibile.

Prova a verificarlo guardando i performance counter "NumberOfActiveConnections" e "NumberOfPooledConnections" che trovi documentati qui.
https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/performance-counters

Qui altre informazioni sul connection pool.
https://docs.microsoft.com/it-it/dotnet/framework/data/adonet/sql-server-connection-pooling

ciao,
Moreno

Enjoy learning and just keep making
135 messaggi dal 01 febbraio 2017
Si, dalle verifiche e prove varie, la sensazione è che ci sia una specie di cache che si riempia, perchè il blocco si verifica dopo un certo numero di richieste ottenute con esito positivo. Poi prima di bloccarsi Fiddler inizia a riportare dei -1 come risposta, alternati a delle rispopste, fin quando di pianta completamete.
La cosa strana è che si veririca solo con la sicurezza attiva. In questi giorni ho cambiato solo il web.config e l'app.config, senza toccare una linea di codice. E solo questo fa la differenza.

Esaminando la risposta su Fiddler trovo un errore 500 "internal server error" ...

Domani proverò a seguire il tuo consiglio, vediamo se riesco ad uscire da questa empasse.

Grazie Moreno.
;-)

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]
135 messaggi dal 01 febbraio 2017
Rieccomi, ho controllato il db, ed effettuato il debug con sotto i valori di SQL, confermo che non ci sono connessioni lasciate aperte nel DB, in quanto sia "NumberOfActiveConnections" che "NumberOfPooledConnections" sono a zero nel momento del blocco.

Se era un problema di DB, si sarebbe dovuto bloccare anche senza sicurezza attiva, comunque ho voluto provare anche questa strada suggeritami.

Invece ho notato che il blocco non è sempre allo stesso punto, ma avviene dopo un certo numero di letture, che dipendono dalla velocità con cui sono eseguite.

E' come se arrivato ad un certo punto il server non riuscisse più a rispondere alle richieste e "perdesse qualche colpo", dopo diversi colpi persi, non riuscisse più a mantenere il passo e si bloccasse. Teoria dimostrata anche dai "-1" riportati da Fiddler, prima del blocco.

Quindi il problema torna su ISS ... provo a monitorare meglio, anche se i link che mi hai segnalato sono relativi software molto pesanti per infrastrutture più complicate.

Grazie Moreno, ti aggiorno.

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]
135 messaggi dal 01 febbraio 2017
Siamo arrivati, come avevo intuito il problema è nella cache di IIS che arrivato ad un certo punto si satura.
In particolare nel valore "Mancati riscontri nella cache di output", appena questo valore sale, in corrispondenza del picco si pianta.

Quindi penso che le richieste in coda, appena esaurita la cache rimangono in attesa e/o vengono perse, provocando il blocco di IIS che dopo il time-out va in errore.

Quindi penso nessun errore di configurazione, errore di db o protocollo. Bisognerebbe provare ad aumentare la cache (capendo da dove si fa) ... altri giorni di studio, ed i tre giorni preventivati sono passati.

Stacco e passo ad altro.

Spero che questa mia disavventura e resoconto siano utili a qualcuno.
La mia idea purtroppo nn cambia , parafrasando un famoso detto affermo che "la potenza è nulla senza una buona documentazione" !

Tutta questa tecnologia è difficile da implementare e domare, ho trovato sul web molti utenti con problemi simili sull'uso di questa "potenza", la documentazione ms (scritto minuscolo) è (adesso) enorme, ma molto frastagliata, disomogenea (si parte da un link di approfondimento di una caratteristica di VS 2015 e dopo qualche link ci si ritrova a leggere un articolo di VS 2008, e ti dice che la documentazione è obsoleta, quando non è rimossa direttamente), oppure documentazione incompleta, con esempi parziali che ti illustrano una parte della funzione che stai studiando (e quindi non implememtabili), senza un esempio completo ... non parliamo poi delle pagine mal tradoctte in automatico dall'inglese, si lo so che è la lingua ufficiale, ma io mi batto da oltre 10 anni per l'esperanto, una lingua franca e libera da sovercherie nazionali.

Mi fermo qui solo perchè ho scritto troppo ...

Grazie Moreno per i tuoi preziosi consigli.

Bonan matenon
Gino Lo Piccolo.

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
Ciao Gino,
puoi spiegare bene dove hai letto dei "Mancati riscontri nella cache di output"? È il nome del performance counter?

Quello significa semplicemente che IIS non ha trovato in cache un risultato pronto da fornire e che quindi deve far elaborare la richiesta all'applicazione ASP.NET. Non è niente di anomalo, anzi, credo sia del tutto normale dato che le richieste al servizio WCF sono probabilmente delle POST non cachabili. Se stai vedendo un picco è solo perché stai inviando richieste a manetta. Ogni richiesta è un mancato riscontro, è normale. Dovresti guardare l'altro performance counter, quello che ti dice quanti elementi esistono nell'output cache. Forse lo troverai a zero o giù di lì, il che dimostrerà che non è un problema di cache piena.

ciao,
Moreno

Enjoy learning and just keep making
135 messaggi dal 01 febbraio 2017
BrightSoul ha scritto:
Ciao Gino,
puoi spiegare bene dove hai letto dei "Mancati riscontri nella cache di output"? È il nome del performance counter?

Si, esatto.

Quello significa semplicemente che IIS non ha trovato in cache un risultato pronto da fornire e che quindi deve far elaborare la richiesta all'applicazione ASP.NET. Non è niente di anomalo, anzi, credo sia del tutto normale dato che le richieste al servizio WCF sono probabilmente delle POST non cachabili. Se stai vedendo un picco è solo perché stai inviando richieste a manetta.

Fa parte di una batteria di test

Dovresti guardare l'altro performance counter, quello che ti dice quanti elementi esistono nell'output cache. Forse lo troverai a zero o giù di lì, il che dimostrerà che non è un problema di cache piena.
ciao,
Moreno

si è basso.

Però come ti dicevo il tempo preventivato è abbondantemente passato. Sono strumenti troppo dispersivi, almeno per le mie abitudini, in RPG in un paio d'ore mettevo in piedi una lista con relative rotture automatiche (qualcosa di simile ai totali di SQL-Report), qui 5 giorni per cercare di capire (avessi almeno capito) dove sta il problema. In ASM avevo un perfetto controllo del codice, qui se ne è persa completamente traccia, il codice va per i fatti suoi e neanche i tools di sviluppo sono in grado di imbrigliarlo.

Un linguaggio di alto livello nasce per astrarre la logica procedurale (non nel senso di set di istruzioni) dal codice macchina, per avvicinarsi a quello dell'uomo.

Ma con C# questo si è perso, cercando invece di scimmiottare (e migliorare) quello che facevamo in JAVA.

Il CLR contrapposto alla VM perde miseramente, poichè le abitudini di ms che è partita con visual basic, per corteggiare quattro ragazzini che iniziavano a programmare con un liguaggio facile facile, sono state disattese, come dimostrano le domande senza risposte nei vari forum degli utenti di vs. Dell'MVC poi non ne parliamo, copiato dal PHP ?
Basta è meglio che mi fermo qui ... eheheheh ... torno a scrivere codice, risolverò questo problema quando sarò più grande.
Per oggi penso di aver irritato abbastanza persone ... eheheheh ....

;-)
Gino.
Modificato da SensoBit il 21 marzo 2018 08.54 -

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.