에이전트 게이트웨이가 느려질 때 의심할 곳: SQLite 시작 지연 이야기
에이전트 게이트웨이 한 번 띄우는데 5분씩 멍 때리고 기다려야 한다면? (인내심 테스트도 아니고…)
새벽에 레딧을 뒤적거리다 발견한 글인데, 몇 달째 OpenClaw를 애용하던 헤비 유저가 9.5 버전으로 업데이트한 직후부터 게이트웨이 시작에 무려 5분이 걸린다고 하소연하고 있었다. 컴퓨터를 바꾼 것도 아니고 설정을 건드린 것도 아닌데, 엔터 치고 나서 라면 하나 끓여 먹고 와야 터미널 프롬프트가 뜬다는 거다.
처음엔 “에이, 본인 맥북이나 PC 환경이 꼬였겠지” 싶었다(물론 거대한 착각이었다). 댓글들이 달리며 집단지성 디버깅이 시작됐는데, 범인으로 지목된 녀석이 너무나 뜻밖이면서도 지극히 현실적인 녀석이었다. 바로 SQLite의 시작 무결성 검사(Sanity check)와 파일 락(Lock)이었다.
무슨 일이 벌어지고 있나
증상은 아주 단순하면서도 사람 피를 말린다. 게이트웨이 프로세스를 실행하면 터미널 커서만 깜빡거리며 5분 동안 아무런 반응이 없다.
답답해서 로그 레벨을 최대로 올리고 들여다본 유저들이 공통적으로 발견한 흔적이 있었다. 프로세스가 시작되자마자 SQLite DB 락을 잡으려고 세월아 네월아 대기하고 있었던 거다.
진짜 얄미운 건 이 버그의 발생 패턴이다. 에이전트를 가볍게 쓰던 뉴비들은 멀쩡한데, 에이전트 여러 개 굴리면서 몇 달 동안 작업 로그와 히스토리를 묵직하게 쌓아온 충성도 높은 헤비 유저일수록 지연 시간이 기하급수적으로 늘어났다.
열심히 써준 고인물 유저한테 지연 시간 폭탄을 선물하는 꼴이니 환장할 노릇이다.
커뮤니티에서는 특정 PR(openclaw#144053)에서 들어간 변경점이 회귀 버그(Regression)를 일으켰다고 정확히 짚어냈다. 어떤 용자는 로컬에서 해당 패치를 리버트하거나 직접 손봐서 빌드했더니 “거짓말처럼 1초 만에 뜬다”며 간증을 남겼고, 윈도우 환경 유저들은 doctor --fix를 돌려가며 임시방편으로 버티는 중이다.
왜 이런 일이 생기나
iOS 앱 개발할 때도 Core Data나 로컬 캐시로 SQLite를 매일 끼고 살지만, SQLite는 세상에서 가장 가볍고 신뢰할 수 있는 DB다. OpenClaw 같은 로컬 에이전트 도구들이 세션 상태, 도구 호출 이력, 백그라운드 크론 상태를 SQLite 단일 파일에 때려 박는 것도 지극히 자연스러운 선택이다.
하지만 문제는 이 파일이 시간이 지날수록 비대해진다는 점이다.
앱이나 게이트웨이가 켜질 때 “DB 파일 깨진 곳 없나?” 확인하겠다고 무결성 검사를 도는 설계를 넣었다고 치자. 파일이 몇 메가바이트일 땐 0.01초 만에 끝나던 검사가, 히스토리가 쌓여 수백 메가, 수 기가바이트가 되면 시작 시간 자체가 엿가락처럼 늘어진다.
여기에 멀티 프로세스나 백그라운드 워커가 동시에 DB 락을 쥐려고 경합(Lock Contention)까지 벌이면? 프로세스는 아무것도 못 하고 락이 풀릴 때까지 하염없이 멈춰 서 있게 된다(경험담이다…).
공식 상류(Upstream) 릴리스에서 시작 검사 시점을 백그라운드로 미루거나 인덱싱 구조를 고쳐주기 전까지는, 유저가 할 수 있는 응급 처치는 뻔하다. 오래된 히스토리를 정기적으로 VACUUM 치고 정리하거나, DB 파일을 백업하고 날려서 몸집을 줄이는 수밖에 없다.
왜 주목할까
이 사건이 흥미로운 건 단순히 OpenClaw라는 툴 하나가 삐끗했다는 이야기가 아니기 때문이다.
요즘 로컬에서 돌아가는 모든 AI 에이전트 도구들은 어떤 형태로든 로컬 상태를 영구 저장한다. 세션 기록, 메모리 벡터, 도구 사용 이력, 브라우징 캐시 전부 내 로컬 디스크의 SQLite나 JSON 파일에 차곡차곡 쌓인다. 그리고 그 데이터는 우리가 에이전트를 열심히 부려먹을수록 반드시 거대해진다.
오늘 OpenClaw에서 터진 이 5분의 지연은, Cursor든 Claude Code든 다른 어떤 로컬 에이전트 프레임워크에서도 똑같이 터질 수 있는 구조적 시한폭탄이다.
“분명 며칠 전까진 날아다녔는데 왜 이렇게 버벅대지?”라는 느낌이 들 때, 무작정 최신 LLM 모델 탓을 하거나 컴퓨터 사양을 의심하기 전에 내 로컬 DB 파일부터 열어봐야 하는 이유다. 범인은 늘 화려한 AI 모델 뒤편에서 묵묵히 일하던 작은 파일 하나였으니까.
정리
5분이라는 끔찍한 시작 지연은 결국 SQLite의 락 특성, 무심코 방치된 데이터의 누적, 그리고 시작 시점의 무결성 검사가 환상적으로(?) 버무려진 결과물이었다.
커뮤니티가 원인과 PR을 정확하게 파고들었으니 조만간 공식 핫픽스가 나오겠지만, 우리에게 남긴 교훈은 분명하다.
에이전트 도구를 수개월 이상 메인으로 굴리고 있다면, 지금 당장 내 홈 디렉터리에 숨어 있는 .db 파일 크기부터 확인해 보자. 시작이 유난히 굼떠졌다면, 엉뚱한 설정을 뒤적거리기 전에 비대해진 캐시 파일부터 청소해 주는 게 국룰이다.