2016-08-17 2 views
0

Nokogiri 및 Httparty를 사용하여 XML의 링크에서 내용을 구문 분석해야하는 3MB XML 파일을 구문 분석해야합니다.Ruby에서 거대한 XML 구문 분석이 서버의 전체 파일을 처리하지 않습니다.

내 Windows 7 PC에서는 잘 작동하지만 VPS에서 동일한 스크립트를 실행하면 문제가 완전히 해결되지 않습니다.

서버의 Ruby 스크립트의 최대 실행 시간이 제한 되었기 때문입니까? 그렇다면 어떻게 우분투에서 그것을 늘릴 수 있습니까?

+0

3Mb는 그렇게 큰 소리가 아닙니다. 어떻게 실패합니까? –

+0

@FrederickCheung XML 파일에는 3000 개가 넘는 레코드가 있지만 데이터베이스에 저장된 레코드 중 27 개 레코드 만 저장할 수 있습니다. 단, 반환되는 오류의 절반이 훨씬 더 저장되어야합니다. 각 레코드에 대해 아마존 제품 광고 api라고 부릅니다. 어쩌면 API 제한이 이유 일 수는 있지만 확실하지는 않습니다. –

+1

3MB가 크지 않습니다. 3GB는 클 것입니다. 코드가 없으면 진행 상황을 알기가 정말로 어렵습니다. 문제가 발생하지만 Windows에서 작동하는 VPS에 있기 때문에 질문은 Ruby 나 Nokogiri와 유사하지만 시스템에 연결되어 소리가 많이납니다. 그것은 스택 오버플로에 대한 오프 주제입니다. [su]가 더 나은 선택 일 수 있습니다. –

답변

2

아무도 로그가없는 이유를 정확하게 알려줍니다. 그들을 둘러 보셨습니까?

VPS와 xml에 관한 한 - 서버에서 사용할 수있는 최대 메모리를 초과 할 수 있습니다 (클라이언트가 여러 개인 경우 xml이 모두로드되는 경우 빠르게 발생합니다). Nokogiri를 어떻게 사용하고 있는지 모르겠지만 SAX 파서를 사용하고 있는지 확인하는 것이 좋습니다 (http://www.rubydoc.info/github/sparklemotion/nokogiri/Nokogiri/XML/SAX/Parser)

결국 적은 리소스 (메모리, 실행 시간)를 사용하지만 단점이 있습니다 - SAX 파서는 특히 XML 구조가 복잡 할 때 작성하기가 훨씬 어렵지만 wort 일 수 있습니다. (벤치 마크 "Nokogiri DOM vs SAX")

+0

. 나는 동의한다. 그러나 관리자 만이 스크립트를 하루에 한 번 실행하는 사람이다. 파싱에 Ox이라는 또 다른 보석을 사용해 보았지만 사용하기가 조금 더 어려워 보였으므로 결국 Nokogiri와 함께갔습니다. 어디에서 로그 파일을 확인해야합니까? 우분투에 저장되어있는 곳을 지적 해 주시겠습니까? (저는 리눅스가 처음이고 창을 주로 사용합니다)? 이것은 서버와 관련이 없으며 그렇지 않으면 서버 로그를 검사 할 수 있습니다. –

+1

그래도 어쨌든 로그에 액세스해야합니다. 그렇지 않으면 언젠가는 문제가 발생하지 않고 문제를 해결할 수 없습니다. 그들에게 접근 할 수 없다하더라도 그가 컴퓨터에 동기화 할 수 있는지 물어봐야합니다. – djaszczurowski

+0

실제로 내가 직접 만들었습니다 :)하지만 우분투와 리눅스에 익숙하지 않지만 서버에서 사용해야했습니다. . 감사를 위해 로그를 설정하려고합니다. –