2013-12-16 1 views
1

내 scrapyd는 매일 한 번에 200 개의 거미를 다루고 있습니다. 어제, RAM이 모자를 썼기 때문에 서버가 추락했습니다.200+ 거미에 Scrapyd 설정을 최적화하는 방법

나는 코드가 모든 거미 일정을 여기

[scrapyd] 
http_port = 6800 
debug  = off 
#max_proc = 1 
eggs_dir = /var/lib/scrapyd/eggs 
dbs_dir = /var/lib/scrapyd/dbs 
items_dir = /var/lib/scrapyd/items 
logs_dir = /var/log/scrapyd 

설정 scrapyd 기본값을 사용하고 있습니다 :

url = 'http://localhost:6800/schedule.json' 
crawler = self.crawler_process.create_crawler() 
crawler.spiders.list() 
for s in crawler.spiders.list(): 
    values = {'project' : 'myproject', 'spider' : s} 
    data = urllib.urlencode(values) 
    req = urllib2.Request(url, data) 
    response = urllib2.urlopen(req) 

어떻게 200 개 + 거미를 처리 할 수 ​​scrapyd 설정을 최적화하기 위해?

감사

답변

2

내가 먼저 그 거미에 --profile 옵션 scrapy의 크롤링을 실행하려고 및 일반 scrapy에,해야 단지 파이프와 저장 데이터를 메모리의 대부분을 소요해야하는지 확인하기 위해 결과를 검토 것 데이터를 메모리에 축적하지 않습니다.

그렇지 않으면 4 개 프로세스를 실행 기본 scrapyd에, 그것은 다음과 같은 설정을 사용하여 조정할 수 있습니다 max_proc 시작됩니다 동시 Scrapy 프로세스의 최대 수

매개 변수. unset 또는 0 인 경우, max_proc_per_cpu 옵션의 값으로 다중화 된 시스템에서 사용 가능한 cpus 수를 사용합니다. 기본값은 0입니다.

max_proc_per_cpu cpu 당 시작할 최대 동시 처리 프로세스 수입니다. 기본값은 4입니다.