Mysql: Блишком много соСдинСний

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 23 июл. 2013  Β·  9ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: go-sql-driver/mysql

ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ db.sqlDB.Query () появляСтся сообщСниС ΠΎΠ± ошибкС «Блишком ΠΌΠ½ΠΎΠ³ΠΎ соСдинСний». ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ я ΡƒΠ³Π»ΡƒΠ±Π»ΡŽΡΡŒ Π² эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΌΠ½Π΅ интСрСсно, Π΅ΡΡ‚ΡŒ Π»ΠΈ извСстная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°.

ΠœΡ‹ΡΠ»ΠΈ?

013/07/23 03:05:35 yy.UpdateThingy () db.go: 264 [НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ запись Π² XXXX: Ошибка 1040: Блишком ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ]

Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ 1.1.1:
go вСрсия go1.1.1 linux / 386

Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° mysql:
v1.0.1

ВСрсия MySql:
ВСрсия сСрвСра: 5.5.22-0ubuntu1 (Ubuntu)

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΌΠΎΠΈΡ… запросов:
строки, err =
db.sqlDB.Query ("Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² XXXX (yyyy) Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (?)",
connect.ZZZZ)
if err! = nil {
_ = rows.Close ();
Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ошибка
}
_ = rows.Close ();

Π― Π΄ΠΎΠ±Π°Π²ΠΈΠ» rows.Close (), надСясь, Ρ‡Ρ‚ΠΎ это Ρ€Π΅ΡˆΠΈΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Π½ΠΎ Π±Π΅Π· ΠΊΡƒΠ±ΠΈΠΊΠΎΠ².

К Π²Π°ΡˆΠ΅ΠΌΡƒ свСдСнию, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΠΌΠΎΠΈΡ… запросов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ "rows.Scan", Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅Ρ‚.

question working as intended

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 1. Блишком высокая ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°

Π£ вас слишком ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ этом случаС Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ количСство ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, ΠΏΠΎΠΊΠ° ΠΏΠ°ΠΊΠ΅Ρ‚ database / sql Π½Π΅ прСдоставит для этого ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΉ вСрсии. Но Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ / асинхронныС обновлСния Π±Ρ‹Π»ΠΈ Π±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ΠΉ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΠΉ.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 2: Π½Π΅Π³Π΅Ρ€ΠΌΠ΅Ρ‚ΠΈΡ‡Π½Ρ‹Π΅ соСдинСния

Π‘ΠΊΠΎΡ€Π΅Π΅ всСго, ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° просто тСряСт соСдинСния с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ происходит, Ссли Π²Ρ‹ Π½Π΅ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚Π΅ rows Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ db.Query ΠΈΠ»ΠΈ Π·Π°Π±Ρ‹Π»ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ (Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… / sql tx api ).

Мой ΠΎΠ±Ρ‰ΠΈΠΉ совСт - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

  • db.Exec Ссли Π²Ρ‹ Π½Π΅ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠΉ строки (Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Π²Ρ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Scan ). ПослС ΠΊΠ°Π·Π½ΠΈ соСдинСниС сразу ΠΆΠ΅ становится свободным.
  • db.QueryRow Ссли Π²Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅ ΠΎΠ΄Π½Ρƒ строку. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ†Π΅ΠΏΠ½ΠΎΠΉ синтаксис , Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡ‚Π΅Ρ‡ΡŒ соСдинСния
  • db.Query Ссли Π²Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅ нСсколько строк. ΠžΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ «освободили» соСдинСниС, ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π² всС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹Π΅ строки (Ρ†ΠΈΠΊΠ» rows.Next ) ΠΈΠ»ΠΈ Π²Ρ‹Π·Π²Π°Π² rows.Close . ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ ΠΎΡ‚Π»ΠΎΠΆΠΈΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² rows.Close . НС Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΠΈ Ρ‚. Π”.

ВсС 9 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

ВзглянитС сюда: https://github.com/VividCortex/go-database-sql-tutorial

НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ .Query, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ .Exec.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 1. Блишком высокая ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°

Π£ вас слишком ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ этом случаС Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ количСство ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, ΠΏΠΎΠΊΠ° ΠΏΠ°ΠΊΠ΅Ρ‚ database / sql Π½Π΅ прСдоставит для этого ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΉ вСрсии. Но Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ / асинхронныС обновлСния Π±Ρ‹Π»ΠΈ Π±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ΠΉ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΠΉ.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 2: Π½Π΅Π³Π΅Ρ€ΠΌΠ΅Ρ‚ΠΈΡ‡Π½Ρ‹Π΅ соСдинСния

Π‘ΠΊΠΎΡ€Π΅Π΅ всСго, ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° просто тСряСт соСдинСния с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ происходит, Ссли Π²Ρ‹ Π½Π΅ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚Π΅ rows Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ db.Query ΠΈΠ»ΠΈ Π·Π°Π±Ρ‹Π»ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ (Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… / sql tx api ).

