Quel vecchio avido di SQL Server

Oggi ho incontrato un problema abbastanza fastidioso configurando un build controller in TFS. L’errore era generato dall’impossibilità di attivare un servizio WCF nell’AT per mancanza di memoria RAM libera. Questo porta ad una regola generale da applicare se avete un TFS a singola istanza, dove SQL Server e AT condividono la stessa macchina.

Se seguite i dimensionamenti di MSDN, la configurazione singola macchina, con 4 GB di RAM ed un disco 10k è sufficiente per gruppi fino a 500 utenti. Se la vostra soluzione è virtualizzata, avete anche il vantaggio di poter dare più RAM e più CPU con poco sforzo e quindi la soluzione singola macchina, è comoda perché vi occupa solamente una licenza di Windows Server ed è di facile manutenzione.

La regola di base che dovete tenere in mente è che SQL Server tende a consumare tutta la memoria disponibile, lasciando poche risorse al resto. In questo caso l’occupazione di memoria di SQL era arrivata a 3 GB lasciando praticamente nulla disponibile al resto dei servizi. La regola doro quindi è quella di limitare l’uso di RAM di SQL Server, in modo da bilanciare l’uso delle risorse ed evitare questi problemi.

In questo specifico caso purtroppo era mancata la checklist, dato che come sempre avevo parlato di questo problema all’amministratore, ma poi con tutte le cose da fare entrambi ci siamo dimenticati fisicamente di farla, per cui purtroppo, come volevasi dimostrare, senza limitazione SQL Server ha occupato cosi tante risorse da compromettere il funzionamento degli altri servizi.

Ricordate sempre di monitorare le risorse usate dai vari componenti di TFS, cosi da prevenire errori di questo tipo.

Happy TFS.

Gian Maria.

2 Responses to Quel vecchio avido di SQL Server

  1.  

    Il titolo potrebbe essere cambiato in “Quel vecchio avido, per fortuna, di SQL Server” :) in fondo, che giri sulla stessa macchina con altri servizi, non è un toccasana.. ma quando è da solo (per altro, cosa consigliata) questo è un comportamento desiderato. Dai, fammi difendere un po’ SQL Server :)

  2. Anche in: Quei vecchi avidi gestori dati, perchè alla fine anche Mongo si comporta allo stesso modo. :)

    La conclusione però è che bisognerebbe sempre fare delle Checklist e smarcarle, perchè per esperienza capita di discutere di delle cose, stare per farle, poi magari essere interrotti e credere erroneamente di averle fatte :)