Влияние на производительность распределения потоков между процессами на сервере
Название вопроса довольно неловко, извините за это.
В настоящее время я работаю над дизайном сервера, и один из моих коллег получил комментарий о том, что нам следует использовать несколько процессов, так как производительность была снижена из-за того, что в одном процессе было слишком много потоков (в отличие от то же количество потоков распределяется между несколькими процессами на одном компьютере)
Единственное, что я могу придумать, что может вызвать это (кроме плохого планирования ОС), будет из-за повышенной конкуренции (например, из-за распределения памяти), но я не уверен, насколько это важно.
Это "лучшая практика"? У кого-нибудь есть какие-то критерии, которыми они могли бы поделиться со мной? Конечно, ответ может зависеть от платформы (меня интересует в основном windows/linux/osx, хотя мне нужно в некоторой степени заботиться о HP-UX, AIX и Solaris)
Конечно, есть и другие преимущества использования многопроцессорной архитектуры, такие как изоляция процессов для ограничения эффекта сбоя, но меня интересует производительность по этому вопросу.
В некоторых случаях сервер будет обслуживать длительные соединения с сохранением состояния (поэтому они не могут быть перенесены на другие процессы сервера), которые отправляют обратно много данных, а также могут вызвать большую обработку локальной БД на сервере. Он будет использовать внутрипроцессную архитектуру Proactor и будет реализован на C++. Ожидается, что сервер будет работать неделями / месяцами без необходимости перезапуска (хотя это может быть реализовано путем прозрачного чередования новых экземпляров под некоторым прокси-сервером).
Кроме того, мы будем использовать многопроцессорную архитектуру, моя задача больше связана с планированием соединений с процессами.