Чтобы выполнить тест с имитацией нагрузки, настройте базовый API REST в оболочке Go gin-gonic с приведенным ниже кодом и после примерно 1000+ запросов получите ошибку
http: Accept error: accept tcp[::]: 8123: accept4: слишком много открытых файлов;повторная попытка в 1с
func main() {
gin.SetMode(gin.DebugMode)
router := gin.Default()
router.GET("/dummyRequest", func(c *gin.Context) {
c.Data(http.StatusOK, "application/json; charset=utf-8", []byte(`{"name": "test", "age": 99}`))
})
router.Run(":8123")
}
Исходя из этого вопроса здесь Я понимаю, что это можно исправить, выполнив команду ulimit
, но это только задержит проблему.
Когда я выполняю команду netstat -tc
, я вижу, что новые соединения установлены и продолжают находиться в состоянии ESTABLISHED
еще долго после того, как запрос обслужен.
Как и ожидалось, когда я проверял /proc / $ PID / limits, как и ожидалось, видна следующая запись:
Max open files 1024 4096 files
Пожалуйста, помогите мне, какие другие варианты я мог бы попытаться исправить это правильно.
Я использую запросы curlотправлять запросы для проверки выше.