CI 묻고 답하기

제목 ci3 session 메모리 관련 질문
카테고리 일반
글쓴이 beop 작성시각 2022/03/10 09:49:26
댓글 : 12 추천 : 0 스크랩 : 0 조회수 : 694   RSS

안녕하세요. 삼일째 혼자 끙끙대다가 질문 드려봅니다.

 

※ 문제

세션 라이브러리를 autoload에서 등록하여 사용하고 있고

작업을 잘하다가 1~2시간이 지나면

세션관련 오류가 뜨면서 작업이 안됌.

일시적으로 sess_driver를 files로 바꾸고 세션을 unset이 아닌 destroy로 제거해주고 하면 다시 정상작동이됌.

무언가 변수가 계속 쌓이면서 메모리가 터지나 싶은데 현재 세션변수 var_dump($_SESSION)를 찍어보면 그렇지도 않은것같음..

 

※ 환경

xampp // localhost // php.7.3.27 // version : CI 3.1.11 -> 3.1.13(두가지 버전 둘다 동일현상)

 

※ config

$config['sess_driver'] = 'database';

$config['sess_cookie_name'] = 'nx_sessions';

$config['sess_expiration'] = 3600;

$config['sess_save_path'] = 'nx_sessions';

$config['sess_match_ip'] = FALSE;

$config['sess_time_to_update'] = 300;

$config['sess_regenerate_destroy'] = TRUE;

 

※ 데이터 : var_dump($_SESSION)

array(4) {
  ["__ci_last_regenerate"]=>
  int(1646873115)
  ["nx_admin"]=>
  bool(true)
  ["m_idx"]=>
  int(1)
  ["level"]=>
  int(1)
}

이 데이터 이외에는 사용하는 세션값이 없음..

 

※ 오류 메시지

 

좀 추측갈만하거나 도움이 될만한 정보가 있을까요?

 다음글 세션이 오후만되면 끊기는데 무슨 이유가 있을까요?ㅠㅠ (3)
 이전글 컨트롤러 폴더 라우팅 문제 (7)

댓글

변종원(웅파) / 2022/03/10 09:56:49 / 추천 0

하드 디스크 용량 체크

db세션에서 파일세션으로 바꿔서 문제가 없다면 db관련 문제겠죠. 입출력은 어느정도 되는지.. 작업서버 사양등등..

beop / 2022/03/10 14:29:57 / 추천 0

@웅파 답변감사합니다.

자문자답하겠습니다.

용량이나 코드상엔 도저히 문제를 찾지못하여 해당버전의 문제점이 있나싶어

CI를 3.1.11 -> 3.1.13로 버전업하였는데 해결되었습니다.

허허.. 허탈하네요.

수정 -> 버전업을 해도 문제가 발생하였습니다.

한대승(불의회상) / 2022/03/10 14:57:22 / 추천 0
@beop 아.. 저도 허탈하네요.
beop / 2022/03/10 15:27:17 / 추천 0

@불의회상 해결된줄알았으나 버전업을 해도 마찬가지입니다ㅠㅠ 환장하겠네요.

DB로 잘쓰고 있다가 2시간정도 지나면 꼭 본문상의 오류가 출력이 됩니다. 세션destory하면 또 되구요... 

세션을 저장하는 곳은 로그인 한번뿐인데 말이죠 ..ㅠ 뭔가 autoload가 문제가 있는건지 참..

한대승(불의회상) / 2022/03/10 16:07:33 / 추천 0

@beop 이 오류는 Db 쿼리 실행시간이 2분을 넘어서 발생하는 오류인데요.

뭔가 DB에 병목이 생긴건 아닌지요?

beop / 2022/03/11 07:35:36 / 추천 0
@불의회상 네 다양하게 다 시도해봤습니다만 근데 디비는 전혀 문제가 없어서 미추겠네요.. 오늘 해결하고 자문자답해놓겠습니다.
변종원(웅파) / 2022/03/11 09:55:38 / 추천 1
db 설정에서 슬로우쿼리 로그 활성화 하고 해당 로그 보세요.
beop / 2022/03/11 10:18:38 / 추천 0
@웅파 오우. 좋은의견 감사합니다.
beop / 2022/03/18 12:31:19 / 추천 0

다시 작성합니다. 여전히 증상이 재현이됩니다.

로컬에서 카페24호스팅 받은 외부 DB로 접속해서 사용하고있는데

호스팅업체에서 localhost가아닌 외부에서 잦은 sql GET_LOCK 때문에 막힌것으로 추측됩니다.

한대승(불의회상) / 2022/03/18 13:27:13 / 추천 0
@beop 뭔가 실마리를 잡으신것 같아 다행입니다.
beop / 2022/05/11 08:31:26 / 추천 1

자문자답하겠습니다.

세션 테이블에 

ALTER TABLE ci_sessions ADD PRIMARY KEY (id);

기본키 추가를 빼먹고 제가 임의로 생성해서 별도의 키를 추가했었네요... 왜그랬을까요..

병목이니 호스팅이니 별의별 상황을 다 뜯어보고 있었는데 허무하네요.. 차라리 더 심오한 버그였으면 좋았을 것을..ㅎㅎ

창피한 질문이지만 혹시나 저같은 실수를 하시는분을 위해서 남겨놓겠습니다.

한대승(불의회상) / 2022/05/11 09:53:22 / 추천 0
@beop 슬로우쿼리 문제였군요. 해결되었다니 다행입니다.