Я пишу REST API на Go, используя MongoDB в качестве базы данных и mgo в качестве драйвера. Для роутера я использую пользовательский: pi.
При запуске программы я создаю мастер-сеанс mgo.Session, а затем для каждого обрабатываемого запроса копирую мастер-сеанс и закрываю его, когда закончу.
Но когда несколько запросов обрабатываются одновременно, я наблюдаю, что соединение MongoDB все еще открыто, хотя я закрывал каждый скопированный сеанс mgo.Session.
Вот пример вывода команды lsof:
milano-ru 18790 neel_v 118u IPv4 34115804 0t0 TCP localhost:44238->localhost:27017 (ESTABLISHED)
milano-ru 18790 neel_v 119u IPv4 34115812 0t0 TCP localhost:44241->localhost:27017 (ESTABLISHED)
milano-ru 18790 neel_v 120u IPv4 34115813 0t0 TCP localhost:44242->localhost:27017 (ESTABLISHED)
milano-ru 18790 neel_v 121u IPv4 34115814 0t0 TCP localhost:44243->localhost:27017 (ESTABLISHED)
milano-ru 18790 neel_v 122u IPv4 34115815 0t0 TCP localhost:44244->localhost:27017 (ESTABLISHED)
Итак, через пару часов мое приложение перестает работать, так как не может открыть другое соединение MongoDB, потому что достигнут предел (1024).
Я читал об увеличении ulimit в MongoDB, но действительно ли это решение?