Przejdź do database/sql
nie uniemożliwia tworzenia nieskończonej liczby połączeń z bazą danych. Jeśli w puli jest bezczynne połączenie, zostanie ono użyte, w przeciwnym razie zostanie utworzone nowe połączenie.
Tak więc pod obciążeniem programy obsługi żądań sql.DB prawdopodobnie nie znajdują żadnych bezczynnych połączeń, więc w razie potrzeby tworzone jest nowe połączenie. Powoduje to odejście nieco — ponowne używanie bezczynnych połączeń, gdy jest to możliwe, i tworzenie nowych, gdy jest to konieczne — ostatecznie osiągając maksymalną liczbę połączeń dla DB. I niestety w Go 1.1 nie ma wygodnego sposobu (np. SetMaxOpenConns ), aby ograniczyć otwarte połączenia.
Uaktualnij do nowszej wersji Golanga. W Przejdź do wersji 1.2+ otrzymasz SetMaxOpenConns . I sprawdź dokumentację MySql, aby rozpocząć konfigurację a następnie dostroić.
db.SetMaxOpenConns(100) //tune this
Jeśli musisz użyć Go 1.1, musisz upewnić się w swoim kodzie, że *sql.DB
jest używane tylko przez N klientów naraz.