2011-02-02 6 views
2

Asp.net 사이트에서 SessionState 변수를 사용하여 얼마나 많은 메모리 리소스를 사용하고 있는지 알 수 있습니까? 문제를 해결하기 위해 응용 프로그램을 변경하고 싶지 않습니다. 이 도구 나 IIS를 사용하여 이것을 알 수 있다면 좋을 것입니다.얼마나 많은 메모리 리소스를 알고 있는지 sessionState 변수로 사용하고 있습니까

저는 SessionState를 InProc에서 Sql로 옮길 계획을 가지고 있습니다 만, 내가 가진 문제가 얼마나 큰지 먼저 알아야합니다.

감사합니다.

답변

1

이 대답에 따르면 here에 따르면 세션에서 사용중인 메모리의 양을 알 수있는 방법이 없습니다.

2 * 이름에서 문자의 수
+ 8 바이트 : 각 세션 변수

:하지만 당신은 추측 할 수있다 (또한 내가 연결이 질문 here를 마크 Schupp의 도움말 참조) 오버 헤드
+ 데이터 크기

문자열은 내부적으로 유니 코드 (2 바이트/문자)로 저장됩니다.

+0

예, 응용 프로그램에 코드를 작성해야만 가능합니다. 사이트 외부에서이를 수행 할 수있는 방법이 있다면? –

+0

당신이 말하는 게시물에서 나는 대답을 찾은 것 같아요. 당신은 백업 저장소를 SQL Server로 바꿀 수 있고 SessionItemShort 또는 SessionItemLong의 크기를보고 데이터의 직렬화 된 크기를 알 수 있습니다. 아마도 정확하지는 않지만 가까이 있어야합니다. –

+0

@Ariel Larraburu : 예, 가능합니다. 난 그 질문에서 모든 대답을 인용하고 싶지 않았어;) –

0

당신은 그것을 시도 할 수 있습니다 :

BinaryFormatter bf = new BinaryFormatter(); 
MemoryStream m = new MemoryStream(); 
foreach(var obj in Session) { 
    bf.Serialize(m, obj); 
} 

long bytes = m.Length; // real size 
+0

코드를 활성화하려면 highligter 코드의 각 행 앞에 공백을 두 개 더하십시오. – gor

+0

이 코드를'EndRequest'에서 실행하십시오. – gor

+0

이렇게하면 세션 크기를 얻을 수 있지만 사이트의 모든 세션 변수의 크기를 알아야합니다. –

0

당신은 당신의 자신을 쓰고, 세션 상태 데이터의 양을 확인할 수 있습니다. 그건 힘든 방법입니다 ... 세부 here.

+0

꽤 재미 있지만 사이트에 적용하기에는 너무 어려워 보입니다. –

관련 문제