Al momento disponiamo di una VM molto poco potente e stiamo proponendo di passare a una VM di Azure con specifiche migliori. Il problema è che la macchina virtuale di Azure è molto più lenta della macchina virtuale originale anche se si tratta di una specifica superiore.
Il server originale è una VM a 2 core con 2 GB di memoria che è anche un server Web. È in esecuzione Microsoft SQL Server Web Edition 2008 R2 e poiché questo server viene utilizzato per altre cose, abbiamo dovuto limitare la memoria massima del server in SQL Server a 512 MB .
Il nuovo server è una VM a 4 core con 7 GB di memoria che è solo un server di database. È in esecuzione Microsoft SQL Server Standard Edition 2008 R2 e non abbiamo limitato la quantità di memoria che SQL Server può utilizzare.
Questo è uno dei due server installati in un ambiente con mirroring ma il database su cui sto eseguendo i test non è mirrorato. Gli altri database su questo server non ricevono molto traffico al momento (infatti, Activity Monitor non mostra alcuna attività sugli altri DB mentre stavo eseguendo questi test).
Mi rendo conto che un problema con le macchine virtuali di Azure è che i dischi rigidi sono una risorsa di rete, quindi sarebbe la fonte del rallentamento ma è ancora più lento anche quando ci sono 0 letture fisiche mostrate nelle statistiche IO.
Ho seguito i consigli di ottimizzazione in questa pagina nella macchina virtuale di Azure, incluso lo striping dei dischi (due dischi per unità) e l'inserimento di file di registro e dati su unità separate.
Le uniche cose che non ho fatto sono abilitare la compressione della pagina, limitare la crescita automatica sul database e spostare il registro errori del server SQL e tracciare le directory dei file su dischi di dati. Non l'ho nemmeno fatto sul server più vecchio.
Il vecchio server non ha eseguito questa regolazione e i file di registro e di dati si trovano sulla stessa unità che non è a strisce.
Il database sul server corrente è 65 GB (45 dati e 20 log) che era un po 'troppo grande per essere trasferito sul nuovo server, quindi sto testando su un DB più piccolo (6 dati e 13,5 log)
I risultati sul vecchio server sono CPU time = 1311 ms, elapsed time = 1057 ms.
e sul nuovo server sono CPU time = 1281 ms, elapsed time = 2525 ms.
Questa è solo una corsa ma i risultati sono rappresentativi di quello che sto vedendo normalmente.
Il nuovo server sembra avere un tempo trascorso significativamente più lungo del tempo della CPU. È un problema e c'è qualcosa che posso fare per rintracciare la causa?
Quali altri passaggi posso prendere per scoprire perché questo server sta andando così lentamente quando sembra che dovrebbe essere più veloce del vecchio server?