SQL Server

WSUS, WID (윈도우즈 내부 데이터베이스) SQL Server 메모리 과부하

미스터몽키 2019. 5. 8. 04:06

얼마전 서버에서 갑자기 SQL Server 가 느려지는 현상이 발생했다.


운영체제 Windows Server 2012 R2 Standard 


DBMS: SQL Server 2014 Standard Edition 


메모리: 8GB



별다른 이슈도 없었는데 갑작스럽게 DBMS가 느려진 것이다.

작업관리자에서 확인해 보니 sqlservr.exe 가 메모리 5GB 이상 사용하고 있고 전체 메모리 사용량도 90%에 육박했다.


연결된 응용프로그램이 쿼리 시간 초과 오류가 발생하여 정상적으로 응용프로그램을 사용할 수 없었다.

 

원인을 몰라 한참을 헤매다가 작업관리자를 유심히 살펴보니 sqlserver.exe  프로세스가 두 개 실행 중이고 메모리 사용이 5GB 인 것의 "사용자 이름"은   "MICROSOFT##WID~" 였다.

다른 하나의 사용자 이름은  일반적인 MSSQLSERVER 였다.


원인은 WID 즉  Windows Internal Database 윈도우즈 내부 데이터베이스가  문제였다.


WID를 이해하려면 먼저 WSUS 를 이해해야한다.


윈도우 서버 업데이트 서비스 WSUS (Windows Server Update Services) 는 로컬 네트워크에 속한 윈도우 업데이트를 빠르게 진행하기 위해 윈도우 업데이트를 마이크로소프트사에 업데이트 서버에 직접 접속하여 내려받는 것이 아니라 WSUS가 실행 중인 내부 윈도우즈 서버에서 업데이트를 내려받게 된다.

CDN 과 비슷하게 업데이트 서버를 분산한다고 이해하면 될 것 같다.


WSUS 사용하는 윈도우즈 서버는 내부 데이터베이스 WID(Windows Internal Database) 로 MS SQL Server 가 인베디드 형태로 자동 설치된다.


윈도우즈 서버를 처음 구성할 때 WSUS를 설치한 것이었다.


메모리 사용량이 늘은 것은 업데이트 이슈가 있어 서버가 많은 작업을 처리하고 있었던 것이다.

그래서 MS SQL Server 인스턴스가 두 개 실행 중이었던 것이고

하나는 일반적인 SQL Server 인스턴스   -> "사용자 이름" MSSQLSERVER 

다른 하나는 WID 인스턴스  ->  "사용자 이름" MICROSOFT##WID~

 

해결은 윈도우즈 서버에서 WSUS 서비스를 제거하고 재 부팅하여 한 개의 MS SQL Server 인스턴스만 실행하게 했다.


(관련링크)


http://eung-jin.blogspot.com/2015/01/windows-2012-r2-wsus.html


https://blogs.technet.microsoft.com/kocne/2017/01/12/wsus-db%EB%A5%BC-%EC%9E%AC%EC%83%9D%EC%84%B1%ED%95%98%EC%97%AC-console-%EC%83%81%EC%9D%98-contentcatalog-%EA%B8%B0%EB%B0%98%EC%9D%98-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8-kb-%EC%A0%95%EB%B3%B4/



https://ko.wikipedia.org/wiki/%EC%9C%88%EB%8F%84%EC%9A%B0_%EC%84%9C%EB%B2%84_%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8_%EC%84%9C%EB%B9%84%EC%8A%A4