Size: a a a

2020 May 31

а

аннлн in pro.lua
вообще, помогает collectgarbage("stop"), но ненадолго
источник

а

аннлн in pro.lua
примерно минут на пять стресс-теста
источник

а

аннлн in pro.lua
потом приходит дядя oomkiller
источник

S

Snusmumriken in pro.lua
аннлн
вообще, помогает collectgarbage("stop"), но ненадолго
Карочи, что ты тут делаешь:
1. Для каждого запроса создаёшь ТЯЖЁЛЫЙ тред. Это ужасно, чудовищно медленно.
2. После использования — не завершаешь его, он так и остаётся висеть хендлером )))
источник

ШТ

Шмель Тяжеловес... in pro.lua
pthread - это вроде потоки ядра?
источник

ШТ

Шмель Тяжеловес... in pro.lua
ага, ок)
источник

S

Snusmumriken in pro.lua
Да, это тяжёлые потоки.
источник

а

аннлн in pro.lua
Snusmumriken
Карочи, что ты тут делаешь:
1. Для каждого запроса создаёшь ТЯЖЁЛЫЙ тред. Это ужасно, чудовищно медленно.
2. После использования — не завершаешь его, он так и остаётся висеть хендлером )))
так, а как надо?
источник

S

Snusmumriken in pro.lua
аннлн
так, а как надо?
Тебе достаточно условно 1-16 тяжёлых потоков на все 10ккккккккк rps. Сколько у тебя ядер на компе минус один.
источник

а

аннлн in pro.lua
Snusmumriken
Тебе достаточно условно 1-16 тяжёлых потоков на все 10ккккккккк rps. Сколько у тебя ядер на компе минус один.
это при наличии неблокирующего ввода-вывода
источник

S

Snusmumriken in pro.lua
Конечно : )
источник

S

Snusmumriken in pro.lua
А при наличии блокирующего — процессор начинает метаться между тяжёлыми потоками, недоделывает их, мечется на другие и тратит безумное количество времени чисто на свитчи.
источник

S

Snusmumriken in pro.lua
Так что обрабатывать на одном ядре в один поток оказывается тупо быстрее чем условно на четырёх, если ты открыл пару сотен потоков ))
источник

а

аннлн in pro.lua
Snusmumriken
Карочи, что ты тут делаешь:
1. Для каждого запроса создаёшь ТЯЖЁЛЫЙ тред. Это ужасно, чудовищно медленно.
2. После использования — не завершаешь его, он так и остаётся висеть хендлером )))
про пункт два можно подробнее?
источник

S

Snusmumriken in pro.lua
Как работают тяжёлые потоки (потоки ядра)?
источник

S

Snusmumriken in pro.lua
Есть таск-шедулер встроенный в ОС. Он переключает ядро процессора между задачами. Процесс переключения — довольно медленный (много наносекунд, ибо запоминание, свитч стека/кеша и ещё много чего).
источник

а

аннлн in pro.lua
если ничего не путаю, то pthreads как раз использует легкие треды
источник

S

Snusmumriken in pro.lua
А лёгкие треды — это корутины ))
источник

S

Snusmumriken in pro.lua
Считай что очень много goto в прямом коде, исполняющемся в одном потоке. Никакой многопроцессорности.
источник

а

аннлн in pro.lua
что-то мне подсказывает, что I/O планировщик в линуксе умнее меня
источник