Утечки в стандартной библиотеке Go?

Ситуация практически идентичная описанной в этом тикете: stackoverflow.com/questions/21080642/memory-leak-i...

Беру простейший код из документации:

package main

import (
    "net/http"
)

func main() {
    http.ListenAndServe(":8080", nil)
}


Запускаю:
while [ true ]
do
    ab -n 1000 -c 100 http://127.0.0.1:8080/
    sleep 1
end


И вижу как программа есть все больше и больше памяти.

Блин, это стандартный пример простейшего вызова библиотечного кода, как такое вообще может быть?

Кто писал веб серверы на Go, получалось ли сделать без утечек с использованием стандартной библиотеки?
  • Вопрос задан
  • 324 просмотра
Решения вопроса 1
@esc Автор вопроса
В первую очередь стоит проверить версию Go т.к. ранние версии, даже те, что начинаются с 1, не особенно стабильны и страдают утечками.

Во-вторых, нужно понимать, что keep-alive оставляет соединения открытами какое-то время и это сказывается на расходуемой памяти (правда, когда активность станет меньше, память со временем тоже очистится). Чтобы убедиться что не течет, стоит keep-alive для теста отключить.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы