Вопрос

Позвольте мне сформулировать это так ...

"Скажем, у меня есть сервер приложений, работающий на одноядерном процессоре Intel & amp; обслуживающих 200 одновременных пользователей. Будет ли перевод оборудования на двухъядерную систему позволять моему серверу приложений обслуживать, скажем, 350 одновременно работающих пользователей "

Основной вопрос, на который я надеюсь ответить, - "Может ли добавление дополнительных ядер процессора помочь увеличить возможности ввода-вывода сервера". Потому что иногда это именно то, на что намекают производители оборудования, когда рекламируют свои многоядерные серверы.

Это было полезно?

Решение

Вы должны профилировать свой сервер, определить его узкое место и устранить их.

Если у вас недостаточно памяти, купите больше памяти или купите компьютер с более быстрой памятью.

Если вы привязаны к диску и много обслуживаете статического контента, рассмотрите SSD-диск.

Если ваша база данных привязана, учтите это.

Но обычно вы "привязаны к конфигурации" и настраиваете свою конфигурацию, например. изменение количества потоков в пуле или что-то подобное даст вам немедленное улучшение.

Многие веб-серверы и базы данных - это именно программное обеспечение, написанное для использования дополнительных ядер. Конечно, многие также взимают лицензионные сборы за ядро, поэтому учитывайте и этот аспект.

Другие советы

Вы можете или не можете видеть выгоду, но поскольку процессор на самом деле не выполняет ввод-вывод, я не ожидаю какого-либо существенного преимущества, если задачи в основном связаны с вводом-выводом.

РЕДАКТИРОВАТЬ: Мой ответ предполагает, что ваш код написан так, что вы фактически используете несколько ядер. Если это не так, ваше приложение не получит выгоду от дополнительных ядер, но машина будет лучше оснащена для обслуживания других одновременных задач.

Это, конечно, зависит от того, как был написан ваш сервер приложений. Если программное обеспечение не использует какие-либо методы параллельного программирования, вы не сможете запустить его параллельно, даже если оборудование поддерживает это.

Если ваш сервер однопоточный (с использованием IO на основе выбора) и обработка запросов не имеет побочных эффектов (т. е. может быть концептуально распараллелена), то, безусловно, выполнение (сопоставление) нескольких экземпляров на многоядерном компьютере приведет к максимизации вычислительная полезность машины.

Преобразуется ли это в более высокую пропускную способность или нет, зависит от того, была ли обработка запроса связана с процессором. Как правило, IO является основным узким местом в распределенных системах. Тем не менее, если сборка сообщений (запроса) требует значительных вычислений, то для каждого запроса существует определенная дополнительная нагрузка на процессор, превышающая затраты на ввод-вывод. Наличие нескольких вспомогательных процессоров в этом случае, несомненно, будет иметь значение.

Помимо соображений уровня протокола, очевидно, что если обработка каждого запроса требует значительных вычислений, наличие узкого места в ЦП повлияет на доступность сервера. Использование нескольких процессоров явно поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top