Что производительнее — VPS или выделенный сервер? Стоит ли переезжать?
Сейчас использую виртуальный сервер VPS. 4 ядра 3.4 Ггц, 4ГБ RAM.
Но модель процессора не написана. Только такая QEMU Virtual CPU version 1.5.3. Хостер говорит, что процессор Xeon E5/
На сервере расположено API, которое используют другие сайты.
API сервер получает запросы и либо выдает информацию из кэша, либо запускает в потоках (php Pthreads) парсер\скрейпер, который может выполнятся до 2-х минут из-за длительного ожидания ответа от сторонних сайтов.
Сейчас около 100тыс запросов к апи в сутки. Это число вырастет примерно до 500 тысяч, т.е. в 5 раз, т.к. добавятся еще одни сайты-клиенты.
И также вырастает потребление оперативной памяти.
Стоит ли переезжать на выделенный сервер и если да, то какой конфигурации будет достаточно?
Есть вариант арендовать выделенный сервер. 4 ядра 3.4Ггц. Intel Core i7-4770, 32GB RAM
Или Core i7-6700, 64GB RAM
Но боюсь, что производительность станет только хуже, например из-за того, что процессоры менее производительны.
Поэтому есть еще вариант - остаться и дальше использовать VPS - просто увеличив оперативную память
То что в VPS у вас Xeon, не означает то что ресурсы его доступны только вам. Обычно они разделяются на несколько машин.
500 000 запросов в сутки это где-то 6 запросов в секунду. Ну или 20-30 на пике. Думаю что текущий сервер должен справиться.
запускает в потоках (php Pthreads) парсер\скрейпер,
Что то тут не так. Вы на каждый запрос по потоку выделяете? Так никаких ресурсов не хватит. Если нельзя уйти с php на что-нибудь асинхронное в стиле go или nodejs, то хотя бы используйте что-то в стиле https://github.com/chuyskywalker/rolling-curl
не подойдет, наверно, т.к. для каждого сайта помимо загрузки страницы - есть своя логика обработки данных.
А pthreads я использовал для того, чтобы параллельно запрашивать информацию с сайтов и обрабатывать ее внутри этого же потока, проанализировать и возможно еще сделать запросы, для каждого сайта своя логика. Где-то капчу распознать перед запросов надо, где-то авторизоваться и отправить форму - то есть 2-3 curl запроса внутри потока.
Nodejs рассматривал, но разве там не также будет? Будут параллельно обрабатывать запросы. Или там это быстрее работает и ресурсов необходимо меньше?
Если бы я делал подобное на nodejs, то использовал бы что-то в стиле
async function task(){
const r = await loadSomeSite(...);
const r2 = await Promise.all([ doSomeWork(r), dosomeAnotherWork(r) ]);
return await doSomeFinalWork(r2)
}
И таких асинхронных js функций можно одновременно запускать пока памяти под стек и работу хватает. Только саму ноду уже запускаем в несколько процессов (число ядер * 2)
Andreda, На go можно похожим образом делать, но там можно автоматом нити размазывать по ядрам, хотя и усложняется логика синхронизации.
В nodejs синхронизировать нечего, все в одном потоке крутится в пределах одного процесса. Есть конечно нативные модули, чтобы несколько ядер задействовать, но это на любителя. Обычно просто запускают ноду в несколько процессов с помощью https://nodejs.org/api/cluster.html
Виртуальный выделенный сервер (Virtual dedicated server – VDS или Virtual private server – VPS) – это часть мощного сервера с установленной на нем системой виртуализации, которая распределяет мощности этого сервера между несколькими виртуальными машинами. Говоря проще, специальная программа разделяет физический сервер на части (виртуальные машины), где каждая из них работает независимо от других. Такое решение позволяет использовать все преимущества выделенных физических серверов при меньших финансовых затратах.
Выбирая VDS/ VPS хостинг, Вы не платите полную цену за оборудование – Вы оплачиваете только ту часть, которая Вам будет необходима. Вы можете четко заказать определенное количество памяти, определенную мощность процессора, объем жесткого диска и трафика. При необходимости все эти параметры можно без проблем изменить, если ваш хостинг-провайдер создал масштабируемую ноду.
А вообще, все зависит от ваших задач, если брать на перспективу - лучше рассматривать сервера.
Очевидно что процессоры станут только мощнее, во первых хостеры вас используют очень многоядерные процы, а у них частота всегда ниже, во вторых вас не будет беспокоит нагрузка от соседей других клиентов хостера, в третьих у вас не будет оверхеда из за виртуализации
Если есть бабки то на физический сервер газуйте (dedicated), если бабок совсем хорошо то свой (colocation) если нет бабок оставайтесь на VPS. О чём тут ещё рассуждать?
а так ваши 100к запросов да даже 500к это дет сад.