배워서 남주는 개발자 :)

Web

Error: connect ETIMEDOUT 에러

핏짜보이 2022. 6. 2. 15:22
반응형

에러코드 그대로 연결이 timeout 되었다는 말인데,

이 에러는 주로 서버와 연결을 시도할 때 제한시간 안에 연결이 진행되지 않으면 나오는 에러다.

 

1. 서버의 정보를 잘못 기입한 경우

대부분은 이 경우에 해당할 것이다. DB와 연결하는 경우 host, name, password, port number 같은 정보를 잘못 입력하면 해당 서버와 연결이 되지 않기 때문에 ETIMEDOUT 에러가 생길 수 있다. 이 경우에는 간단히 본인이 입력한 정보를 다시 확인함으로써 에러를 해결할 수 있다. MySQL 같은 경우 3306번 포트와 연결을 시도했는지 확인해주는 것이 좋다. 

 

추가적으로 연결하려는 서버가 방화벽에 의해 블락이 되는 경우도 에러가 나오기 때문에 이 경우도 확인해주는 것이 좋다.

 

2. 권한이 없는 경우

만일 내가 서버의 정보를 제대로 기입하였더라도 그 서버에 접근할 권한이 존재하지 않으면 애플리케이션과 서버가 연결될 수 없다. 나 같은 경우도 이 케이스였는데 주소는 제대로 입력했지만 원격 DB에서 내 IP에 권한을 부여해주지 않았기 때문에 서버에 연결할 수 없었다.

 

이런 경우는 서버에서 내 IP를 허용하였는지 혹은 내 계정이 내가 수행하고 싶은 작업의 권한을 가지고 있는지 확인해보면 된다.

 

3. 요청 시간이 부족한 경우

보통의 경우 기본으로 세팅된 제한시간 안에 거의 모든 연결이 이루어지지만 가끔 그 이외의 시간을 필요로 할 때도 있다. 그런 경우 애플리케이션 자체에서 제한시간을 유동적으로 설정할 수 있는데 Sequelize 같은 경우는 아래와 같이 수정할 수 있다.

 

const sequelize = new Sequelize(database, username, password, {
    host: "host",
    user: "user",
    password: "password",
    dialect: "mysql",
    dialectOptions: {
      options: {
        requestTimeout: 3000
      }
    }
  });

Sequelize 객체를 생성할 때 dialectOptions의 requestTimeout 옵션을 통해서 sequelize 자체의 timeout 시간을 다르게 설정할 수 있다.

 

728x90