Diagnosticarea problemelor Guvernatorul de resurse
Rezultate neașteptate înseamnă o situație în care diversele elemente ale guvernatorului de resurse sunt de lucru, dar rezultatele nu coincid cu așteptat. De exemplu, clasificarea nu este ședințe de lucru, orice probleme la crearea sau ștergerea grupurilor de încărcare de lucru.
sesiuni de clasificare
Sesiunile sunt clasificate în grupul volumul de lucru implicit în următoarele condiții.
Funcția clasificator definită de utilizator nu există sau nu este activat.
Funcția clasificator definite de utilizator pune sesiunile de grup de volumul de lucru implicit, ceea ce indică funcțiile logice eronate.
Rezolvarea problemelor de bază
În cazul în care o funcție clasificator definită de utilizator nu funcționează, sesiunile sunt plasate automat în grupul implicit volumul de muncă. După crearea unei funcții clasificator definite de utilizator pentru a verifica dacă acesta este înregistrat în controlerul și că configurația resurselor stocate în memorie este actualizat.
Crearea, înregistrarea și funcția clasificator de integrare este un proces în trei etape definite de utilizator.
În primul rând, trebuie să creați o funcție.
Pentru a determina dacă există optimizarea lățimii de bandă, CPU, trebuie să verificați următorii parametri ai sistemului.
Verificați rata totală de utilizare a serverelor procesorului. În cazul în care serverul se execută în prezent alte aplicații în afară de SQL Server, acestea pot interfera cu solicitarea diagnosticată.
Verificați alocarea resurselor CPU printre bazine de resurse. Piscina de resurse poate fi supusă reglementării, în cazul în care un alt bazin minim stabilit o valoare de utilizare ridicată a procesorului. Comparați performanțele așteptate (calculate) utilizarea procesorului cu încărcătura reală.
Check out toate grupul volumul de lucru desemnat de piscina de resurse. Încărcați din alte grupuri de încărcare de lucru pot afecta utilizatorii de același bazin de resurse.
Verificați alocarea resurselor CPU între diferite Programatoare. Cererea ar putea fi vizionate plasate într-un planificator care conține interogări care rulează lung. În acest caz, se poate crea impresia că executarea cererii este supusă reglementării, dar, de fapt, problema este distribuția inegală a sarcinii între Programatoare.
Poate că volumul de muncă este blocat de alte sesiuni și nu este supusă reglementării în conformitate cu reglajele de resurse.
Verificați numărul de sesiuni concurente, execută în prezent solicitări în sistem. Pe măsură ce numărul de cereri simultane de a efectua SQL Server încearcă să aloce pentru fiecare dintre ele cel puțin o cantitate minimă de timp CPU pentru a preveni un deficit de resurse CPU pentru această solicitare.
Cantitatea de alocare de memorie
În acest caz, este suspectat că, din cauza lent interogând dimensiunea actuală a memoriei alocate.
Guvernatorul de resurse impune limita de memorie pentru cererea, reducând cantitatea de memorie alocată pentru interogări mari pot menține în limita. În cazul în care cererea este primită cu mai puțin de 100% din cantitatea dorită de memorie alocată, este posibil să trebuiască să resetați datele de timp și de a scrie pe disc, care afectează în mod semnificativ performanța.
Pentru a stabili în mod corespunzător cantitatea maximă de memorie pentru interogare, aveți nevoie pentru a determina procentul de interogări mari. parametrii optimi poate fi determinată folosind următoarele acțiuni.
Verificați starea actuală a alocării capacităților de memorie interogând tabelul sys.dm_exec_query_memory_grants. coloană valoarea Ideal_memory_kb arată valoarea optimă calculată pe baza estimărilor numărului de elemente. coloana cu valoarea Requested_memory_kb arată valoarea solicitată, care poate fi redusă după atingerea numărului maxim de solicitări. Dacă valoarea este semnificativ mai mic valorile requested_memory_kb ideal_memory_kb. anchetă de multe ori va forțat să reseteaza datele de timp (pe ipoteza că estimarea este numărul corect de elemente).
Monitorul de sistem de lansare și de a aduna date prin granturi reduse de memorie / sec contor. Acest contor reprezintă numărul relativ de cereri de alocare de memorie care au fost alocate mai mică decât volumul optim al faptului că suma maximă de memorie alocată a fost atins anterior. interogări mari pot rula mult mai lent decât cei care primesc cantitatea optima de memorie, pentru că trebuie să resetați datele de pe unitatea pentru a atinge limita de memorie alocată.
Pentru a compensa problema cu alocare de memorie, este posibil să se mărească dimensiunea maximă a piscinei sau cantitatea maximă de alocare de memorie.
Guvernatorul de resurse nu poate fi singura cauză a problemei. Poate că serverul rula alte aplicații și cerințele lor de memorie este o parte integrantă a problemei.
Dacă apar erori de memorie cel mai bine este de a începe diagnosticarea cu jurnalul de erori. Jurnalul conține mesaje similare cu următoarele:
Mesaje posibile enumerate în jurnalul de erori, după cum urmează.
FAIL_PAGE_ALLOCATION, și apoi numărul de pagini, pentru care a fost făcută o încercare de distribuție.
FAIL_VIRTUAL_RESERVE, și apoi numărul de octeți în legătură cu care a fost făcută o încercare redundante.
FAIL_VIRTUAL_COMMIT, și apoi numărul de octeți în legătură cu care a fost făcută o încercare de a repara.
Este important să înțelegem că problema care a cauzat eroarea de memorie, iar problema, care este cauza principala a erorilor sunt adesea diferite. Dacă noi nu vorbim despre cererea out-of-control, lipsa de eroare de memorie, de obicei, este rezultatul multi-tasking. Ca urmare, studiul cauzelor FAIL_PAGE_ALLOCATION eroare cu aspect obișnuit de multe ori trebuie să ia în considerare funcționarea sistemului într-un sens mai larg.
Următoarea sursă importantă de informații care sunt conținute în jurnalul de erori este starea memoriei. În funcție de eroarea specifică ar trebui să fie verificate cu privire la valorile cantitative specifice de memorie grefieri tranzacții cu un singur sau mai multe, de backup virtuale sau fixare. Mai mult, procesul de diagnostic este important să se identifice obiecte sau procese care consumă cea mai mare parte din memorie. De obicei, cele mai exigente dintre următoarele obiecte sau procese de memorie.
Parametrul MEMORYCLERK_ * înseamnă că configurația serverului sau volumul de muncă necesită o alocare de memorie specifică. Componentele SQL Server corespund memoriei lor grefieri, iar componentele individuale pot avea mai multe grefieri de memorie. Pentru mai multe informații, consultați. În secțiunea sys.dm_os_memory_clerks. Uneori, în funcție de grefierilor de memorie pot afla ce volumul de muncă este cauza problemei. Dar noi trebuie să examinăm obiectele de memorie sunt cel mai adesea asociate cu grefierii pentru a afla ce a cauzat consumul unor cantități mari de memorie.
CACHESTORE_ *, USERSTORE_ *, OBJECTSTORE_ * sunt tipurile de cache-uri. În cazul în care cache-ul consumă o cantitate mare de memorie, aceasta poate însemna următoarele.
Memoria cache este alocat, dar nu a fost încă introdus ca o intrare care poate fi scos din cache. Acest lucru este foarte similar cu situația descrisă mai sus MEMORYCLERK obiect.
sunt folosite toate intrările cache, astfel încât nici una dintre ele nu pot fi eliminate. Puteți afla de privirea de la sys.dm_os_memory_cache_counters contoare și comparând valorile entries_in_use_count entries_count și coloane.
Parametrul MEMORYCLERK_SQLQERESERVATIONS indică cât de mult de memorie este rezervată pentru a executa cererile de execuție interogare sortate sau compuse. Dacă acest raport este mare, și, astfel, există o eroare de memorie, acesta este de obicei un semn al unei erori de programare în server.
Memorie indicator de stare în jurnalul de eroare, de asemenea, indică modul de memorie este epuizată. Memoria Brokeri pentru fiecare bazin prezinta alocare de memorie între împrumutat (compilare), iar în cache memoria rezervată (selecționat). Indicatori pentru cei trei brokeri corespund precedente obiectelor de memorie asociate cu memoria grefierilor. Se poate vedea cât de mult de memorie este alocată acestui bazin cu acest funcționar sau un obiect de memorie, care primește informații de la groapa de gunoi completă folosind script personalizat, și vizualizarea de management dinamic care arată sys.dm_os_memory_cache_entries identificator de piscină pool_id, care este asociat cu fiecare intrare.
Dacă trebuie să contactați serviciile de asistență pentru clienți, se colectează următoarele informații.
Un jurnal de erori, care arată eroarea de memorie insuficientă și starea de memorie de ieșire la momentul erorii.
Afișează următoarele instrucțiuni: