Как выделяется поток для пользователя и расчёт предельной нагрузки сервера?
Не буду врать, говоря, что я всё знаю о потоках и прочее(иначе этого вопроса не было бы), поэтому было бы очень круто, если кто-то помог разобраться с тематикой потоков, в особенности выделения потока под пользователя. Также, исходя из выделения потока под пользователя, может кто-то знает, как на бумажке рассчитать предельную нагрузку на сервер? То есть сколько коннектов он сможет держать, при этом не умерев от потокового голодания.
P.S.: интересует именно java, если это будет важно
P.S.S.: пытался на просторах инета найти инфу о первом, но там информацию не удалось опровергнуть или подтвердить, поэтому хотел бы ещё тут уточнить (говорилось про изначальную резервацию 128 кбайт на коннект, дальше поток расширялся до 1 мегабайта и ещё что-то там)
С практической точки зрения самый верный вариант - провести эксперимент на реальной нагрузке.
Все остальные способы дадут приблизительную оценку или с погрешностью, с лимитом сверху или снизу.
Вам один сборщик мусора может внести заметной паразитной нагрузки вне расчета. Так же помимо прямых затрат на работу с потоками есть же затраты на обслуживание к примеру файловых операций, даже если они асинхронные, ресурсы которые на это тратятся из воздуха не берутся.
Да, с одним из преподавателей уже обсуждал то, что проще и надёжней всего дать нагрузку на сервак, но с другой стороны, с определённой погрешностью же можно как-то рассчитать примерное количество юзеров. Типа я слышал, что можно выделить максимум потоков что-то вроде
оперативка (в мегабайтах я так понимаю) * ядра процессора (например на 16)
Но эту информацию тоже не удалось подтвердить или опровергнуть