Сколько vCPU нужно для сайта?

Вопрос, VPS с каким количеством vCPU арендовать для сайта, не такой простой. С одной стороны интуитивно понятно, что два ядра лучше чем одно: ведь на сайт одновременно может зайти два человека, и хорошо, если никому не придется ждать. А если хочется сэкономить?

Один посетитель эквивалентен одному процессу? Скорее всего нет, как минимум есть веб-сервер и сервер базы данных. А запросы к сайту? Ведь загрузка одной страницы обычно требует нескольких десятков HTTP-запросов (стили, скрипты, картинки). А другие процессы, не связанные с вебом? Сколько им нужно процессорного времени?

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

Первый пример: VPS с небольшим сайтом, два ядра. Можно ли перейти на одно ядро и сэкономить?

Попробуем оценить с помощью программы для нагрузочного тестирования siege.

Итак, пятьдесят пользователей делают по десять запросов. Вот результат для двух ядер:

root@server:~# siege -bv -c50 -r10 _https://example.com/
** SIEGE 3.0.8
** Preparing 50 concurrent users for battle.
The server is now under siege...

HTTP/1.1 200   0.99 secs:   10693 bytes ==> GET  /
HTTP/1.1 200   1.04 secs:   10693 bytes ==> GET  /
HTTP/1.1 200   1.09 secs:   10693 bytes ==> GET  /
...

Transactions:                    500 hits
Availability:                 100.00 %
Elapsed time:                  47.24 secs
Data transferred:               5.10 MB
Response time:                  4.64 secs
Transaction rate:              10.58 trans/sec
Throughput:                     0.11 MB/sec
Concurrency:                   49.16
Successful transactions:         500
Failed transactions:               0
Longest transaction:            7.68
Shortest transaction:           0.99

Насколько медленнее будут отдаваться страницы, если одно ядро убрать? Проверяем:

Transactions:                    500 hits
Availability:                 100.00 %
Elapsed time:                  93.72 secs
Data transferred:               5.10 MB
Response time:                  9.18 secs
Transaction rate:               5.34 trans/sec
Throughput:                     0.05 MB/sec
Concurrency:                   48.98
Successful transactions:         500
Failed transactions:               0
Longest transaction:           15.69
Shortest transaction:           1.92

Среднее время генерации страницы увеличилось в два раза. Но 9 секунд - это очень много. Посмотрим сценарий, когда десять пользователей делает по десять запросов:

Transactions:                    100 hits
Availability:                 100.00 %
Elapsed time:                  17.88 secs
Data transferred:               1.02 MB
Response time:                  1.19 secs
Transaction rate:               5.59 trans/sec
Throughput:                     0.06 MB/sec
Concurrency:                    6.68
Successful transactions:         100
Failed transactions:               0
Longest transaction:            1.65
Shortest transaction:           0.17

Страница отдается за 1 секунду - это может быть приемлемо.

А вот график загрузки процессора во время тестов:

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

Другой пример: довольно ресурсоемкий сайт на сервере с двумя ядрами, что будет, если сделать четыре?

Посмотрим отчеты Page Speed в Google Analytics.

По сайту в общем выигрыш в Server response time неочевиден (4 vCPU - две последние точки графика, до этого было 2 ядра). И вклад в Page load незаметен.

А если посмотреть популярную тяжелую страницу отдельно?

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

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

Теги:  ·  ·  ·  ·

Смотрите также

Комментарии

Отправить комментарий

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

Подробнее о форматировании

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
5 + 7 9 + 8 плюс 3 3