2013-08-09 5 views
0

현재 이상한 문제가 발생하고 있습니다. 매번 완료 될 때까지 실행되지 않는 커다란 스크립트를 만들었습니다.Cronjob이 완료되지 않음

정교화하기 위해 스크립트는 데이터베이스에 대한 많은 쿼리를 실행하고 API는 내 웹 사이트의 데이터를 업데이트합니다. 그것은 지금 몇 주 동안 실행되어 왔지만 그 전에 스크립트를 작성할 때 스크립트가 여러 번 (보통 2 번) 연속으로 실행되면 실행이 중지됩니다.

문제는별로 일관성이 없지만 내 웹 사이트의 중요한 부분이며 모든 것을 계속 실행하기 위해 특정 시간에 매일 한 번씩 실행해야합니다.

스크립트 자체가 문제가 아니어야합니다. 처음에는 시간 제한을받는 문제를 해결해야했습니다. 타임 아웃은 스크립트가 완료되는 데 최대 1 시간이 걸리기 때문에 큰 문제입니다.

내가 확인했습니다 무엇 :

- 내 cronjob를 방해 어떤 cronjobs가 있습니까? * 내가 볼 수있는 한 멀지 않았다. 표준 유지 관리 cron이 많이 실행되고 있지만 문제가 발생하지 않아야합니다. 우리가 만든 다른 cronjobs 문제가 cronjob 동안 실행되지 않습니다.

- 충분한 메모리가 남아 있습니까? * 거의 너무 많습니다.

- 스크립트가 제대로 작동합니까? 문제가 발생한 원인 일 수 있습니까? * 가능할 수 있지만 어떻게 표시되지 않습니까? 수동으로 스크립트를 수 백만 번 확인했습니다.

- 로그를 켰습니까? *이 메시지는 좋은 생각 일지 모르지만 어떤 로그를 켜야할지 모르겠습니다. 또한 과거에는 오류보고 문제가 있었기 때문에 내가 켜면 아무것도 잡을 수 없습니다. 내가 실행 해요 무엇

: - 피니셔로 턴키 리눅스

이 스크립트는 완료 시간 정도 소요가 결코 같은 코드를 중지하지 AFAIK, 디버그 어렵다.

tl; dr : 잠시 동안 임의로 충돌 한 다음 오랜 시간 동안 충돌을 멈추는 cronjob을 어떻게 디버그해야합니까?

편집 는 신속한 응답 @Basile Starynkevitch 주셔서 감사합니다 : 우리는 시도하지만 오류가 발생하지 않는, 그냥 중지합니다. 스크립트에서 스크립트를 일으킬만한 것은 없습니다.

제가 생각하기에 스크립트의 관련 부분을 보여줄 수 없습니다. 너무 큽니다. 그러나 모든 것이 내려지는 것은 많은 쿼리와 데이터 처리입니다.

@fedorqui : CD의/var/www /에서 cronjobs/& &이는/usr/빈/php에 -q -f sc_distri_cronjob.php 그것은 테스트 목적으로 공용 폴더에 있지만 나는 그것이 무엇을 가지고 생각하지 않는다 내 문제와 관련이있다. 스크립트가 오랜 시간 동안 성공적으로 실행되기 때문에 사용 권한이 괜찮습니까?

@Flosculus : 우리는 제자리에 자물쇠가 있습니다. 이것이 우리의 관심을 끌었습니다. "괜찮습니다"한 번 실행 한 다음 다시 실행하면 파일이 계속 실행 중이더라도 잠겨 있음을 알 수 있습니다. 잠금 장치는 끝에서 해제되며 오류가 없으므로 스크립트에서 아무 것도 의도적으로 실행을 멈출 수 없습니다.

+0

'#!/bin/sh -vx'를 스크립트 시작 부분에 넣으십시오. crontab 항목에서 * stderr * 및 * stdout * 출력을 리디렉션합니다. 또한 내부에서'logger'를 사용하여 중요한 지점에서 메시지를 제공하십시오. –

+1

기본 질문 : 스크립트가 독립 실행 형입니까? 당신의 crontab 라인은 무엇입니까? 파일에 실행 권한이 있습니까? 이 사용자는 crontab을 실행할 수 있습니까? – fedorqui

+0

스크립트의 관련 부분과 crontab 입력 줄을 표시하십시오. –

답변

1

스크립트가 매우 크기 때문에 php.ini의 max_execution_time보다 오래 실행될 수 있습니다.
충분한 시간을두고 set_time_limit()의 사용을 시도하십시오.
스크립트가 평균적으로 실행되는 시간을 추적하고 통화를 조정할 수도 있습니다.

+0

테스트가 8 시간으로 설정되었으므로 문제가 계속 발생합니다. – Nick

+0

그러면 해결할 수있는 유일한 기회는 기록입니다. @Basile Starynkevitch의 접근 방식은 이것에 정말 좋습니다. – peipst9lker

+0

좋아, 고마워, 우리는 아마 대답을 찾았지만 우리는 월요일까지 기다려야 할 것이다. – Nick

관련 문제