갑자기 서버에 접속할수가 없다.
모니터링 툴을 확인해 봤는데 백엔드 서버쪽은 정상적으로 돌아가고 있었다. 그래서 로그를 확인해 보았다.
deploy-client-1 | ApolloError: request to https://nullpointerexception.ml/graphql failed, reason: getaddrinfo EAI_AGAIN nullpointerexception.ml
deploy-client-1 | at new ApolloError (/app/frontend/node_modules/@apollo/client/errors/errors.cjs.js:34:28)
deploy-client-1 | at /app/frontend/node_modules/@apollo/client/core/core.cjs.js:1591:19
deploy-client-1 | at both (/app/frontend/node_modules/@apollo/client/utilities/utilities.cjs.js:981:53)
deploy-client-1 | at /app/frontend/node_modules/@apollo/client/utilities/utilities.cjs.js:974:72
deploy-client-1 | at new Promise (<anonymous>)
deploy-client-1 | at Object.then (/app/frontend/node_modules/@apollo/client/utilities/utilities.cjs.js:974:24)
deploy-client-1 | at Object.error (/app/frontend/node_modules/@apollo/client/utilities/utilities.cjs.js:982:49)
deploy-client-1 | at notifySubscription (/app/frontend/node_modules/zen-observable/lib/Observable.js:140:18)
deploy-client-1 | at onNotify (/app/frontend/node_modules/zen-observable/lib/Observable.js:179:3)
deploy-client-1 | at SubscriptionObserver.error (/app/frontend/node_modules/zen-observable/lib/Observable.js:240:7) {
deploy-client-1 | graphQLErrors: [],
deploy-client-1 | clientErrors: [],
deploy-client-1 | networkError: FetchError: request to https://nullpointerexception.ml/graphql failed, reason: getaddrinfo EAI_AGAIN nullpointerexception.ml
deploy-client-1 | at ClientRequest.<anonymous> (/app/frontend/node_modules/node-fetch/lib/index.js:1461:11)
deploy-client-1 | at ClientRequest.emit (events.js:400:28)
deploy-client-1 | at TLSSocket.socketErrorListener (_http_client.js:475:9)
deploy-client-1 | at TLSSocket.emit (events.js:400:28)
deploy-client-1 | at emitErrorNT (internal/streams/destroy.js:106:8)
deploy-client-1 | at emitErrorCloseNT (internal/streams/destroy.js:74:3)
deploy-client-1 | at processTicksAndRejections (internal/process/task_queues.js:82:21) {
deploy-client-1 | type: 'system',
deploy-client-1 | errno: 'EAI_AGAIN',
deploy-client-1 | code: 'EAI_AGAIN'
deploy-client-1 | },
deploy-client-1 | extraInfo: undefined
deploy-client-1 | }
프론트서버에서 찍힌 로그인데, 페이지에 접속하려고 할때마다 EAI_AGAIN 에러가 뜨면서 Fetch 조차 되지 않는다...
오늘 거의 9시간동안 구글링하고 원인을 찾아봤는데, 원인을 알 수가 없다.. DNS 관련 문제라고 하는데, 그렇다면 어제까지는 잘 되던게 설명이 되지 않는다. 바꾼게 하나도 없는데 작동을 안하니 원인을 찾기가 너무 힘들다.
로컬에서는 도커 빌드 후 실행하면 아주 잘 돌아가는데, ncloud 인스턴스에 배포된 완전히 동일한 코드가 돌아가지를 않는다.
혹시나 해서 프론트서버만 도커 바깥에서 직접 돌렸더니 또다른 에러가 뜬다.
ApolloError: request to https://nullpointerexception.ml/graphql failed, reason: getaddrinfo ENOTFOUND nullpointerexception.ml
at new ApolloError (/root/deploy/frontend/node_modules/@apollo/client/errors/errors.cjs:34:28)
at /root/deploy/frontend/node_modules/@apollo/client/core/core.cjs:1595:19
at both (/root/deploy/frontend/node_modules/@apollo/client/utilities/utilities.cjs:986:53)
at /root/deploy/frontend/node_modules/@apollo/client/utilities/utilities.cjs:979:72
at new Promise (<anonymous>)
at Object.then (/root/deploy/frontend/node_modules/@apollo/client/utilities/utilities.cjs:979:24)
at Object.error (/root/deploy/frontend/node_modules/@apollo/client/utilities/utilities.cjs:987:49)
at notifySubscription (/root/deploy/frontend/node_modules/zen-observable/lib/Observable.js:140:18)
at onNotify (/root/deploy/frontend/node_modules/zen-observable/lib/Observable.js:179:3)
at SubscriptionObserver.error (/root/deploy/frontend/node_modules/zen-observable/lib/Observable.js:240:7) {
graphQLErrors: [],
clientErrors: [],
networkError: FetchError: request to https://nullpointerexception.ml/graphql failed, reason: getaddrinfo ENOTFOUND nullpointerexception.ml
at ClientRequest.<anonymous> (/root/deploy/frontend/node_modules/node-fetch/lib/index.js:1461:11)
at ClientRequest.emit (events.js:315:20)
at TLSSocket.socketErrorListener (_http_client.js:469:9)
at TLSSocket.emit (events.js:315:20)
at emitErrorNT (internal/streams/destroy.js:106:8)
at emitErrorCloseNT (internal/streams/destroy.js:74:3)
at processTicksAndRejections (internal/process/task_queues.js:80:21) {
type: 'system',
errno: 'ENOTFOUND',
code: 'ENOTFOUND'
},
extraInfo: undefined
}
이번에는 ENOTFOUND 에러가 뜬다.
공통적인점은 둘 다 에러가 node-fetch 모듈에서 발생한다는 점이다.. 네트워크에 문제가 있나 싶어 방화벽 리셋도 해보고 /etc/hosts 파일도 확인하고 정말 별의별짓을 다했는데 이유를 모르겠다.
일단은 접속만 되도록 env 파일에 도메인 대신 ip를 직접 넣어놓았다. 이렇게 하니까 접속은 되는데 일부 쿼리가 작동을 안해서 검색 필터링 기능과 로그인, 검색 필터링이 제대로 동작하지를 않는다..
정말 해결책을 모르겠다. 오늘은 벌써 해가 뜨고 있어서 잠을 좀 자고 다시 해결책을 찾아야겠다.
오늘 도커를 내렸다가 올렸는데.. 갑자기 또 된다.
일단 어제 ip 를 임시로 env 에 넣어놓았을때 다른 요청이 안되었던 건 초기 페이지 로드는 https 로 요청하는데 이후에 graphql 쿼리를 날릴떄 http 로 날려서 blocked 된 것이 원인이었다. 그래서 이는 다시 https 로 바꾸는 것으로 해결되었다.
그런데 이거 말고는 바꾼데 전혀 없는데(즉 처음 에러가 발생했을때와 완전히 동일한 상황), 이번에는 또 작동이 잘 된다.
그레서 결론은 ncloud DNS 서버의 일시적인 문제였던 것 같다. 이에 관해서 ncloud에 문의를 남겼다. 확실하게 원인을 파악해야겠다.
'Study' 카테고리의 다른 글
좋은 객체지향의 다섯 가지 원칙, SOLID (0) | 2022.01.06 |
---|---|
함수형 프로그래밍(Functional Programming) (0) | 2021.12.28 |
AWS RDS 환경 구성하기 + 인텔리제이 플러그인 설치 (1) | 2021.01.01 |
AWS EC2 프리티어로 인스턴스 생성하기 (0) | 2020.12.31 |
[JDBC+MYSQL]MYSQL설치부터 IntelliJ 연동까지 (1) | 2020.11.25 |
댓글