GCE에서 Cloud NAT를 통한 SocketTimeoutException
이 기사 개요
하기 기사에서 구축한 어플리케이션의 운용중에 발생한 장해와 그 대응에 대해 기술합니다.
htps : // 이 m / 이세이_0403 / ms / 아 69f42c85fb81에 1에 fc62
구성
외부 API 연결 시 IP 제한이 걸려 CloudNAT에서 출구 IP를 고정하면서 외부 API에 연결합니다.
외부 API는 초당 요청 수에 제한이 있습니다.
장애 내용
allocation_status가 "dropped"입니다.
(어쩌면 1주일 전까지 아무 일도 없이 놀고 있었는데 어째서 갑자기 움직이지 않게 된거야😡)
시도한 것
1. 응용 프로그램에서 사용하는 OkHttp의 시간 초과 시간을 길게합니다.
※아래 기사 참조
htps : // 이 m/이세이_0403/있어 ms/716fc73아 fb86142d4933
1. 결과
Cloud NAT의 allocation_status가 "dropped"가 되는 문제는 해소.
하지만 외부 API에 대한 요청 수가 너무 많아서 화가납니다 😅
2. 요청을 던지기 전에 sleep 해보십시오.
// もろもろ省略
import java.util.concurrent.TimeUnit;
TimeUnit.MILLISECONDS.sleep(200);
2. 결과
요청 제한 이하로 했으므로 무사히 해소.
계속 (2019/08/22)
40요청 정도 심판했는데, 갑자기 2분 이상 기다리는 이벤트가 발생해 다시 Timeout이 발생했습니다.
자동으로 스케일링하는 것이었습니다만, GCE상의 애플리케이션(이번은 배치 처리)을 Cloud NAT를 경유시키면 극단적으로 긴 대기가 갑자기 발생해 잘 움직이지 않는 것이 있는 것 같습니다.
GCE에 고정 IP를 할당하고 Cloud NAT를 거치지 않기로 결정했습니다.
결과 Cloud NAT를 경유시켰을 때와 비교가 되지 않는 레벨에서 폭속으로 움직였습니다.
Reference
이 문제에 관하여(GCE에서 Cloud NAT를 통한 SocketTimeoutException), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nobi_tum/items/6bd48fb31a1e295df7ad텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)