У меня есть задача разместить около 200-1000 mp3-файлов, все размером более 100 МБ.
Кроме того, есть несколько файлов RSS меньшего размера и файлы JPG меньшего размера.
Все это статический контент, без PHP или каких-либо сценариев. Также не будет HTML-хостинга, ничего не должно быть HTTPS, никакие пользовательские данные не хранятся на сервере.
Эти файлы являются подкастами, не защищенными авторскими правами, которые мы создаем, их можно бесплатно загрузить в itunes и везде, и их можно найти с помощью RSS.
До недавнего времени эти файлы размещались на дешевом хостинге у godaddy, но из-за огромного трафика у нас нет другого выхода, кроме как разместить эти файлы где-нибудь еще.
Раньше я использовал Apache только для всех моих нужд хостинга, но у меня есть подозрение, что apache не будет идеальным решением для этих требований, и поскольку сервер работает немного медленнее и не имеет такого большого объема оперативной памяти, Мне интересно, подойдет ли другой сервер для этих требований.
Какой сервер вы бы порекомендовали? Я надеялся, что будет что-то, что поймет, что один файл пользуется большим спросом, например, когда выходит новый эпизод, и поместит его в кэш ОЗУ. Можно ли таким образом использовать NGINX? Стоит ли использовать Lighthttpd?
Этот вопрос пахнет преждевременной оптимизацией.
Я надеялся, что будет что-то, что поймет, что один файл пользуется большим спросом, например, когда выходит новый эпизод, и поместит его в кэш ОЗУ. Можно ли таким образом использовать NGINX?
Вам даже не о чем беспокоиться - он будет кэширован ОС и помещен в ОЗУ при первом запросе. Он останется в ОЗУ, так как все будут его просить.
Настройте что-нибудь простое и легкое (apache / nginx) и позвольте ему копировать.
Если вам нужна помощь в обслуживании данных (особенно с учетом того, что на сервере не так много оперативной памяти для кеша), поставьте CDN (например, Cloudflare) впереди. Собственно, поскольку Cloudflare имеет бесплатный уровень, положи это вперед!
Я бы не ожидал, что в этом случае будет большая разница между Apache / Nginx / Lighttpd. Я бы ожидал, что Apache будет немного тяжелее с памятью, если вы урежете все модули, которые вам не нужны (а это, вероятно, большинство из них). Лично я выбрал бы Lighttpd просто потому, что я больше знаком с ним для обслуживания статических файлов, и у меня никогда не возникало проблем с ним, несмотря на относительно высокие нагрузки на него.
Что касается вопроса кэширования ОЗУ ... ОС должна делать это автоматически, если у вас достаточно ОЗУ. Вы можете проверить это, подсчитав, сколько времени потребуется для получения N разных файлов по сравнению с получением одного и того же файла N раз, хотя большой разницы может не быть. Видя, что ваши файлы относительно большие, я бы определенно не стал экономить на оперативной памяти вашего сервера, если у вас есть выбор. Скорее всего, в вашем случае вы будете ограничены пропускной способностью сети прежде всего.
Как и на многие вопросы этого типа, лучший ответ: тест, тест, и проверить еще. Довольно легко настроить все три сервера на одном сервере (под разными портами), а затем провести базовый тест с помощью такого инструмента, как ApacheBench (ab, поставляется с Apache) или чего-то подобного. Проверьте загрузку вашего сервера / использование памяти, сравните доступные скорости запросов и посмотрите, какой из них лучше всего подходит для вашей ситуации.
У вас есть примерно следующие варианты:
Первый часто не очень рентабелен, многие общие планы хостинга хорошо работают только со многими небольшими сайтами с относительно низким трафиком, а большие сайты не подходят для этой бизнес-модели, поэтому часто цены разрабатываются так, чтобы вас оттолкнуть, когда вы достигнете определенного предела .
Второй вариант не обязательно самый дешевый, но дает вам большую гибкость, если вы можете позволить себе потратить время на приобретение необходимых навыков и тестирование предлагаемых (программных) конфигураций. Обычно самые быстрые данные поступают из памяти, тогда как SSD, SAS и SATA диски отстают, но также являются самым дешевым хранилищем. Что-то, что кэширует самые популярные / текущие файлы в памяти, должно быть самым быстрым (например, Varnish), хотя Linux обычно в любом случае использует любую неиспользуемую память в качестве дискового кеша, и любой легкий веб-сервер должен быть достаточным для статического контента.
Даже если вы не используете бесплатный CDN, такой как cloudflare, CDN может оказаться намного дешевле, чем варианты 1 и 2.