애플리케이션 시작 시 DB 시작 대기
이것은 ISUCON도 자주 하는 최적화로 시작할 때 DB에서 캐시된 데이터를 읽으면 재시작 테스트에서 fail의 주요 원인이 된다.
db.Open()
DB에 연결하지 않고 연결 풀을 초기화할 뿐 연결 오류가 발생하지 않지만 이러한 착각이 쉽게 발생하여 이 API의 결과err == nil
라면 연결할 수 있다 // db.Open() が成功した直後にこれを入れる.
for {
err := db.Ping()
if err == nil {
break
}
log.Print(err)
time.Sleep(time.Second * 2)
}
log.Print("DB ready!")
db.Ping()
는 1개의 연결을 만들고 드라이버가 대응할 때 이 DB를 핑한다.연결 오류가 발생하면 이 곳에서 검사할 수 있습니다.핑
_, err := db.Exec("SELECT COUNT(*) FROM table")
등에서 사용하는 테이블 대신 방문 확인 & 버퍼 등에 놓는 것도 고려할 수 있다.
Reference
이 문제에 관하여(애플리케이션 시작 시 DB 시작 대기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/methane/articles/020f037513cd6b701aee텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)