좋아, 관심있는 사람은
몇 달 전에 3 개의 서버 각각에 직접 연결된 SSD 드라이브를 설치하고 SAN에서 해당 SSD 드라이브로 DB 데이터 및 로그 파일을 이동하여 몇 개월 전에 문제를 해결했습니다.
SSD 드라이브를 설치하기로 결정하기 전에이 문제에 대해 조사 한 내용 (이 질문의 모든 게시물의 권장 사항 사용)에 대한 요약입니다.
1) 세 서버 모두에서 다음 드라이브에 대한 PerfMon 카운터 수집을 시작했습니다.
Disk F:
SAN 기반 논리 디스크, MDF 데이터 파일
Disk I:
포함 LDF 로그 파일 포함
Disk T:
SSD, 직접 tempDB 전용
아래 그림은 2 주 동안 수집 된 평균 값입니다.
Disk I: (LDF)
IO가 작고 대기 시간이 매우 낮으므로 디스크 I : 무시할
수 있음 Disk T: (TempDB)
IO에 비해 더 큰 IO가 있음 을 알 수 있으며 Disk F: (MDF)
동시에 대기 시간이 훨씬 더 좋습니다-0 ms
분명히 디스크 F에 문제가 있습니다. 데이터 파일이 상주하는 곳은 IO가 낮음에도 불구하고 대기 시간이 길고 평균 디스크 쓰기 큐가 높습니다.
2)이 웹 사이트의 쿼리를 사용하여 개별 데이터베이스에 대한 대기 시간 확인
https://www.brentozar.com/blitz/slow-storage-reads-writes/
1 차 서버에서 거의 150-250ms의 읽기 대기 시간과 150-450ms의 쓰기 대기 시간을 가진 몇 가지 활성 데이터베이스
흥미로운 점은 무엇입니까? master 및 msdb 데이터베이스 파일의 읽기 지연 시간은 최대 90ms로 , 데이터의 작은 크기와 낮은 IO로 인해 의심됩니다. SAN에 문제가있는 다른 표시
3) 구체적인시기는 없었다
"SQL Server에 문제가 발생했습니다 ..."메시지가 표시
되는 동안 해당 메시지가 기록 될 때 실행중인 유지 관리 또는 디스크가 많은 ETL이 없습니다.
4) Windows 이벤트 뷰어
"SQL Server에서 발생했습니다 ..."를 제외하고 문제를 암시하는 다른 항목을 표시하지 않았습니다.
5) 상위 10 개 쿼리 확인 시작
sp_BlitzCache (cpu, 읽기 등) 및 가능한 경우 최대한 활용
많은
데이터베이스를 인덱싱해도 데이터베이스를 인덱싱 해도 스토리지에 많은 영향을 줄 수있는 수퍼 IO 무거운 쿼리 는 없습니다.
6) 우리는 SAN 팀이 없습니다
SAN 에 대한 네트워크 경로를 도와주는 1 명의 sysadmin 만 있습니다. 다중 경로이며, 3 개의 서버 각각에 2 개의 네트워크 케이블이있어 스위치와 SAN으로 연결되며 1 기가 바이트 / 초로 가정됩니다
7) CrystalDiskMark 결과가 없습니다
또는 서버 설정 당시의 다른 벤치 마크 테스트 결과 속도 가 무엇인지 알 수 없으며 현재 속도가 프로덕션에 영향을 미쳤을 때 현재 속도를 확인하기 위해 벤치 마크 할 수 없습니다.
8) 해당 데이터베이스의 체크 포인트 이벤트에서 확장 이벤트 세션 설정
XE 세션은 "SQL Server에서 발생했습니다 ..."메시지 중에 체크 포인트가 실제로 느리게 발생 함을 발견하는 데 도움이되었습니다 (최대 90 초).
9) SQL Server 오류 로그
포함 된 "FlushCache" "Saturation"항목
지정된 데이터베이스의 검사 점 시간이 복구 간격 설정을 초과 할 때 표시됩니다.
세부 사항에 따르면 체크 포인트가 플러시하려고하는 데이터의 양이 적고 완료하는 데 오랜 시간이 걸리며 전체 속도는 약 0.25MB / 초입니다 ... 이상한
10) 마지막으로이 그림은 스토리지 문제 해결 차트를 보여줍니다.
"하드웨어 문제 : 시스템 관리자 / 하드웨어 공급 업체와 협의하여 SAN, 구 / 결함 드라이버, 컨트롤러, 펌웨어 등의 구성 오류를 수정하십시오."
또 다른 질문 "Slow checkpoint ..." 플래시 스토리지의 느린 체크 포인트 및 15 초 I / O 경고
Sean은 하드웨어 및 소프트웨어 수준에서 문제를 해결하기 위해 점검해야 할 항목에 대한 목록이 매우 훌륭했습니다.
우리의 sysadmin은 목록에서 모든 것을 확인할 수 없었기 때문에 우리는 단순히이 문제에서 일부 하드웨어를 던지기로 선택했습니다.
해결:
1TB SSD 드라이브를 주문하고 서버에 직접 설치
가용성 그룹이 있으므로 보조 복제본에서 SAN에서 SSD로 DB 데이터 파일을 마이그레이션 한 다음 장애 조치 및 이전 기본에서 파일을 마이그레이션하여 총 다운 타임을 최소화했습니다 (1 분 미만).
이제 각 서버에는 로컬 DB 데이터 복사본이 있으며 언급 된 SAN으로 전체 / 차이 / 로그 백업이 수행됩니다.
Windows 이벤트 뷰어 로그에 더 이상 "SQL Server에서 발생했습니다 ..."메시지와 백업 성능, 무결성 검사, 인덱스 재 구축, 쿼리 등이 크게 증가했습니다.
DB 파일을 SSD로 마이그레이션 한 후 IO 대기 시간 측면에서 성능이 얼마나 향상 되었습니까?
영향을 평가하기 위해 마이그레이션 2 주 전과 마이그레이션 4 주 후의 성능 Windows 성능 모니터 로그를 사용했습니다.
아래는 DB 수준 대기 시간 통계 비교입니다 (마이그레이션 전후에 SQL Server의 캡처 된 가상 파일 통계 사용).
요약
SAN에서 직접 연결된 로컬 SSD로 마이그레이션하는 것이 가치가
있었습니다. 스토리지 대기 시간에 큰 영향을 미쳤으며 평균 (특히 WRITE 작업) 평균 90 % 이상 향상되었으며 IO에서 20-50 초의 급격한 증가가 없습니다.
로컬 SSD로 이동하면 스토리지 성능 문제뿐만 아니라 우려했던 데이터 안전성도 해결되었습니다 (SAN에 장애가 발생하면 3 대의 서버 모두 동시에 데이터가 손실 됨)