찾다

 >  Q&A  >  본문

500 - nginx가 5xx 오류를 줄이는 방법

nginx 프런트엔드, 백엔드는 n개의 도커 컨테이너이고, 도커 컨테이너는 nginx+php-fpm입니다. 컨테이너가 실패하면 프런트엔드에 502 또는 504가 발생하는 것으로 알려져 있습니다. 오류가 발생하며 프런트엔드에서 가끔 네트워크 지연이 발생합니다

현재 관행과 문제점

nginx 프론트엔드는 tengine을 사용하고 상태 확인을 켭니다

  1. 간격이 3초로 설정되고 하강이 2라고 가정하면, 마지막 확인 직후 백엔드가 끊어지면, 즉 요청은 거의 6초 동안 결함이 있는 백엔드로 계속 전달됩니다

  2. 타임아웃이 1초로 설정되어 있다고 가정하면 프런트엔드 네트워크가 지연되면 모든 백엔드가 즉시 타임아웃되고 502가 사용자에게 직접 반환됩니다. 그러나 시간 초과 값을 늘리면 상태 확인이 별 의미가 없습니다. 일반적으로 백엔드는 50ms 이내에 응답하므로 더 이상 부하가 높은 백엔드를 필터링할 수 없습니다

백엔드 도커는 tengine을 사용하고 sysguard 모듈을 활성화합니다

  1. 위와 마찬가지로 간격 내에 중단되면 일부 요청이 여전히 백엔드에 도착합니다. 백엔드 로드가 임계값에서 자주 변동하는 경우 상태 확인 및 sysguard가 없는 것보다 5xx 오류가 더 많을 수 있습니다

해결책은 없을까요?

为情所困为情所困2781일 전735

모든 응답(2)나는 대답할 것이다

  • 漂亮男人

    漂亮男人2017-05-16 17:22:56

    프런트 엔드 애플리케이션 시나리오가 어떤지 모르겠습니다. 부하가 매우 높은 것 같습니다. 오류가 사용자에게 직접 노출될 가능성은 거의 없습니다. 나중에 이 심층 연구에서 우리는 문제의 근원을 찾아야 합니다

    .

    회신하다
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 17:22:56

    개인적으로는 이런 일이 불가피하다고 생각합니다. 프로그램을 최적화하거나 클러스터를 늘리면 여전히 오류가 발생합니다.
    Taobao도 시스템이 바쁜 경우가 많습니다. 아무 일도 일어나지 않으면 자체 서버를 제공합니다. 질문

    회신하다
    0
  • 취소회신하다