안녕하세요.
기존에 2.0을 오래 전에 적용해서 사용하다가 드디어 4버전으로 신규 프로젝트를 진행하게 됐습니다. 그런데, 많은 부분이 바뀌었더군요.
이참에 욕심을 좀 부려서 세션도 Redis를 사용하고자 하여 테스트 중에 특이사항이 발견되어 도움을 요청 드립니다.
개발서버 내에 Redis와 nginx + php-fpm으로 구성하였습니다.
문제는 세션을 사용하는 컨트롤러에서 발생하게 됩니다. 계속 모래시계가 돌다가 결국 타임아웃이 떨어지는데 원인은 Redis에서 발생하는 것으로 보입니다. ($session = \Config\Services::session();)
redis-cli > monitor 결과
첫 페이지 진입 시는 정상입니다.
1594707220.204465 [0 127.0.0.1:57458] "SETEX" "ci_session:4hpnr0pqbusmo4oghrfueo92fa9oc8ta:lock" "300" "1594707220"
1594707220.204702 [0 127.0.0.1:57458] "GET" "ci_session:4hpnr0pqbusmo4oghrfueo92fa9oc8ta"
1594707220.212933 [0 127.0.0.1:57458] "EXPIRE" "ci_session:4hpnr0pqbusmo4oghrfueo92fa9oc8ta:lock" "300"
그런데, 새로고침할 경우에...
1594707327.288545 [0 127.0.0.1:57476] "TTL" "ci_session:4hpnr0pqbusmo4oghrfueo92fa9oc8ta:lock"
1594707328.288982 [0 127.0.0.1:57476] "TTL" "ci_session:4hpnr0pqbusmo4oghrfueo92fa9oc8ta:lock"
1594707329.289452 [0 127.0.0.1:57476] "TTL" "ci_session:4hpnr0pqbusmo4oghrfueo92fa9oc8ta:lock"
1594707330.289892 [0 127.0.0.1:57476] "TTL" "ci_session:4hpnr0pqbusmo4oghrfueo92fa9oc8ta:lock"
1594707331.298076 [0 127.0.0.1:57476] "TTL" "ci_session:4hpnr0pqbusmo4oghrfueo92fa9oc8ta:lock"
세션 관련된 설정은
app.sessionDriver = 'CodeIgniter\Session\Handlers\RedisHandler'
app.sessionCookieName = 'ci_session'
app.sessionSavePath = 'tcp://localhost:6379'
app.sessionExpiration = 3600
app.sessionMatchIP = false
app.sessionTimeToUpdate = 300
app.sessionRegenerateDestroy = false
Redis는 실제 프로젝트로는 처음 사용이다 보니 어려움이 좀 있네요. ^^
그럼, 경험하신 분들의 조언 부탁 드립니다.
.env 설정을 빼고 app.php 파일에 설정을 변경하니 해결이 되었습니다.
웁스.... 관심 주신 대승님 감사드립니다. ^^
Redis 세션 락이 발생하는것 같군요.
세션 관련 유용한 글이 있어 링크 걸어둡니다.
https://jennifersoft.com/ko/blog/tech/2019-03-21/