Abbiamo un server DB di produzione su SQL 2005. Tutto funziona normalmente per un po ', ma dopo un paio di settimane vediamo un notevole calo delle prestazioni. Solo il riavvio di SQL Server riporta le prestazioni alla normalità.
Alcuni retroscena:
- Esecuzione di oltre 1200 database (principalmente tenant singolo, alcuni multi-tenant). Prima che qualcuno dia lezioni sul passaggio al multi-tenant, ci sono validi motivi per mantenere questa struttura ......
- La RAM è di 16 GB. Dopo il riavvio, SQL Server non impiega troppo tempo per tornare a 15 GB di utilizzo.
- Connessioni DB attive sono circa 80 connessioni - che riteniamo abbastanza buone considerando che esiste un pool di connessioni per server Web per processo - quindi non abbiamo un problema di perdita di connessione.
Abbiamo provato diverse cose in orari non di punta: - Esegui DBCC DROPCLEANBUFFERS (con un CHECKPOINT) per cancellare la cache dei dati. Non ha alcun effetto, né cancella l'utilizzo della RAM). - Esegui FREEPROCCACHE e FREESYSTEMCACHE per cancellare i piani di query e la cache di proc memorizzata. Nessun effetto.
Ovviamente il riavvio di SQL Server non è l'ideale in un ambiente di produzione attivo. Ci manca qualcosa. Qualcun altro lo attraversa?
AGGIORNAMENTO: 28 aprile-2012 Stiamo ancora combattendo questo problema. Ho ridotto la memoria per SQL Server a 10 GB, solo per escludere qualsiasi contesa con il sistema operativo. Mi sto avvicinando al restringimento, ma ho bisogno di aiuto dal mio prossimo passo.
Ecco cosa ho trovato, dopo aver riavviato SQL Server, il file della pagina si sposta tra 12,3 GB e 12,5 GB. Rimarrà così per giorni. I thread totali del server si bloccheranno tra 850 e 930, anche stabili e coerenti per giorni e giorni (sqlserver è costantemente compreso tra 55 e 85 di quelli a seconda del traffico).
Quindi, c'è "un evento". Non ho idea di quale sia l'evento, non riesco a vederlo nei registri e non riesco a vedere nulla di coerente nel giorno della settimana o nel momento in cui si verifica, ma tutti i suddetti file di pagina passano a 14.1 o 14.2 GB, e i thread passano tra il 1750 e il 1785.
Controllando perfom quando ciò accade, oltre 900 di quei thread sono sqlserver. Quindi vado a sp_who2 per vedere da dove provengono questi thread ... e ci sono solo le connessioni db usate circa 80.
Quindi ... qualcuno ha qualche idea su come posso localizzare il resto di questi 900 thread su SQL Server e cosa stanno facendo?
AGGIORNAMENTO: giugno-01-2012 Sto ancora combattendo il problema. Per chiunque stia ancora leggendo, il problema con i thread che saltano su è stato risolto. Ciò è stato causato dal software di backup automatico ComVault. Stava creando un thread che cercava di eseguire il backup di database che non erano più presenti (stava mantenendo un elenco di database precedenti) anziché semplicemente eseguire il backup dei database correnti.
Ma il problema persiste e dobbiamo riavviarlo ogni settimana, dare o prendere qualche giorno. Lavorare con il team di Rackspace per vedere se possono far luce.