Как выбрать процессор для физического сервера сайта

При выборе физического сервера процессор часто сравнивают самым простым способом: у какого варианта больше ядер и выше частота, тот и должен быть быстрее. Для сайта такая логика работает далеко не всегда. Два сервера с процессорами совершенно разного класса могут показывать почти одинаковую скорость на одном проекте и сильно отличаться на другом. Всё зависит от того, какую работу выполняет сайт, насколько хорошо она распределяется между ядрами и что вообще ограничивает производительность системы.

Для обычного корпоративного сайта центральный процессор большую часть времени может быть загружен совсем немного. Интернет-магазин во время импорта товаров способен занять CPU гораздо заметнее. Большой портал одновременно обрабатывает множество запросов, а некоторые тяжёлые операции могут упираться почти в одно ядро. Именно поэтому выбирать процессор только по числу ядер, названию линейки или возрасту сервера неправильно.

Физический сервер интересен тем, что весь процессор конкретной машины находится в распоряжении клиента. Ресурсы не делятся между несколькими VPS на уровне обычной виртуализации, но это преимущество имеет смысл только тогда, когда сам проект способен его использовать. Восемь простаивающих ядер не ускоряют страницу только потому, что они присутствуют в характеристиках тарифа.

Количество ядер или высокая частота что важнее для сайта

У процессора есть несколько характеристик, которые напрямую влияют на его производительность. Пользователю чаще всего видны количество физических ядер, число потоков и тактовая частота. Дополнительно имеют значение архитектура, поколение CPU, объём кэш-памяти, особенности контроллера памяти и множество других параметров. Поэтому сравнение только по гигагерцам или ядрам даёт очень приблизительное представление.

Начать проще с характера нагрузки. Одни задачи хорошо распределяются между большим количеством ядер. Другие последовательно выполняют значительную часть работы внутри одного потока и сильнее зависят от производительности отдельного ядра.

Веб-сервер способен одновременно обслуживать множество запросов. База данных тоже выполняет параллельную работу. Если на физической машине размещено много сайтов или несколько сервисов, дополнительные ядра позволяют распределять процессы между ними. Но отдельный тяжёлый PHP-запрос не обязательно станет выполняться в восемь раз быстрее только потому, что сервер имеет восемь ядер.

Когда важнее производительность одного ядра

Многие сайты состоят из большого количества коротких операций. Пользователь открывает страницу, PHP выполняет код, приложение обращается к базе, формирует результат и отдаёт его веб-серверу. Часть такой работы может выполняться параллельно для разных посетителей, но отдельный запрос часто остаётся ограниченным производительностью конкретного ядра.

Это особенно заметно у тяжёлых CMS, интернет-магазинов с большим количеством модулей, старого программного обеспечения и приложений, где последовательные вычисления занимают значительную часть времени. В такой ситуации современный процессор с хорошей производительностью одного ядра иногда оказывается быстрее старого серверного CPU с гораздо большим количеством ядер.

Именно здесь возникает распространённая ошибка при выборе недорогих выделенных серверов. В тарифе может быть указан процессор с большим числом ядер, и на бумаге машина выглядит очень мощной. Но сам CPU выпущен много лет назад, имеет сравнительно низкую производительность отдельного ядра и значительно уступает более новому процессору в задачах типичного веб-приложения.

Поэтому возраст платформы имеет значение. Это не означает, что старый серверный процессор обязательно плох. Для фоновых задач, большого количества небольших сайтов, хранения данных и некоторых параллельных нагрузок он может быть вполне подходящим. Просто сравнивать его с современным CPU только по количеству ядер нельзя.

Допустим, один сервер имеет 16 относительно медленных ядер, а другой 8 значительно более производительных. Если приложение почти всегда использует несколько потоков и чувствительно к скорости отдельного ядра, второй вариант способен оказаться быстрее несмотря на меньшее количество ядер. Если же сервер одновременно выполняет десятки независимых задач, ситуация может быть обратной.

Для WordPress, 1С-Битрикс и других популярных CMS обычно полезен разумный баланс. Нужна хорошая производительность одного ядра, но при высокой посещаемости дополнительные ядра позволяют одновременно обслуживать больше процессов PHP, запросов базы данных и фоновых заданий.

Именно поэтому вопрос сколько ядер нужно сайту не имеет универсального ответа. Проект с десятью тысячами посетителей в сутки может потреблять меньше CPU, чем значительно менее посещаемый интернет-магазин с тяжёлыми фильтрами, сложным поиском и постоянной синхронизацией каталога.

Когда количество ядер начинает играть большую роль

Чем больше независимой работы выполняет сервер одновременно, тем полезнее становится многоядерность. Это хорошо заметно, когда на одной физической машине размещается не один сайт, а несколько десятков проектов. Пока один процесс PHP формирует страницу одного сайта, другое ядро может обслуживать другой запрос, база выполняет свои операции, а в фоне идёт резервное копирование или обработка изображений.

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

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

Но и здесь правило больше ядер значит лучше имеет предел. Если приложение использует четыре ядра, сервер с 32 ядрами не станет автоматически в восемь раз быстрее сервера с четырьмя. Значительная часть мощности просто останется свободной.

Для выбора поэтому полезнее смотреть на текущую нагрузку, чем пытаться заранее угадать идеальную конфигурацию по названию проекта. Если сайт уже работает на VPS или другом сервере, можно посмотреть среднюю загрузку CPU, пики, load average, количество одновременно работающих процессов и время ответа приложения.

