SQL Server 2000 CPU al 100% ogni 10 minuti

martedì 13 novembre 2007 - 14.44

Actarus Profilo | Newbie

Salve a tutti!!

Ho un problema (tanto per cambiare ) ed è il seguente:

ho fatto il passaggio di un database che uso come "serbatorio" temporaneo abbstanza sollecitato ma non troppo (circa 600 mila fra insert update e delete al giorno ) da MSDE a SQLServer 2000 quest'ultimo si comporta ottimamente nel senso che ho migliorato le prestazioni ma ...stranamente (e non riesco proprio a capire da cosa nasce) ogni circa 10 minuti la CPU utilizzata dal SQL2000 va al 100% per circa 1 minuto e mezzo 2 minuti

L'applicativo che interagisce con il db non chiede a SQL2000 nessun lavoro così pesante da richiedere un utilizzo così elevato della CPU e per così tanto tempo Nessun processo che posa chiedere ogni dieci minuti circa un lavoro così grosso Peraltro questo succede anche quando il numero di operazioni è basso ... e inoltre le operazioni richieste vengono eseguite da sql sever normalmente senza perdere in prestazioni

Naturalmente nessuna operazione pianificata ...buh non so che fare!!
Aiuto!!

Ringrazio tutti coloro vorranno darmi una mano!!

Saluti e buon lavoro a tutti!

lbenaglia Profilo | Guru

>...buh non so che fare!!
>Aiuto!!

Lancia una sessione di Profiler ed osserva quali comandi vengono sottomessi in quel minuto; analogamente lancia il System Monitor e cattura l'attività di CPU, RAM, rete e dischi.
A questo punto sarai in grado di sapere che sta succedendo

>Ringrazio tutti coloro vorranno darmi una mano!!
>
>Saluti e buon lavoro a tutti!
Grazie,

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Actarus Profilo | Newbie


Grazie Tante!! verifico subito!
buona giornata e buon lavoro!

amelix Profilo | Expert

Io ho avuto un problema simile...
Non avevo impostato il limite massimo di memoria utilizzata e, dopo un po', mi andava in swap su file system.
Io ti consiglio il 50% della ram.

Andrea - http://www.MelisWeb.eu/

lbenaglia Profilo | Guru

>Non avevo impostato il limite massimo di memoria utilizzata e,
>dopo un po', mi andava in swap su file system.
>Io ti consiglio il 50% della ram.

Ciao Andrea,

per caso sul tuo server girano altri servizi oltre a SQL Server?
Diversamente se la macchina è dedicata non c'è motivo di limitare la memoria massima dedicata all'istanza dato che SQL Server rilascerà la memoria allocata nel momento in cui verrà richiesta dall'OS.
Se il server è dedicato e riscontri swap, significa che la memoria è sottodimensionata.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

amelix Profilo | Expert

>Ciao Andrea,
>
>per caso sul tuo server girano altri servizi oltre a SQL Server?
Solo SQL Server 2005

>Diversamente se la macchina è dedicata non c'è motivo di limitare
>la memoria massima dedicata all'istanza dato che SQL Server rilascerà
>la memoria allocata nel momento in cui verrà richiesta dall'OS.
Non so cosa dirti... La pensavo (speravo) anche io così.
Mi si piazzava il processore al 100% e ci metteva un'eternità x ogni richiesta...

>Se il server è dedicato e riscontri swap, significa che la memoria
>è sottodimensionata.
In questo momento ha 2GB e a MsSql ne ho assegnati 1GB.

Ora non ha più problemi di prestazioni.
Ma gli darò un'altra opportunità appena avrò il tempo di seguirla...

>Ciao!
Ciao e grazie x la segnalazione.

Andrea - http://www.MelisWeb.eu/

lbenaglia Profilo | Guru

>>Se il server è dedicato e riscontri swap, significa che la memoria
>>è sottodimensionata.
>In questo momento ha 2GB e a MsSql ne ho assegnati 1GB.

Verifica col System Monitor che la cache hit ratio sia superiore al 90-95%, diversamente hai bisogno di RAM

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Actarus Profilo | Newbie

Ciao Lorenzo,
grazie tante per l'aiuto ..ma ahimè il problema continua...

ho fatto le verifiche con il trace e il monitor di SQL Server e presenta delle query che hanno un costo se vogliamo ridicolo poichè si tratta di circa 16 ms (la colonna duration penso sia espressa in ms) per le query lente invece tutte le altre segna 0 ms

Spiego meglio l'uso che faccio di questo DB ...si tratta di un uso insolito direi improprio poichè non è un database di una normale applicazione di memorizzazione dati ma è una sorta di transito temporaneo per la gestione delle trasmissioni dati via radio ..considera che giornalmente ho circa 200 mila ricezioni e 300 mila trasmissioni (quindi records per tabella)

..le applicazioni vb net che accedono a questo db sono 1 per ogni canale radio (i canali radio sono 5) per la gestione della trasmissione e della ricezione e un'altra (unica per tutti i canali) che esegue dei "ragionamenti" sulle ricezioni e prepara le tramissioni

Quindi l'applicazione dei ragionamenti esegue dentro un timer con interval=1ms una select sulla tabella delle ricezione per vedere se deve eseguire delle richieste e quindi preparare le trasmissioni (scrivendo sulla tabella della trasmissione)
Le applicazioni invece sui canali scrivono sulla tabella della ricezione ed controllo sempre cone delle select all'interno di timer con interval = 1ms la tabella delle trasmissioni per trasmettere via radio

Sia la tabella delle trasmissioni che quella delle ricezioni le tengo al massimo con 1000 records ciascuna salvando i records eliminati su delle tabelle di log ricezione e trasmissione
(a loro volta le tabelle di log le ripulisco poichè lascio sul db 3 giorni di log)

La cosa che non capisco e soprattutto la seguente :
oggi ho rimesso il database su un istanza MSDE sullo stesso PC dove risiedono le suddette applicazioni ed SQL si comporta normalmente cioè la CPU viene utilizzata in più o in meno in base alle ricezioni e alle trasmissioni ricevute e di conseguenza trasmesse Mai con uso prolungato della cpu (100% fisso)

Invece se io dedico un pc a SQL Server (non msde ma succede la stessa cosa con msde perchè ho provato) e quindi con applicazioni residenti su un'altra macchina ..SQL ha questo comportamento strano (cpu al 100% fissa per anche piu di un minuto) (oddio poverino magari ha ragione :) ) nonostante io non riceva praticamente nulla e quindi non trasmetta nulla

Un'altra cosa stranissima è che il PC ha 1Gb di RAM io ho impostato un massimo uso a 748Mb sql a sempre rispettato il tetto massimo ma raggiunto il limite (la notte suppongo) scendeva nuovamente per poi recuperare di giorno, anche se la memoria totale del sistema (windows + sql) risultava sempre al massimo impostato (877 = 748 + 129) Mai vista una cosa del genere..buh ..lo starò trattando così male?
La percentuale di utilizzo della rete è fissa al 12% ..non so penso dovrebbe andare bene

Scusami (scusate) tanto per questa lunga mail ... vi sono molto grato anche solo per avermi dedicato del tempo nel leggerla ..se mi date una dritta ..vi sarò grato ancora di più :D

Buon lavoro a tutti!

Actarus Profilo | Newbie

Dimenticavo..scusate.. :(
tutti i pc montanto windows xp e la macchina dove mi da il problema funziona bene poichè ho provato anche con un altro pc ..

Grazie ancora Saluti!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5