HTTP 세션 수 = TCP 세션 수?

HTTP 세션 수 = TCP 세션 수?

HTTP포트에서 수신 대기 20001하고 컴퓨터에서 실행되는 서버가 있는 소프트웨어가 있습니다 Unix. 서버의 로그 파일에는 HTTP현재 600개가 넘는 활성 연결이 있음이 표시되지만 HTTP, netstat -an | grep 20001서버가 실행되고 있는 동일한 컴퓨터에서는 2현재 TCP 연결만 열려 있는 것으로 표시됩니다. 서버는 다른 회사에서 제공했으며 HTTP세션 수가 많은 것에 대해 고객을 비난했습니다. 나는 그들이 회의를 제대로 끝내지 않았다고 생각합니다.

내가 아는 한

number of active HTTP sessions = number of open TCP connections on the listening TCP port

맞습니까? 그렇지 않다면 언제 그렇지 않았습니까?


편집하다

다음은 로그 파일에서 사용할 수 있는 정보의 예입니다.

New Session F865432C-3enOjJetUTlIoBEtfYS9yNM0l+c
New Session F865432C-HJ71n4/nCda5o3WaxqlmKNUZH48
New Session F865432C-VOWUYv/wtr7QXvxGqWPFyr/JI1o
New Session F865432C-icsmvyEcsmhM0zbzPTAepfQWc4U
New Session F865432C-K+iPSJswA85YnAJNEzSa9VIdpAQ
New Session F865432C-6L5Rp+net1JEgZeX2QSiLLW9U2g
New Session F865432C-WnVQC/9ROqO50LacYDorNgB+PVk
New Session F865432C-X81QIytjaLCtLioVvqRTJYOHqtk
New Session F865432C-qIkjOoMbmr9FVWDZuZwdBA//rxs
New Session F865432C-N05q4gAjPJll6qRqxbFK09C6fNc
New Session F865432C-JC3B3mkuCnJTDFML2tTv7FPdpw8
New Session F865432C-UOGwlKaQmOawOFnBIIPRoU91GWI
New Session F865432C-Z5dWyXkfx7SsLKmujrl/3vfPYh8
New Session F865432C-w9iKm2QkDQeqZynM7hUtk/t/5Yg
New Session F865432C-uwYNGT7HcOLvuUv9F/KPCYnx3WU
New Session F865432C-b5wcRmaXMZhSPU0h6aDdPmiUdv8
New Session F865432C-I6uVQ914c7ZT+rnD5/LxA593pHg
New Session F865432C-HhUrc/IkIbM+kYXOW3sb9SqvYuo
End Session F865432C-n2VSOhW0ewjf2RnIyu2z5TkN+I8
End Session F865432C-dtvl9+4n7U+CBtS4oYAdKv4XSgM
New Session F865432C-0WCqPy9jx/ThzjoMk60wAtzRDeI
New Session F865432C-FUpkDVUqS8Zbj7CTy0Pak8/R5AE
New Session F865432C-/Nr/q60cezrsSCXaE/aJDHiAkGM
New Session F865432C-oie/wfNvpglo6UTOPNDpobkE5bI
New Session F865432C-FUO7GmbEm7gfRDmt1YRQFUgnQmg
End Session F865432C-d5jf2n9HlEheraUDu0bKR9FXb5w
End Session F865432C-d9ev8S+du/IcBr8GRyVyeWONdy4
End Session F865432C-s/d3x+vZKQ8Tnp1tHp0hfpmE6Is
End Session F865432C-xuOj1wPjVa/SFn5Sx3qvFZHW1Uo
End Session F865432C-pdZgBzd4aurZzj6it48AkA+kkbU
End Session F865432C-BW8/9/Nxp83drQh19AV96dH1SGE
New Session F865432C-2AOjAIe6lHTChy1uk2hqhM7WNRg
New Session F865432C-KkIUP6Fa0HNjyrfhfhlNvBq6Rv4
New Session F865432C-aSRpOiGNQxmW48QwanqzCQ+/ixU
New Session F865432C-KujVjcb0npH1ODXkGdLXKu70Qmo
New Session F865432C-GXB9itx4CmV9I4sUYi2y6V4qw+U

"종료된 세션"보다 "새 세션"이 더 많다는 사실은 의심의 여지가 없습니다!

답변1

~에 따르면이 페이지, HTTP 세션은 서버에 대한 HTTP 요청으로 시작하고 서버의 응답으로 끝납니다. TCP 세션에는 여러 개의 요청-응답 쌍이 있을 수 있지만 동시에 발생하지 않고 순차적으로 발생합니다. 따라서 이 정의에 따르면 다음을 수행해야 합니다.

number of TCP sessions >= number of HTTP sessions

>( HTTP 서버로부터 응답이 수신되면 TCP 세션이 열려 있을 수 있기 때문일 수 있습니다 .)

즉, 로그 파일에는 HTTP 세션이 표시되지 않습니다. 신청 세션입니다. HTTP는 상태 비저장 프로토콜이기 때문에 HTTP 서버는 사용자가 돌아올 때 애플리케이션이 중단된 부분부터 계속될 수 있도록 사용자의 브라우저에 쿠키를 설정합니다. 그런데 F865432C-b5wcRmaXMZhSPU0h6aDdPmiUdv8브라우저에 설정된 쿠키의 내용일 수도 있습니다.

각 쿠키는 열린 세션에 해당합니다. 각 쿠키에는 관련 데이터가 있으며 서버의 디스크에 저장됩니다. 디스크가 가득 차는 것을 방지하려면 HTTP 서버(보다 정확하게는 애플리케이션)가 주기적으로 쿠키 병을 정리하여 작동 불능 세션(특정 기간 내에 브라우저에서 수신되지 않은 쿠키)을 제거해야 합니다.

따라서 애플리케이션에서 600개 이상의 활성 세션이 있다고 알려주는 것은 디스크에 600개 이상의 쿠키와 관련 데이터가 있다는 의미이지, 600개 이상의 동시 TCP 연결이 있다는 의미는 아닙니다.

이 숫자가 계속 증가하면 쿠키가 가비지 수집되지 않는다는 의미입니다. 즉, 서버 측에는 오래된 세션 데이터를 정리할 수 있는 것이 없습니다.

관련 정보