Особенно интересны моменты, когда сайт начинает тормозить. Если в это время одно или несколько ядер постоянно работают почти на пределе, процессор действительно может быть узким местом. Если CPU загружен на 20 процентов, а страницы всё равно отвечают медленно, покупка более дорогого процессора может не изменить почти ничего.

Причина способна находиться в дисках, базе данных, недостатке оперативной памяти, внешнем API, сетевом подключении или самом коде сайта. Поэтому переход на физический сервер лучше начинать с понимания существующего ограничения, а не с поиска максимального количества процессорных ядер.

Как подобрать процессор под реальную нагрузку сайта

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

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

Если нагрузка регулярно приближается к пределу, ситуация интереснее. Нужно определить, чем именно она создаётся. Одно дело, когда сотни одновременных запросов равномерно используют все доступные ядра. Совсем другое, когда один тяжёлый процесс занимает одно ядро, а остальные почти простаивают.

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

Для интернет-магазина стоит отдельно посмотреть периоды импорта и выгрузки товаров, пересчёта цен, синхронизации с учётной системой, построения поискового индекса и массовой обработки изображений. Иногда посетители сайта создают сравнительно небольшую нагрузку, а именно фоновые операции регулярно перегружают машину.

У информационного проекта картина может быть другой. Статьи хорошо кэшируются, база данных получает сравнительно мало сложных запросов, а значительная часть страниц отдаётся практически в готовом виде. Такой сайт способен обслуживать серьёзную аудиторию на довольно умеренном CPU, если кэширование настроено правильно.

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

Следующий параметр, который стоит учитывать, это запас. Покупать физический сервер, который уже в первый день должен работать на пределе, неразумно. Нагрузка меняется, появляются новые функции, растёт база данных, запускается реклама и возникают неожиданные пики посещаемости.

Но запас и десятикратная переплата не одно и то же. Если текущему проекту достаточно нескольких современных ядер, выбирать машину с несколькими десятками ядер только на случай будущего роста обычно нет необходимости. Через несколько лет такая платформа может устареть раньше, чем сайт действительно начнёт использовать всю её мощность.

Физический сервер отличается от облачной виртуальной машины тем, что быстро добавить ещё четыре процессорных ядра кнопкой в панели обычно нельзя. Для серьёзного увеличения мощности может потребоваться переход на другую машину, замена процессора или изменение всей конфигурации. Поэтому небольшой разумный запас действительно полезен.

Нужно учитывать и возможность роста не вверх, а в стороны. Если сайт становится настолько большим, что ему мало одной машины, следующий этап необязательно заключается в покупке ещё более мощного процессора. Базу данных можно перенести на отдельный сервер, веб-часть распределить между несколькими узлами, а статические файлы вынести в CDN или объектное хранилище.

В таком случае бесконечная гонка за самым мощным CPU перестаёт быть единственным способом масштабирования.

Отдельного внимания заслуживает кэш процессора. В характеристиках серверных CPU можно увидеть десятки и даже сотни мегабайт кэш-памяти. Это очень быстрая память внутри процессора, которая уменьшает необходимость постоянно обращаться к более медленной оперативной памяти. Для баз данных и некоторых вычислительных задач большой кэш способен быть полезным, но для обычного владельца сайта выбирать сервер исключительно по этому параметру не нужно.

То же относится к числу потоков. Технологии многопоточности позволяют одному физическому ядру выполнять несколько потоков, но два потока не превращают одно ядро в два полноценных независимых процессорных ядра. Поэтому характеристику 16 ядер и 32 потока нельзя воспринимать как 32 физических ядра.

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

Особенно это важно на рынке недорогих выделенных серверов, где до сих пор встречаются довольно старые платформы. Они могут быть выгодными по цене и отлично подходить для определённых задач, но слово Xeon в названии не является гарантией высокой производительности. Это огромная линейка процессоров разных поколений и классов.

То же справедливо для AMD EPYC и других серверных семейств. Название семейства помогает понять назначение процессора, но не заменяет сравнение конкретной модели и её поколения.

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

У классических серверных платформ при этом есть свои преимущества: поддержка большого объёма памяти, большое количество линий PCI Express, развитые средства удалённого управления, возможность установки нескольких процессоров у определённых систем и ориентация на круглосуточную эксплуатацию. Выбор зависит от всей машины, а не только от марки CPU.

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

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

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

Полезно смотреть и на стабильность времени ответа. Сервер, который большую часть времени отвечает быстро, но периодически полностью упирается в CPU, может создавать неприятные задержки именно в часы пик. Небольшой запас вычислительной мощности здесь ценнее рекордного результата одного синтетического теста.

При этом процессор нельзя выбирать отдельно от остальной конфигурации. Мощный CPU с недостаточным объёмом RAM будет простаивать, пока системе приходится постоянно работать с диском. Быстрая база данных может упереться в медленное хранилище. Производительный сервер способен ограничиваться сетевым каналом. Сайт всегда работает на всей системе целиком.

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

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

Главная ошибка при выборе процессора для физического сервера заключается в попытке определить лучший CPU вообще. Такого процессора для сайтов не существует. Для одного проекта важнее высокая производительность отдельного ядра, для другого количество ядер, для третьего процессор вообще не является главным ограничением.

Поэтому характеристики сервера стоит читать не как рейтинг мощности, а как набор инструментов. Частота показывает только часть картины, количество ядер тоже только часть, а название семейства процессора ещё меньше говорит о том, насколько быстро будет работать конкретный сайт. Лучший выбор появляется тогда, когда конфигурация соответствует реальной нагрузке проекта и оставляет разумный запас на её рост.

Оцените статью
Рейтинг хостингов
Добавить комментарий