DigitalOcean 로드 밸런서 상태 확인으로 인해 CodeIgniter 세션이 넘쳐납니다.

DigitalOcean 로드 밸런서 상태 확인으로 인해 CodeIgniter 세션이 넘쳐납니다.

나는 이것을 한동안 알아내려고 노력해 왔지만 지금까지는 성공하지 못했습니다. DigitalOcean 지원팀에 몇 번 연락한 후, 저는 더욱 혼란스러워졌습니다.

다음 설정이 있습니다. 도메인은 codeigniter에 구축된 내 앱을 호스팅하는 두 개의 앱 드롭릿 앞에 있는 DO 로드 밸런서를 가리킵니다. 세 번째 물방울에는 내 데이터베이스 서버가 있습니다. 앱 서버는 php+fpm이 포함된 PHP7입니다.

앱 드롭릿이 로드 밸런싱되므로 데이터베이스에서 세션을 처리하는데 이는 사용자 관점에서 잘 작동합니다.

LB 상태 확인은 HTTP에서 10초마다 실행되도록 구성되었으며 대상은 codeigniter에서 생성된 페이지입니다.

지금까지의 요약: 상태 확인은 10초마다(분당 6회) 2개의 물방울을 대상으로 하므로 분당 총 12번의 상태 확인이 예상됩니다. DO가 자동으로 자동 장애 조치를 수행한다는 점을 고려하면 실제로는 분당 24개의 확인(장애 조치 LB에서도 확인을 보낸 경우)이므로 시간당 1440개라고 가정할 수 있습니다. 내 세션 테이블에는 개인 범위에 있는 두 개의 서로 다른 연속 IP에서 동일한 양의 트래픽이 있기 때문에 "이중" 검사는 실제로 현실입니다.

문제: 실제로 로드 밸런서에서 기대하는 세션 양의 정확히 4배가 표시됩니다(시간당 ~1440 대신 시간당 ~5760 세션이라는 일관된 수치가 표시됩니다). DigitalOcean은 그것을 알아낼 수 없었습니다.

테이블을 작게 유지하기 위해 하루에 여러 번 빈 세션을 지우는 가비지 수집(더 나은 이름이 없음)이 있기 때문에 세션의 양은 실제 문제가 아니지만 이에 대해 의아해합니다. 상태 확인에 약간의 공간을 두거나 세션 처리기 라이브러리를 시작하지 않는 URL에 대한 확인을 가리킬 수 있다는 것을 알고 있지만 두 가지 완화 방법 모두 목적을 달성하지 못합니다.

이런 행동을 본 사람이 있나요? 어떤 아이디어가 있나요? 나는 이것을 약 한 달 동안 쫓고 있습니다.

답변1

로드 밸런서의 내부 작동에 대한 자세한 지식이 없는 경우:

로드 밸런서에 정의된 각 서비스, 각 진입점을 대신하여 상태 확인이 실행되는 것으로 의심됩니다.

동일한 백엔드로 이동하는 HTTP 및 HTTPS 진입점이 모두 있는 경우 개별 상태 확인이 두 번 발생하여 표시되는 요청 수가 두 배로 늘어납니다.

관련 정보