Показателем нагрузки каналов является только размер скачиваемых файлов в промежуток времени. И ни надо придумывать каких-то систем анализа нагрузки, для балансировки нагрузки точные цифры не нужны, нужна только приближенная статистика. Надо только суммировать размер. А для определения нагрузки делить его на половину выбранного промежутка времени, и сравнивать то что получилось, соответственно выбирая сервер где это значение меньше. При этом нужен запрос только на инициализацию, запросы с Accept-Ranges игнорируем, все уже посчитано.
А как же скорости, они у всех разные!?
- Зависимость нагрузки, скорости и времени линейная, например: скачивая файл размером x пользователь занимает 10% канала на 10 минут, если бы его скорость была в два раза ниже то он бы занял канал на 5%, но на 20 минут. Несложные математические выкладки покажут, что скорость не имеет значения для определения менее нагруженного канала.
Что делать с теми кто начал загрузку и не завершил её?
- Резерв должен быть, а вдруг вернётся.
Как выбрать промежуток времени?
- Хоть как, например 1 часа, для этого надо сбрасывать значение всех счётчиков на половину каждые полчаса, предварительно записать средний показатель если надо, таким образов размер промежутка времени зависит только от того, сколько раз нужно будет запустить периодический скрипт, а какую статистику по приближению вы хотите получить.
Но количество запросов тоже влияет на канал?
- При среднем размере файлов больше 3-4Мб, это влияние ничтожно. Все вышесказанное относится именно к таких системам.
- Зависимость нагрузки, скорости и времени линейная, например: скачивая файл размером x пользователь занимает 10% канала на 10 минут, если бы его скорость была в два раза ниже то он бы занял канал на 5%, но на 20 минут. Несложные математические выкладки покажут, что скорость не имеет значения для определения менее нагруженного канала.
Что делать с теми кто начал загрузку и не завершил её?
- Резерв должен быть, а вдруг вернётся.
Как выбрать промежуток времени?
- Хоть как, например 1 часа, для этого надо сбрасывать значение всех счётчиков на половину каждые полчаса, предварительно записать средний показатель если надо, таким образов размер промежутка времени зависит только от того, сколько раз нужно будет запустить периодический скрипт, а какую статистику по приближению вы хотите получить.
Но количество запросов тоже влияет на канал?
- При среднем размере файлов больше 3-4Мб, это влияние ничтожно. Все вышесказанное относится именно к таких системам.