Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Python에서 진행하는 크롤링의 속도에 개선이 필요하다. #48

Open
eclipse1228 opened this issue Feb 5, 2025 · 0 comments

Comments

@eclipse1228
Copy link
Member

배경:
앞으로 많은 양의 데이터를 크롤링해야한다. 속도와 전력소비가 적은것이 중요하다.

  • headless 옵션으로 적은 전력소비, 빠른 속도

문제점:
파이썬으로 진행했던 프로젝트가 os 라이브러리까지 사용해서 매우 느리다.

Lighthouse를 빠르게 실행시키는 프로세스로 업그레이드 필요.

주장1:

  1. “Node 기반의 Lighthouse”를 계속 커맨드로만 쓰면 매 실행마다 오버헤드가 크다.
  2. Node.js 코드를 작성해, 여러 URL을 반복해서 Lighthouse에 전달하는 구조로 바꾸면 프로세스 생성 및 Chrome 실행 오버헤드를 크게 줄일 수 있다.

해결방법1:

  1. 병렬처리
  • 다만 병렬 처리 시에는 시스템 리소스(CPU, Memory 등), 특히 Chrome 가동수에 따라 한계가 있으므로 적절히 조절해야 합니다. (Lighthouse 공식)
  • 규모가 더 크다면, 크롬을 띄우는 VM(혹은 Docker 등)을 여러 개 띄워서 분산 처리도 고려해볼 수 있다.

주장2:

  1. report.json 보고서 저장
  2. report.json 을 읽기
  3. 읽어서 mongodb에 저장

I/O 가 2번입니다.
해결방법2:
Node API를 통해 Lighthouse를 실행하면, 결과를 직접 변수(메모리)로 받을 수 있습니다. 그럼 JSON을 디스크에 쓰지 않고, 곧장 필요한 부분만 추출해 DB로 전송 가능합니다.

구체적인 시나리오

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant