특정 시간에 FlushCache 메시지가 로그에 나타남


22

우리는 최근에 많은 데이터베이스 성능 문제를 겪어 왔으며 그 이유를 알아낼 수 있도록 노력하고 있습니다. 우리는 DBA (나는 소프트웨어 개발자)가 없기 때문에 나는 그것을 윙윙 거리고 있으며 온라인에서 찾은 것의 대부분은 외국어처럼 읽습니다.

매일 아침 SQL Server를 다시 시작했습니다. 이것이 업무 일 동안 작동하는 유일한 방법이기 때문입니다. 매일 아침 5 시경에 로그에 2 분마다이 메시지가 나타나기 시작했습니다.

FlushCache : db 9 : 0에 대해 97168ms에서 7432 개의 쓰기로 11848 개의 bufs를 정리했습니다 (8139 개의 새로운 dirty bufs는 피함).

마지막 목표 미해결 : 4, avgWriteLatency 32

평균 처리량 : 0.72MB / 초, I / O 포화도 : 11635, 컨텍스트 스위치 18849

물론 숫자는 매번 다르지만 서버를 다시 시작할 때까지 해당 패턴으로 동일한 메시지가 반복됩니다. 나는 이것을 해석하는 방법을 잘 모르겠습니다 .Google에 대해 노력하고 있으며 수집 한 것은 I / O에 문제가있을 수 있으며 예상보다 오래 걸리는 것입니다. 우리는 최근 SSD 사용으로 전환하여 쓰기 문제가 아니라고 생각했습니다.

누구든지 이것에 대해 밝힐 수 있습니까?


답변:


29

오류 로그의 FlushCache 메시지는 검사 점 로깅 및이 경우 긴 검사 점 (복구 간격보다 오래 걸리는 검사 점으로 정의 됨)으로 인해 발생합니다. 기록 여부에 관계없이 2012 년 이전과 2012+에서는 동작이 다릅니다. SQL Server 2012 이전에 검사 점 로깅을 받으려면 추적 플래그 (T3504)를 설정해야합니다. 그러나 SQL Server 2012부터는 긴 검사 점이 발생할 때 기본적으로 해당 메시지가 기록됩니다.

이제 "실제로 나쁜 가요?" , 상황에 따라이 숫자들을 살펴보기 시작해야합니다. 약 93MB의 더티 버퍼 만 플러시하는 데 97 초 이상 걸렸습니다. 이것은 잠재적으로 많은 데이터 이탈 (실제 검사 점 자체 동안 약 64MB 상당의 버퍼도 오염 됨)과 잠재적으로 데이터 수정 및 / 또는 나머지를 따라 가지 않는 스토리지의 혼합 일 수 있습니다. I / O 워크로드

내가 할 일은 스토리지 서브 시스템의 상태를 확인하고 대기를보고 인스턴스의 전반적인 성능을 얻는 것입니다. 한 번 봐 가지고 카운터 성능 모니터 논리 디스크를 하고 무엇을보고 전체 I / O 이탈 IS와 처리량 , 대기 시간IOPS . 디스크 성능에 대한보다 생생한 그림을 그릴 수 있습니다. 스토리지를 벤치마킹 할 수있는 능력이 있다면, 아직 기준을 정하지 않은 경우, 해당 볼륨이 수행 할 수있는 기능 ( SQLIO 는 그에 대한 유용한 유틸리티 임)과 현재 수행중인 활동을 볼 수 있습니다. 현재 벤치 마크와 비교하기 위해 볼륨이 일어 났을 때 벤치 마크 기준선을 갖습니다.

다음은이 메시지를 설명 하는 유용한 기사입니다. 작동 방식 : FlushCache 메시지는 언제 SQL Server 오류 로그에 추가됩니까?

편집 : 질문을 다시 읽으면이 의견을 놓쳤습니다.

매일 아침 5 시경에이 메시지를 받기 시작했습니다.

위의 지침에 따라 현재 스토리지에서 발생하는 상황을 확인하십시오. 이는 체크 포인트 성능이 저하되고 "길이"가되는 스토리지에 부담을주는 교과서 예약 작업처럼 들립니다.


2
주어진 링크에 따라 Diskspd.exe가 SQLIO를 대체했습니다. Diskspd.exe에 대한 링크는 다음과 같습니다. gallery.technet.microsoft.com/DiskSpd-a-robust-storage-6cd2f223
Tim Coker
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.