오늘 알게되었습니다. Windows 7 에서 IE 8 은 세션을 공유한다는 것을... (Win 7 촙오라서...)
분명 XP를 사용할 때, IE 8 에서는 세션을 공유하지 않는 것으로 생각 했는데, Windows 7 에서 새로 추가된 것인지는 모르겠지만 정말 대 재앙이었습니다.
일반적인 사용자들이야 편하겠지만... 개발자들은 한 PC에서 여러 계정을 띄워놓고 테스트 할 일이 많은데 어쩐지 세션이 꼬이는 것이였습니다. (이것 때문에 CAS가 재대로 안되는지 알고 4시간 삽질한 것 같습니다.)
이걸 알게된 것도 완전 우연이였습니다. 작업관리자에서 익스플로러 메모리가 180MB 정도 잡아먹길래, 기존에 메모리를 해제하는 방법인 열려있는 브라우저를 최소화를 했는데도 메모리를 그대로 잡고 있었습니다.
이상한 점을 느끼고 몇 가지 테스트를 해 보았습니다.
1. IE 8 브라우저를 한개 띄웠을 때의 작업관리자
아래 보이는 대로 두개의 iexplore.exe 프로세스가 생성되었습니다.
2. shift + 클릭으로 새창을 띄웠을 경우 (새 창은 웹 페이지 접속)
페이지에 접속하게 되어 메모리와 CPU를 잡아먹는 iexplore.exe 프로세스가 생성되었습니다.
3. 새로 띄운 창을 닫음
새로 띄운 창을 닫았음에도 불구하고 프로세스가 그대로 남아 있습니다.
4. 처음에 띄운 브라우저를 닫음
처음에 생성되었던 두 개의 iexplore.exe 프로세스가 사라졌습니다.
위의 내용을 종합해보면 메인에서 관리하는 프로세스가 하나 있고 브라우저 별로 한 개씩 프로세스가 생기며, 모든 창이 닫히기 전까지 프로세스가 살아있는 것을 볼 수 있었습니다. 세션을 계속 유지하기 위함으로 생각 됩니다만...
이와 같이 세션을 공유하는 것을 해결 하기 위해서는 아래와 같은 방식을 MS에서 제시하였습니다.
>> 브라우저에서 새 세션으로 열기
저 같은 경우는 작업표시줄에서 shift + 클릭으로 새창을 많이 띄우는데 위의 방법은 저와는 맞지 않아 아래의 방식을 사용하였습니다.
>> 실행 옵션에 -nomerge 를 설정
설정을 마치고서 몇 가지 테스틀 해 보았습니다.
5. -nomerge 옵션을 주고 새로운 브라우저를 띄움
역시나 두 개의 iexplore.exe 프로세스가 생성됩니다.
6. shift + 클릭으로 새 창 띄움
아까와는 다르게 프로세스가 2개 더 생성되었습니다.
세션 별로 메인 프로세스를 가지고 브라우저 별로 새로운 프로세스를 가지는 것을 추측할 수 있습니다.
물론 브라우저를 닫으면 관련된 프로세스가 죽게 됩니다.
이걸로 모르고 개발하는 웹 개발자들이 태반일텐데... 완전... 힘이 쭉쭉 빠지네요...
흙... CAS는 세션이랑 밀접한건데... 파폭이나 크롬에서는 잘 동작하는데 IE 8 에서 이상해서 진짜 고민 많이 했는데, 전혀 관계 없는 부분에서 찾아낸게... 참 다행입니다 ㅋㅋㅋㅋㅋ
이제부텀 재대로 쓰면 되겠죠~