2023년 6월 21일 수요일

puppeteer 로 크롤링 시 발생하는 문제점

node pm2 로 크롤링을 계속 하니 /tmp/snap-private-tmp/snap.chromium/tmp 폴더 안에 puppeteer_dev_chrome_profile-* 파일들이 지워지지 않고 계속 살아 있어서 디스크 용량이 꽉 차버렸다.

일단 du -sh * | sort -rh | head -n 10 로 용량 많은것들 찾아서 지워줬다.

그리고 /var/log/journal 폴더 안에 용량도 많길래 최대 사이즈 설정

$ sudo nano /etc/systemd/journald.conf
SystemMaxUse=1000M

최적의 방법은 모르겠지만 puppeteer.launch 옵션에 userDataDir 옵션을 줘서 해당 폴더에 유저데이터 저장하게 하고 puppeteer.launch 하기전 userDataDir 폴더를 fs.rmSync 로 삭제하는 방법으로 우선적으로 수정.

나중에 시간되면 더 좋은 방법을 찾아봐야할듯.

puppeteer.launch 해서 받은 변수 browser 로 close() 하고 바로 또 launch 하는게 문제였음..

browser.close(); -> await browser.close(); 로 해결.

close() 함수가 정상적으로 실행이 안된다면, 아래 오류가 발생
Failed to create /home/ubuntu/node/project/pricedown/crawling/user-data-dir/SingletonLock: File exists (17)

크롤링 파일 실행할때 user-data-dir 폴더 삭제하는 방법으로 해결.

댓글 없음:

댓글 쓰기