우리는 전용 서버 (단일 쿼드 코어, 6GB RAM)에 있었고 새로운 전용 서버 (2 개의 16 진 코어, 32GB RAM)로 옮겼습니다. 둘 다 Windows Server 2008, SQL Server 2008입니다. 새 서버의 성능은 이전의 느린 서버보다 약간 떨어집니다.
테스트에서 ASP.NET 응용 프로그램은 10-20 % 느리게 실행됩니다. STATISTICS IO 및 STATISTICS TIME을 사용하여 값 비싼 개별 쿼리를 실행하면 새 서버에서 경과 시간이 10-20 % 증가합니다. SQL 쿼리 프로필은 값 비싼 쿼리에서 더 높은 CPU 사용량을 보여줍니다.
새 서버의 작업 관리자는 sqlserver.exe가 22GB의 RAM을 사용하고 있음을 보여 주지만 CPU 값은 항상 매우 낮습니다.
모든 통계, 업데이트 또는 재구성 된 인덱스 등을 업데이트했습니다. 수행 한 테스트 양에 따라이 시점에서 실행 계획을 새 서버에 저장해야합니다. 누락 된 인덱스가있는 경우 (있는 것 같지 않음) 이전 및 새 서버에 동일하게 영향을줍니다. New는 이전에 동일한 데이터의 백업을 복원했습니다.
새 서버의 성능이 더 나을 것으로 예상했지만 더 큰 관심사는로드입니다. 이전 서버가로드 된 상태에서도 더 나은 성능을 발휘할 경우이 새롭고 약간 더 나쁜 서버가로드를 가져 가면 어떻게됩니까?
여기서 또 무엇을 놓칠 수 있습니까?
편집 : MAXDOP가 6으로 설정되었습니다.
기존 서버는 OS, 데이터베이스 및 tempdb가 동일한 물리적 드라이브 (RAID 10)에 있습니다. 총 4 개의 15k 3Gb / s 3.5 인치 SAS. 새 서버에는 RAID 1의 OS, RAID 10의 데이터베이스, RAID 5의 tempdb의 세 가지 드라이브 세트가 있습니다. 총 9 개의 15K 6Gb / s 2.5 인치 SAS.
기존 서버에는 1 개의 Intel Xeon E5620 2.40 GHz 쿼드 코어 8 스레드 (w H / T)가 있습니다. 새 서버에는 2 개의 Intel Xeon E5-2640 2.5GHz 6 코어 12 스레드 (w H / T)가 있습니다.
편집 2 : 최종 분석은 다음과 같습니다.
전원 계획은 고성능이 아니라 균형을 유지했습니다. 그것을 바꾸었다.
Tempdb는 RAID 10이 아닌 RAID 5에있었습니다. 다른 HD를 추가하여 물리적으로 별개의 두 개의 RAID 10 구성을 만들었습니다. 하나는 tempdb와 다른 하나는 다른 것입니다.
바이러스 검사에서 SQL 관련 파일 (mdf, ldf, ndf, bak)을 제외했습니다.
새 서버로 이동 한 후 모든 인덱스를 다시 작성하십시오. 백업, 복사, 복원의 결과로 매우 조각화되었습니다.
그리고 프로세서 점프가 그렇게 크지 않다는 것을 깨달았습니다. 쿼리는 그렇게 빨리 실행되지는 않지만 더 많은 프로세서, 더 많은 코어, 더 많은 RAM이 있으면 확장 성이 향상됩니다.