2013-05-14 4 views
2

내 앱이 유니콘과 함께 Heroku에서 실행되고 sucker_punch을 사용하여 웹 UI 속도를 저하시키지 않으면 서 백그라운드에서 소량의 이메일을 전송합니다. 이것은 몇 주 동안 꽤 잘 진행되어 왔습니다.Heroku, sucker_punch의 명백한 침묵 오류

유니콘 구성을 Heroku 권장 구성으로 변경했습니다. 권장 설정 에는 유니콘 프로세스 수에 대한 옵션이 포함되어 있으며 프로세스 수를 2에서 3으로 올렸습니다.

분명히 너무 많았습니다. sucker_punch 작업이 실행을 중지했습니다. 대기열에있는 시간을 나타내는 로그 메시지가 있으며 처리를 시작할 때이를 나타내는 메시지가 있습니다. 로그에 대기중인 메시지가 표시되지만 처리가 시작되지 않습니다.

나의 이론은 내가 2 유니콘에서 3 유니콘으로 이동하여 메모리를 초과했다는 것입니다.

어디에서나 문제를 나타내는 메시지를 찾지 못했습니다.

Q1 : 어딘가에서 실패 메시지를 찾을 것으로 예상해야합니까? "sucker_punch를 시작하려고합니다 - 웁스, 충분한 메모리가 아닙니다"와 같은 것이 있습니까?

질문 2 : 향후 이와 같은 실패를 어떻게 알릴 수 있는지에 대한 제안.

감사합니다.

답변

1

실제로 dyno 메모리를 초과하는 경우 로그에서 R14 또는 R15 오류를 찾아야합니다. https://devcenter.heroku.com/articles/error-codes#r14-memory-quota-exceeded

이 오류를 발견하지 못 했으므로 더 많은 문제가있을 수 있습니다. 즉, 흡입기 펀치 작업자의 방법 중 예외가 발생했습니다. 나는 빌어 먹을 펀치 작업이 lib가 모든 예외를 자동으로 삼킨다는 것을 나타 내기 때문에 디버깅하는 데 어려움이 있음을 발견했습니다. 작업을 인스턴스화하고 레일 콘솔에서 작업을 수행하여 예상대로 작동하는지 확인하십시오.

task = YourTask.new 
task.perform :something, 55 
:

것은 예를 들어, 당신은 예외없이이 작업을 수행 할 수 있어야한다