2016-03-31 2 views
0

Я создал Api с golang и postgresql как базу данных.Postgresql with golang, вопросы

после нескольких запросов, то API происходит сбой с ошибкой 500 и журналом, который отображает

рдом: К сожалению, слишком многие клиенты уже

Сначала это было, потому что я не рядом строк когда я выбираю, поэтому у меня есть rows.close() все.

Но это не так, потому что у меня уже есть эта ошибка.

Затем увидел, что запуск базы данных занимает всего 3 мс, я думал, что должен начать и закрыть базу данных по каждому запросу, чтобы сбросить все соединения, , но подумать об этом немного больше, это ерунда.

Итак, я спрашиваю вас, как эта ошибка работает, заключается в том, что клиентские соединения сбрасываются через определенное время или соединение отключается до перезагрузки сервера для клиента?

Если он сбрасывается через определенное время, каковы недостатки увеличения максимального количества клиентских соединений?

Мой код:

Я открываю дб, как это в начале программы:

var gest Gestion 

    type Gestion struct { 
     Db *sql.DB 
     DbLog *sql.DB 
    } 



func InitDbUser() *sql.DB { 
     dbinfo := fmt.Sprintf("user=%s password=%s dbname=%s sslmode=disable", DB_USER, DB_PASSWORD, DB_NAME) 
     db, err := sql.Open("postgres", dbinfo) 
     LogFatalError(err) 
     err2 := db.Ping() 
     LogFatalError(err2) 
     return db 
} 

func main() { 

    gest.Db = InitDbUser() 

     defer gest.Db.Close() 
     //routing is here 

    } 

И когда я использую этот запрос в моих PSQL:

select min_val,max_val from pg_settings where name='max_connections'; 

я шляпу:

min_val | max_val 
---------+--------- 
1  | 8388607 

S иться за мой английский, я надеюсь, вы понимаете, что я спрашиваю :)

+0

Не зная, как управлять соединениями базы данных является трудно догадаться, что не так. – Sebastian

+0

У меня есть редактирование. :) – Fantasim

+0

В общем, вы должны использовать пул соединений и убедиться, что вы не используете одно и то же соединение одновременно. – Sebastian

ответ

0

Вы можете проверить настройку max_connection П.Г., что может быть проблема здесь:

select min_val,max_val from pg_settings where name='max_connections' 
+0

Да, я знаю, но мне хотелось бы знать, как это сделать работает, я имею в виду, в какое время число клиентов сбрасывается? – Fantasim