2013-02-02 4 views
0

동일한 서버에있는 약 80 개의 응용 프로그램이 있습니다. aspnet webform (C#)이 컴파일 된 동일한 사용자 정의 빌드 응용 프로그램을 사용하는 모든 아주 작은 사이트입니다. 각 응용 프로그램에는 자체 dbin에 dll 응용 프로그램 dll과 일부 오픈 소스 타사 라이브러리 (bin 폴더는 디스크의 약 15MB)가 포함되어 있습니다. 응용 프로그램이 나와 함께 서명하여 다시 작성하고 GAC에 넣을 수 있습니다. 모든 사이트가 거기에서옵니다. 제 질문은 : "메모리 소비 측면에서 80 대신 gac에서 dll 복사본을 하나만 갖출 수 있습니까?" "이것은 전체 성능과 메모리 사용량을 향상시킬 수 있습니까? 그 외에 15 * 80Mb 디스크 공간 사용량을 제거 할 수 있습니까?" 감사합니다.App-pool dll 및 GAC

+0

[VMMap] (http://technet.microsoft.com/en-us/sysinternals/dd535533.aspx)과 같은 도구를 사용하여 메모리를 공유 할 수 있는지 또는 공유 할 수 있는지를 생각해 볼 수 있습니다. 앱이 동일한 앱 도메인을 공유합니까? – rene

+0

좋은 제안. 이 도구는 실제로 asp가 임시 폴더에있는 각 DLL의 복사본을 생성한다는 것을 보여줍니다. 따라서 디스크 공간 사용량은 두 번 (빈에서 한 번, 임시로 한 번)이며 각 사용 된 dll은 메모리에서 kep이며 메모리를 두 번 소모합니다. 반대로 gac dll은 한 번로드됩니다. 나는 이것이 서버에서로드/언로드 프로세스를 많이 이끌고 아마도 사이트 제공 속도를 늦추는 것으로 생각합니다. 아마도 gac에서 대부분의 dll을 움직이면 전반적인 성능이 향상 될 수 있습니다. – manudea

답변

1

Dll 메모리 소비는 같을 것입니다. GAC에 등록 된 Dll을 사용하면 시스템에서 실행중인 모든 닷 넷 응용 프로그램에서 찾을 수 있다는 단점이 있습니다. 두 번째는 ngen.exe를 사용하여 GAC에 dll을 넣는 whne입니다. DLL의 기본 이미지를 생성 할 수 있습니다.이 이미지는 전체 시스템 수준의 컴파일 된 버전으로, 시간 컴파일로만 실행되므로 실행 속도가 향상됩니다. 다른 장점이 있을지 모르지만,이 모든 것이 내가 지금 생각할 수있는 것입니다.

+0

VMMap은 각 dll이 메모리에 별도로로드되었음을 보여줍니다. – manudea

+0

+1. 또 다른 장점은 dll을 한 곳에서 80 곳에서 업데이트하는 것입니다. – kateroh