Size: a a a

2020 June 12

s

sexst in Go-go!
1 открытый сокет = 1 файловый дескриптор. Каждому процессу количество дескрипторов ограничено системой, но его можно увеличить при необходимости.
источник

s

sexst in Go-go!
Скорее всего нужно смотреть в эту сторону
источник

p

pragus in Go-go!
Заур Ашурбеков
Хз на сколько это реально, но может проблемы из-за кэшируемых (можно ли так назвать?) tcp соединений.

Можно попробовать настроить  http.Transport с низким idle таймаутом и одновременными подключениями. Http.transport выставляется внутри http client
Кешируемых tcp? Это как?
источник

ЗА

Заур Ашурбеков... in Go-go!
ща
источник

p

pragus in Go-go!
Roman Sharkov
а аллокации в принципе вещь не дешёвая
Я когда-то видел доклад вида "top performance killers"
источник

J

Jefferson in Go-go!
sexst
1 открытый сокет = 1 файловый дескриптор. Каждому процессу количество дескрипторов ограничено системой, но его можно увеличить при необходимости.
Можно в терминале прописать:
ulimit -n 999999
И всё будет работать, но хотелось бы на стороне кода пофиксить это дело как-то
источник

ЗА

Заур Ашурбеков... in Go-go!
pragus
Кешируемых tcp? Это как?
источник

ЗА

Заур Ашурбеков... in Go-go!
я как раз про то, что может из-за этого и происходит переполнение, обычно всегда в транспорте какие-то ограничения ставят, а-ля

tr := &http.Transport{
 MaxIdleConns:       10,
 IdleConnTimeout:    30 * time.Second
,
источник

p

pragus in Go-go!
Так это про keep-alive
источник

p

pragus in Go-go!
Jefferson
Можно в терминале прописать:
ulimit -n 999999
И всё будет работать, но хотелось бы на стороне кода пофиксить это дело как-то
А что там в rlimit_nofile?
источник

s

sexst in Go-go!
Jefferson
Можно в терминале прописать:
ulimit -n 999999
И всё будет работать, но хотелось бы на стороне кода пофиксить это дело как-то
CloseIdleConnections()
источник

s

sexst in Go-go!
Да и вообще зачем новый client под каждый запрос заново создаётся? У сабжа паттерн использования немного иной.
источник

RS

Roman Sharkov in Go-go!
pragus
Я когда-то видел доклад вида "top performance killers"
..ии?)
источник

p

pragus in Go-go!
Там аллокация, копирование, поштучный процессинг
источник

RS

Roman Sharkov in Go-go!
pragus
Там аллокация, копирование, поштучный процессинг
+ syscalls
источник

p

pragus in Go-go!
Roman Sharkov
+ syscalls
Ну в них сложно упереться.
источник

RS

Roman Sharkov in Go-go!
pragus
Ну в них сложно упереться.
на винде упирался как-то с вебсокетами, возможно уже пофиксили, возможно в самой винде проблема
источник

ЗА

Заур Ашурбеков... in Go-go!
pragus
Так это про keep-alive
так он же может не знакрыться после close запроса. мы же имеем выделенный дескриптор на руках
источник

s

sexst in Go-go!
Заур Ашурбеков
я как раз про то, что может из-за этого и происходит переполнение, обычно всегда в транспорте какие-то ограничения ставят, а-ля

tr := &http.Transport{
 MaxIdleConns:       10,
 IdleConnTimeout:    30 * time.Second
,
Тут не поможет. Потому что на каждое соединение создаётся 1 новый client с 1 idleconn. И оно будет закрыто только когда придёт gc и прибъёт сокет открытый
источник

RS

Roman Sharkov in Go-go!
runtime плодил столько syscall’ов что наплодил в итоге 10k потоков и система повисла
источник