Windows Server 2003 SP2 파일 공유에 파일을 저장하는 내부 응용 프로그램을 지원합니다. 현재 파일을 저장하도록 구성된 방식으로 인해 한 폴더에는 최대 116,000개의 파일이 있습니다(다른 폴더에는 ~65,000개가 있고 다른 폴더에는 그보다 적지만 여전히 각각 수천 개가 있습니다). 응용 프로그램에서 파일을 쓰는 속도가 매우 느려졌습니다.
파일 레이아웃은 기존에 설정이 가능해서 좀 더 나은 방안을 생각해보려고 합니다. SMB가 사용할 수 없게 되기 전에 폴더당 얼마나 많은 항목을 처리할 수 있는지 경험해 본 사람이 있나요? 이 경우 꽤 오랫동안 속도가 느려졌지만 폴더가 100,000개 파일을 초과할 때까지 견딜 수 없게 시작되지 않았습니다.
답변1
파일 수와 디렉터리를 열거하는 데 사용되는 알고리즘의 확장보다는 대역폭과 대기 시간(특히 대기 시간)에 더 많이 의존합니다. 제가 말하는 것은 "마법의 숫자"는 없습니다.
SMB 프로토콜은끔찍한많은 왕복 여행이 필요하기 때문입니다. 대기 시간이 두 배로 늘어나는 파일 수는 다음과 같습니다.많은예를 들어, 두 배 이상 느립니다.
LAN, 네트워크 인프라의 대기 시간 및 서버 컴퓨터의 IO 하위 시스템 대기 시간에 대한 벤치마킹을 실수로 수행했습니다. 당신은 분명히 "마법의 숫자"를 발견했습니다. 성능이 좋아질 때까지 해당 디렉토리를 축소하겠습니다. 다른 방법은 없습니다!
답변2
Evan의 말이 맞아요. 마법의 숫자는 없습니다. 앱과 서버에 따라 다릅니다. 서버 2008로 업그레이드하는 것이 도움이 될 것이며 클라이언트가 SMBv2를 사용하는 Vista 이상이면 가장 먼저 할 일입니다. 500,000개의 파일이 있는 공유가 있는데 검색이 엉망이지만 사용자는 제공된 직접 경로만 사용하기 때문에 제대로 작동합니다. 동일한 서버에는 사용자에게 문제가 없는 100,000개의 파일이 공유되어 있습니다.
답변3
부분적으로 관련됨:
'마지막 액세스 업데이트' 중지
NTFS 드라이브의 폴더에 액세스할 때마다 Windows XP는 마지막 액세스 날짜가 포함된 타임스탬프를 사용하여 해당 폴더와 모든 하위 폴더를 업데이트합니다. 때로는 이로 인해 Windows 성능이 저하될 수 있습니다.
이를 변경하려면 REGEDIT( 시작 -> 실행 -> 'regedit' )를 열고 HKEY_LOCAL_MACHINES\System\CurrentControlSet\Control\FileSystem으로 이동합니다.
'NtfsDisableLastAccessUpdate'라는 새 DWORD 값(마우스 오른쪽 버튼 클릭 -> 새로 만들기 -> DDWORD 값)을 만들고 값을 '1'로 설정합니다.
그리고
불필요한 명명 규칙 비활성화
생성된 각 파일에 대해 Windows XP는 MSDOS 호환성을 위해 하나의 추가 이름을 사용합니다. 즉, 이름 뒤에 "."가 오는 8자 이름과 확장자를 위한 3자입니다. DOS 전용 소프트웨어를 사용하지 않으려면 이는 메모리 낭비입니다.
이를 변경하려면 REGEDIT를 엽니다.
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\FileSystem으로 이동합니다.NtfsDisable8dot3NameCreation 키 값을 '1'로 변경합니다.
(에서 가져옴http://basiccoms.blogspot.com/2008/08/windows-xp-performance-tweaking-guide.html)