안녕하세요, 저희 사이트가 centos7에서 almalinux8로 업그레이드하면서
php나, nginx, mariadb도 최신버전으로 (대략 5년이상 업데이트수준) 업데이트 하면서
기존에 안정적으로 크래쉬 없이 운영하던 데몬들이
며칠에 걸쳐 하루 2~4번씩 이유 없이 순간적으로
접속 안 되는 증상이 있었습니다.
처음엔 라이믹스 서드파티 모듈이나 PHP 문제인 줄 알았는데,
결국 MariaDB 서버 자체의 크래시(SIGSEGV)로 확인됐고, 정확한 원인까지
찾아서 MariaDB 공식 버그트래커에 리포트했습니다. 비슷한 증상 겪으시는
분들 계실까 해서 공유합니다.
[증상]
- 사이트가 갑자기 잠깐(몇 초) 완전히 안 뜨다가 저절로 복구됨
- 에러 화면도 없이 그냥 "서버에 연결할 수 없음" 식으로 끊김
- 재현 조건이 특정되지 않고 랜덤하게 발생
[확인 방법]
서버에서 다음 로그를 확인해보세요:
sudo grep "got signal 11" /var/log/mysql/error.log
여기에 기록이 있고, 시점이 사이트 접속 안 되던 시간과 겹치면 같은 문제일
가능성이 높습니다.
[원인]
라이믹스나 PHP 설정 문제가 아니라, MariaDB 서버 자체의 쿼리 실행 정리
코드(JOIN::free_pushdown_handlers)에 있는 메모리 관련 버그로 확인됐습니다.
심지어 아주 단순한 단일 테이블 SELECT 쿼리에서도 발생해서, 특정 쿼리
패턴이나 데이터 문제가 아니라 MariaDB 자체의 문제입니다.
MariaDB 11.4.12 → 11.8.8로 업그레이드하니 빈도는 줄었지만(하루 7.6회 →
2.7회) 완전히는 안 없어졌습니다.
공식 버그 리포트: https://jira.mariadb.org/browse/MDEV-40578
(자세한 스택트레이스/재현 쿼리는 여기 참고하세요)
[임시 대응]
근본 해결은 MariaDB 쪽 패치를 기다려야 하지만, systemd 서비스에 자동
재시작(Restart=on-abnormal, MariaDB 기본 설정에 이미 포함)이 되어 있으면
크래시 나도 몇 초 안에 자동 복구되어서 실질적 피해를 크게 줄일 수 있습니다.
혹시 비슷한 증상 겪으신 뒤 해결대안을 찾으신분이 계시다면 의견부탁드립니다 ㅠ
댓글 0