Quale potrebbe essere il collo di bottiglia tra SQL Server, IIS e .net quando si riceve json come testo dal DB?

0

Ho trascorso la maggior parte del mese a lavorare sul plugin di jQuery Calendar. L'installazione è tale che tutte le voci del calendario sono memorizzate in una tabella all'interno di SQL Server e im utilizzando una singola istruzione "Select As" per costruire i dati JSON all'interno della query SQL stessa.

Questo ha un tempo di esecuzione inferiore a un secondo. Tuttavia, chiamare l'effettiva pagina finale di aspx nel browser richiede un'attesa di oltre 240 secondi mentre i dati vengono passati come json al browser.

Ho provato vari metodi per aggirare questo problema. Ad esempio, ho provato a scrivere prima i risultati dell'interrogazione su un file json, quindi a chiamare il file nella pagina finale. Ciò riduce il tempo di caricamento della pagina a circa 90 secondi, ma non è ancora abbastanza veloce.

Ho anche implementato una funzione in cui, se i dati non sono stati modificati, lo stesso file JSON viene restituito e non viene generato nuovamente. Quando non ci sono dati modificati sul calendario, questo ha ridotto il tempo di caricamento della pagina a circa 1 secondo. Sono convinto che scrivere i dati JSON nel file sia il collo di bottiglia qui ..

Ma la vera domanda è, è così efficiente come le cose si otterranno realisticamente con IIS e .net? O c'è spazio per miglioramenti?

Inoltre non so quale aspetto indagare ulteriormente ora. Non so se considerare se IIS sta causando il blocco o il modo in cui ho messo insieme il progetto.

Esiste una soluzione più efficiente di quella che ho messo insieme sopra?

    
posta Khuram Malik 28.10.2011 - 15:26
fonte

3 risposte

2

Dato che SQL Server può essere nascosto in XML semplicemente usando "AS XML", si potrebbe pensare che avrebbero aggiunto "AS JSON" almeno nella versione di Denali. Ci siamo accontentati di creare una classe .NET per darci quella funzionalità sul database, così abbiamo potuto recuperare JSON invece di un oggetto query. Non importa cosa sia stato provato, la conversione è stata incredibilmente lenta.

Dai un'occhiata a questo post SO . Mostra come convertire il tuo set di record in JSON usando .NET.

    
risposta data 28.10.2011 - 20:07
fonte
2

Oltre all'ottimo suggerimento di Oded, prenditi il tempo per risolvere il problema. Al momento hai IIS, SQL e il resto del tuo stack tecnologico incluso nel problema. Ma hai già scoperto che il problema si verifica solo durante la serializzazione. Quindi è necessario rimuovere tutti i lanugine.

Scrivi un test unitario che esegue solo la serializzazione usando i dati Mock. I dati fittizi devono rappresentare i valori del DB in termini di dimensioni e tipo (copia / incolla i risultati in una stringa e li analizza in una struttura dati).

Aggiungi al test fino a quando non riesci a riprodurre il problema. Se un Mock non funziona, allora aggancia direttamente al DB. Quindi aggiungere un altro pezzo ... ecc. Quindi togliti dal test fino a restringere il problema alla sola tecnologia coinvolta.

Se a quel punto non riesci ancora a capirlo, avrai abbastanza dettagli e codice per pubblicare una domanda SO per trovare la risposta al problema delle prestazioni.

    
risposta data 28.10.2011 - 16:33
fonte
0

Ti suggerisco di provare qualcosa come VRTA per capire dove il tuo collo di bottiglia è. Potrebbe mostrare che l'elaborazione del server ha richiesto tutto questo tempo o che sta elaborando JSON nel browser.

    
risposta data 28.10.2011 - 16:49
fonte

Leggi altre domande sui tag