우리회사는 Kiosk 화면을 Web Application으로 제작하여, Debian 기반 Linux(라즈베리파이와 비슷한 놈에서..)에서 운영하고있다.
이 Kisok 화면을 보여줄 하드웨어의 저장공간이 매우 작다보니(Total은 4GB인데.. OS가 2.4~2.6GB 까먹고, 크로미움 자체가 거의 1기가 가까이 된다) 각종 캐쉬가 쌓이거나, 로그가 쌓임에 따라 Disk 용량이 부족해져서 부팅이 안된다던지, X-server(화면)이 먹통이 되는 경우가 자주 발생했다.
그렇게 먹통이 된 친구를 하나 까서 조사해보던 도중... 다음과 같은걸 발견했다..!
Chromium이 쌓아올린 캐시파일 용량이 무려 162Mb....!
chromium-browser의 disk cache를 저장하는 위치는 다음과 같다.
/home/{user}/.cache/chromium/Default/cache
각 캐시파일의 용량은 500bytes 정도로 매우 작았다.
그런데 그 작은 캐시파일이 무려 4만개가 쌓였다 -_-
캐시파일의 내용은 Socketio 관련 로그였다. (우리 Web Application은 백엔드와 프론트엔드 사이를 socketio로 연결해놓았고. Web Application에서는 console.log를 찍고있었다..)
웹 어플리케이션이 문제였겠지만. 그래도 사전에 이런 캐쉬가 미친듯이 쌓이는걸 방지하고자 내용을 찾아보았고. 방법은 매우 단순했다.
Chromium 브라우저를 startup 하는 스크립트 / 커맨드에서. Chromium을 실행할때 --disk-cache-size 옵션으로 최대 캐시 사이즈를 조절할수있다.
관련한 내용은 여기에 있다.
https://peter.sh/experiments/chromium-command-line-switches/
그래서 우리는 chromium startup 스크립트를 다음과 같이 변경하기로 했다.
/usr/bin/chromium-browser --disk-cache-size=2048 \
--noerrdialogs --kiosk --disable-pinch --overscroll-history-navigation=0 \
-app=http://127.0.0.1:8888
--disk-cache-size 뒤에 들어올 값은, 'Bytes' 단위이다
이후, 다음과 같으 쉘 스크립트를 만들어 실행해놓고 캐시가 어떻게 쌓이는지 모니터링 해보았당
#/bin/bash
while :
do
echo "------------------------------------------"
echo "file counts in chormium-cache directory"
# counting cache files
ls -l /home/pi/.cache/chromium/Default/Cache | grep ^- | wc -l
echo "file disk usage in chromium-cache directory"
# caculcating cache files size
du -sh /home/pi/.cache/chromium/Default/Cache
echo "------------------------------------------"
sleep 1
done
그 결과..
2Mbytes 이상으로 캐시파일이 쌓이지 않는다 ^_^
Kiosk 앱을 웹으로 개발하시는 분들은 참고하셔서.. 저처럼 뻗어버린 하드웨어를 보지 않길 기윈합니다