Мой ΠΎΠ±Ρ‰ΠΈΠΉ совСт - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

  • db.Exec Ссли Π²Ρ‹ Π½Π΅ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠΉ строки (Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Π²Ρ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Scan ). ПослС ΠΊΠ°Π·Π½ΠΈ соСдинСниС сразу ΠΆΠ΅ становится свободным.
  • db.QueryRow Ссли Π²Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅ ΠΎΠ΄Π½Ρƒ строку. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ†Π΅ΠΏΠ½ΠΎΠΉ синтаксис , Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡ‚Π΅Ρ‡ΡŒ соСдинСния
  • db.Query Ссли Π²Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅ нСсколько строк. ΠžΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ «освободили» соСдинСниС, ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π² всС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹Π΅ строки (Ρ†ΠΈΠΊΠ» rows.Next ) ΠΈΠ»ΠΈ Π²Ρ‹Π·Π²Π°Π² rows.Close . ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ ΠΎΡ‚Π»ΠΎΠΆΠΈΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² rows.Close . НС Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΠΈ Ρ‚. Π”.

Π― ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» "db.Query ()" Π½Π° "db.Prepare () ΠΈ db.Exec ()", ΠΈ это устранило мою ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. Бпасибо Π·Π° быстрыС ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹.

Π― Ρ‚ΠΎΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» это.
ΠΈ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ "db.Prepare () ΠΈ db.Exec ()",

var db * sql.DB

func getdb () * sql.DB {
db, err = sql.Open ("mysql", connArgs)
db.SetMaxIdleConns (100)
Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ db
}

func foo (db * sql.DB) {
ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ .....
smint, err: = db.Prepare (....)
ΠΎΡ‚Π»ΠΎΠΆΠΈΡ‚ΡŒ smint.Close ()
smint.Exec (....)
}

func main () {
go func () {
db = get_db ()
ΠΎΡ‚Π»ΠΎΠΆΠΈΡ‚ΡŒ db.Close ()
foo (db)
} ()
}

ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΏΠΎΠΉΡ‚ΠΈ 1.3
----- Π˜ΡΡ…ΠΎΠ΄Π½ΠΎΠ΅ сообщСниС -----
ΠžΡ‚: liutaihua [email protected]
ΠŸΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŒ: go-sql-driver / mysql [email protected]
ВСма: Re: [mysql] Блишком много соСдинСний (# 111)
Π”Π°Ρ‚Π°: 15:43, 16 июля 2014 Π³.

ΠΈ ... ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Ρ‹ запускаСтС Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρƒ Π² основном?
Если ваш ΠΊΠΎΠ΄ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ выглядит Ρ‚Π°ΠΊ, main ΠΌΠΎΠΆΠ΅Ρ‚ (ΠΈ, вСроятно, Π±ΡƒΠ΄Π΅Ρ‚) Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒΡΡ Π΄ΠΎ запуска Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹, ΠΈ ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ сдСлаСт.
ΠŸΡ€ΠΎΡΡ‚ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ go func(){ ΠΈ }() . Π’Π΅Π±Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅.

ΠΈΠ·Π²ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° ΠΌΠΎΠ΅ описаниС, собствСнно, ΠΊΠΎΠ΄:

func socke_server () {
для {
// accept_something_from_socket ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ
go func (some_receive) {
db = get_db ()
ΠΎΡ‚Π»ΠΎΠΆΠΈΡ‚ΡŒ db.Close ()
foo (db)
}
}
}

func main () {
socke_server ()
}

Но Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π΄ΠΎΠΌΠ΅Π½Π° Unix (' user: pwd @ unix (/tmp/mysql.sock)/'), это исправлСно.

спасибо ΠΎΡ‚Π²Π΅Ρ‚

Π’Ρ‹ Ρ‚ΠΎΠΆΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ этого Π΄Π΅Π»Π°Ρ‚ΡŒ - это ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ.

ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ Ρ†ΠΈΠΊΠ» принятия Π² Ρ„Π°ΠΉΠ» main.
ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠΉΡ‚Π΅ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρƒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня.
ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ get_db Π² Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ Ρ‡Π°ΡΡ‚ΡŒ основного Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΎΡ‚Π»ΠΎΠΆΠΈΡ‚Π΅ db.Closer Ρ‚Π°ΠΌ (ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π°ΠΌ).
НС ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΈ Π½Π΅ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΠΉΡ‚Π΅ Π‘Π” Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

func handleConnection(db *sql.DB, args...interface{}) {
    // do someting.....
    // db.Exec("STATEMENT", args...)
}

func main() {
    db, err := sql.Open("mysql", connArgs)
    if err != nil {
        panic(err)
    }
    db.SetMaxIdleConns(100)
    defer db.Close()
    for {
        // accept connections and pass relevant stuff to handleConnection
        go handleConnection(db, nil)
    }
}

Бпасибо, поняла.

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