2013-03-12 2 views
0

대규모 점검을 거친 상당히 큰 응용 프로그램이 있습니다.AppEngine에서 임의 500 개의 오류가 발생했습니다.

최신 버전은 많은 JSONP 호출을 사용하며 500 개의 서버 오류가 있음을 알았습니다. 로그 섹션에 아무 것도 기록되지 않아서 오류의 원인을 판별 할 수 없습니다. 그것은 JS, png, 저지 (서블릿)에서도 발생합니다.

SO 및 그룹을 검색하면 이러한 오류가 배포 중에 일반적으로 발생한다고 제안됩니다. 그러나 배포 후 몇 시간이 지나면 문제가 발생합니다.

현재로서는 응용 프로그램이 약간 커지고 드문 경우는 드물지만 거의 시작하지 않는 경우에도 최종 기한 예외가 발생합니다. 경우에 따라 &이 6 ~ 10 초 내에 게재됩니다. 때로는 75 초 이상으로 이동하여 유사한 요청에 대한 시간 초과가 발생합니다. 예열 요청에 대해서도 동일한 문제가 발생합니다. 앱 예열 중에는 사용자 정의가로드되지 않습니다.

+0

자세한 내용은 여기에 도움이 될 것입니다. 로그에서 발췌 문장은 어때요? 또는 적어도 500 개의 오류가 있다고 판단하는 방법을 알려주십시오. GAE 대시 보드에서보고 있습니까? [AppStats] (https://developers.google.com/appengine/docs/python/tools/appstats)가 켜져 있습니까? 그것은 느린 것을 보는 것을 도울 것입니다. –

+0

브라우저에 500 개의 오류가 표시됩니다. 문제는 임의적이며 로그에 나타나지 않는다는 것입니다.프로덕션 앱이므로 appstats가 켜지지 않았습니다. 저지는 공급자를 검색하고 속도가 느립니다. 그러나 그것은 다른 질문입니다. – cloudpre

+0

다른 질문과 어떤 관련이 있습니까? http://stackoverflow.com/questions/15297961/tweak-loading-times-of-jersey-over-appengine –

답변

0

로그에 오류가 표시되어야합니다. 할당량을 초과했거나 최종 기한 오류가 있습니까? 아마도 파일을 찾을 수 없거나 오류 처리기의 경로가 다른 정적 파일 경로와 겹치는 것처럼 오류 처리기에 오류가 있습니까?

문제를 해결하기 위해 실제 오류 코드를 확인할 수 있도록 custom error pages을 구현했습니다. 나는 당신이 사용하는 언어를 결코 지정하지 않았기 때문에 파이썬을 추측하고있다. 당신의 app.yaml에 다음을 추가하고받는 사람에게 결과와 함께 다시보고 그 다음에 가서 무슨 몇 가지 아이디어를 줄 것이다 정적 HTML 페이지 생성 : 당신의 일부를 제공 할 수

error_handlers: 
    - file: default_error.html 
    - error_code: over_quota 
    file: over_quota.html 
    - error_code: dos_api_denial 
    file: dos_api_denial.html 
    - error_code: timeout 
    file: timeout.html

을 이미 사용자 지정 오류 처리기가있는 경우 귀하 app.yaml 도와 드리겠습니다.

+0

그게 문제 야. 로그에 나타나지 않습니다. 할당량을 초과하지는 않습니다 (앱은 100 달러/일로 설정되며 75-80 % 만 사용합니다). 마감 시간 오류. 우리가 저지를 사용하기 때문에 잠시 후에 얻습니다. 파일이 있다는 것을 알고 있기 때문에 404 오류 때문이 아닙니다. 그리고 그것은 무작위로 발생합니다. 때로는 정적 파일도 있습니다. 우리가 알 수 있도록 몇 가지 오류 처리기를 배치 할 것입니다. – cloudpre

0

일부 응용 프로그램 로그에는 500 개가 기록되지 않습니다. GAE의 프론트 엔드에서의 실패입니다. 어떤 이유로 든 요청이 급증하여 애플리케이션의 새 인스턴스가 해당 요청을 처리하기에 충분히 빨리 시작할 수없는 경우 클라이언트가 애플리케이션 로그에 나타나지 않더라도 500 초를 볼 수 있습니다. GAE 팀은 프런트 엔드 로그에 대한 가시성을 제공하기 위해 노력하고 있습니다.

+0

프런트 엔드가 정적 파일을 캐싱한다고 생각했습니다. 요청이 이미 제공중인 인스턴스로 리디렉션되지 않고 워밍업이 새 인스턴스로 전송되지 않는 이유는 무엇입니까? – cloudpre

+0

예, GAE는 이미 실행중인 인스턴스에 요청을 보내려고합니다. 그리고 실행중인 인스턴스가 처리 할 수있는 것보다 많은 요청을 보게되면 새로운 인스턴스가 시작됩니다. 로그되지 않은 500 개의 오류는 요청의 스파이크가 새 인스턴스를 스핀 업할 수있는 속도를 초과 할 때 발생할 수 있습니다. 따라서이 문제가 자주 발생하는 경우 스파이크를 흡수 할 수있는 예약 인스턴스를 추가 할 수 있습니다. –

+0

carter - 앱용으로 예약 된 6 개 이상의 F4 (~ 4xF1) 인스턴스가 있습니다. 문제는 무작위로 실패한다는 것입니다. – cloudpre

0

나는 이걸 보았다. 나는 그래픽 파일의 절반 만 페이지에로드하는 방문자 로그를 조사하고 있었다. 나는 그들이 우리 사이트에 도착했던 blog 위에서 같은 링크를 클릭하려고 노력했다. 필자의 경우 크롬 브라우저 개발자 콘솔에서 js 파일에 대해 500 오류가 발생했습니다. 그러나 GAE 로그를 보면 파일이 200 상태로 올바르게 제공되었다고 기록되어 있습니다. 그 js 파일은 그렇지 않은 다른 이미지를로드합니다. 제 경우에는 https 요청이었습니다.

고객의 경험을 분명히 아는 것이 중요합니다. 이 문제가 아직 발생하고 있음을 알려드립니다. 로그에 표시하는 것만으로도 좋을 것입니다. 예를 들어 워밍업 오류를 첨부하여 복잡한 서버 시스템의 피할 수없는 인공물이라는 것을 알 수 있습니다 (완전히 이해할 수 있음). 인스턴스를 추가해야하는지 아니면 다른 것을 추가해야 하는지를 알아야합니다. 이 오류는 60 초, 아마도 5 초에서 10 초 동안 기다리지 않았습니다. 중간에 SSL 핸드 셰이 킹에 실패한 왕복과 같지만 로그에 성공으로 표시됩니다.

핸드 쉐이크 시간 초과를 늘리거나 브라우저 측에서 종료 할 수 있습니까?

+0

이것은 질문에 대답하지 않습니다. 질문을 다른 질문에 대한 답변으로 게시하지 마십시오. – Kmeixner

관련 문제