@supportitc

Как определить нагрузку на канал сервера и свободное место с помощью php?

Использую несколько VPS для размещения фотографий пользователей социальной сети.
Стоит задача, определить на какой сервер грузить контент исходя из нагрузки на сервер и свободного места на нём.
Каким способом это можно реализовать правильно?
  • Вопрос задан
  • 173 просмотра
Решения вопроса 1
pro100chel
@pro100chel
Python && PHP Developer
Во-первых, такое не делают обычно с помощью пыхи. На серваках крутятся демоны, которые оповещают систему о состоянии сервера, в твоем случае это свободное место на диске и нагрузка на канал.

Во-вторых, инфа о нагрузке на канал тебе ничего особенного не даст в твоем случае. Сегодня на эту картинку посмотрело 2 человека, а завтра может придти 2 миллиона человек, что ты будешь делать?

В-третьих, вытекает из второго, нельзя привязывать картинку жестко к одному серверу. Это неправильно и несет вред как для балансировки нагрузки, так и для сохранности данных. Каждая картинки должна храниться МИНИМУМ на 2 серверах, которые разделены ФИЗИЧЕСКИ, а лучше, находятся в разных ДЦ.

У тебя должна быть стая стораджей (впсок). Изначально ты грузишь картинку на 2 рандомных сервера. Например, на те, у которых есть место на диске. Самые популярные картинки нужно будет раскидывать на бОльшее число серверов. Например, картинка, которая никому не интересна и у нее не было просмотров или их было очень мало хранится на 2 серверах, а вот картинка, которую многие смотрят, должна храниться на бОльшем серверов. То есть если картинку смотрят, мы ее закидываем на еще несколько серверов и добавляем в базу адреса для балансировки.

Идеально будет хранить данные о таких "highload пикчах" в отдельной таблице в базе и мониторить скриптами их посещаемость. Если она падает - удалять картинки с серверов и оставлять только 2 сервера. Тут нужно подумать над алгоритмом.

Также может случиться так, что на одной виртуалке лежит 1000000 картинок и их смотрят по 1 разу в день и канал сервера забит под завязку. А на втором сервере лежит 1000000 картинок и их смотрят 2 раза в день. То есть кто-то будет очень долго грузить картинку)

То есть помимо "highload пикч" нужно будет подумать над перебалансировкой картинок. То есть если один сервер не справляется - снять с него пару тысяч картинок и отправить на менее загруженный сервачок.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
inoise
@inoise Куратор тега PHP
Solution Architect, AWS Certified, Serverless
Не заниматься фигней и не хранить фото на VPS, а отправлять из в облачное хранилище (s3 object storage). И проблемы не будет. А что до нагрузки то распределение нагрузки решается через балансировшик нагрузки. PHP в данном вопросе не при чем
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
DKLINE Санкт-Петербург
от 120 000 до 150 000 ₽
Laptop.ru Москва
от 130 000 до 170 000 ₽
Laptop.ru Москва
от 150 000 до 190 000 ₽