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

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

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

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

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

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

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

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

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

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

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

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

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

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

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