Сервер golang не отвечает при частых запросах к БД?

Есть функция для работы с БД

db := mysql.New("tcp", "", "127.0.0.1:3306", "root", "", "test")
    
        err := db.Connect()
        if err != nil {
            log.Println("Не удалось подключиться к базе данных")
        }
    
        rows, _, err := db.Query(Query,args...)
        if err != nil {
            log.Println("Не удалось выполнить запрос",Query,err)
        }
        
        return rows


Если идёт большое количество запросов-(на самом деле их можно 'наклацать' мышкой скажем со скоростью 10-15 в секунду) переходит в обработчик-'Не удалось подкл и выполнить запрос' и всё приложение висит около минуты.
После этого по непонятным причинам опять всё работает.
еррор написал read tcp 127.0.0.1:20673->127.0.0.1:3306: wsarecv: An established connection was aborted by the software in your host machine.
Подскажите пожалуйста- в чём тут дело и что можно сделать7
  • Вопрос задан
  • 608 просмотров
Пригласить эксперта
Ответы на вопрос 2
Вы подключаетесь к базе данных на каждый запрос, это совсем плохо.
Подключайтесь к базе данных один раз при старте приложения, а при обработке запроса используйте готовое подключение.
Ответ написан
uvelichitel
@uvelichitel Куратор тега Go
habrahabr.ru/users/uvelichitel
Попробуйте
db.SetMaxIdleConns(n int)
db.SetMaxOpenConns(n int)

для манипулирования доступным пулом соединений с DB
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы