Это реально запустить сценарий, который обслуживает изображения из базы данных?

0

У меня очень динамичный сайт с обзором игр. Все изображения (скриншоты, миниатюры игр, изображения профилей пользователей и т. Д.) Обслуживаются с помощью сценария PHP на сервере. Он принимает идентификатор в качестве параметра и считывает данные из базы данных, выводя их с заголовком содержимого image / [png / jpg]. В самое ближайшее время (менее месяца) мы сотрудничаем с другой компанией. Мы ожидаем, что трафик на сайт резко возрастет.

По моим оценкам, наш трафик увеличится примерно до 50 тысяч в день.

В прошлом я сталкивался с этой ошибкой с нашего хост-сервера: вы достигли предела количества скриптов / процессов, выполняемых в секунду. Я посмотрел его и обнаружил, что у нас есть ограничение в 20 одновременных скриптов (php, cgi и т. Д.) В любой момент времени. В среднем каждая страница на нашем сайте имеет 50 изображений.

Мой первый вопрос: разумный ли это предел? Стоит ли ожидать такого рода ограничений от других хостинговых решений?

Второй вопрос:

Рекомендуется ли эта настройка для обслуживания изображений? Я могу попытаться получить сервер, у которого нет этого ограничения, но я обеспокоен, масштабируется ли эта установка, если мы получаем еще больше трафика?

Альтернативы, которые я могу придумать:

  • Сохраните изображение в виде файла на сервере. База данных будет хранить относительный путь к изображению вместо идентификатора изображения. Таким образом, по крайней мере, каждое изображение не будет динамическим сценарием, который должен запускать сервер.
  • Запустите несколько серверов баз данных изображений, которые обслуживают только изображения. Как будет работать балансировка нагрузки?

Любая помощь будет оценена.

l3utterfly
источник

Ответы:

2

Я думаю, что наиболее важным в масштабировании обслуживания изображений является кэширование впереди. Это может быть Varnish или какой-либо сервис CDN. Если кешируется хорошо, то бэкэнд не так важен для небольших проектов. Это может быть база данных довольно хорошо. Хотя по сравнению со статическими файлами он имеет некоторые накладные расходы, он может обеспечить некоторые базовые решения по масштабируемости, такие как репликация в несколько баз данных и управляемость.

Главное, чтобы приложение было встроено заранее, чтобы при изменении любого изображения изменялся и его URL-адрес. И тогда вы сможете кэшировать все до бесконечности :)

Казимирас Алиулис
источник