seowin
26.11.2015 - 18:39
Задача следующая - нужно максимально быстро и безопасно в плане нагрузки генерировать большое количество (около 1 млн.) html файлов на лету и сохранять их на диск.
Файлы генерируются на основе шаблона и строк текста. По 30-50 строк на файл.
Вопрос: откуда лучше делать выборку этих строк (можно подряд идущих) из БД или же из txt файла, чтобы скорость выборки и генерации была наиболее высокой и от нагрузки не падал сервер?
При генерации каждого файла - идет новая выборка этих 30-50 строк.
Как часто нужно это делать?
Если один раз – то абсолютно не важно как это делать.
seowin
26.11.2015 - 19:09
30-50 раз подряд по 250к - 1млн файлов.
Периодичность - раз в несколько дней
Цитата (seowin @ 26.11.2015 - 18:39) |
Вопрос: откуда лучше делать выборку этих строк (можно подряд идущих) из БД или же из txt файла, чтобы скорость выборки и генерации была наиболее высокой и от нагрузки не падал сервер? |
Ну лучше всего из какого-нибудь in-memory хранилища. Типа Redis.
Из БД (MySQL видимо) и из файла тоже можно в принципе. Можно доставать строки не перед кадой генерацией файла (по 30-50), а доставать по 300-500 и генерировать 10 файлов...
seowin
27.11.2015 - 11:38
В общем, задача сейчас больше свелась к тому, как ускорить процесс генерации.
Понял, что создавать 100500 html файлов на сервере не очень хорошая затея, решил, что лучше помещать все в SQLLite базу. И потом уже генерировать страницу на лету на основе шаблона.
Вообще, цель всего этого - генерация страниц для сайтов. Т.е. каждый сайт будет иметь 250к - 1кк страниц.
Встает вопрос, как ускорить процесс записи в SQLLite базу (для каждого сайта база своя) и не положить сервер, если за раз мы генерим, скажем, 50 сайтов.
Как я предполагаю, поочередно производить запись в лайт-базу для каждого сайта будет очень долго.
Т.е. получается такая схема:
Есть SQL база под управлением MySQL. В ней несколько таблиц. В каждой таблице 1кк-3кк строк.
Необходимо сгенерировать 50 сайтов за раз, в каждом сайте по 250к - 1 кк страниц.
Для каждой страницы идет выборка из нескольких таблиц SQL базы, текст обрабатывается и записывается в SQlLite базу каждого сайта.
Как лучше оптимизировать все это дело, чтобы и скорость была максимально возможной, и в тоже время сервер не падал?
Игорь_Vasinsky
27.11.2015 - 11:47
я предлагаю за такие сайты - ставить к стенке.
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Valick
27.11.2015 - 12:51
Игорь_Vasinsky, а сложить 2+2 не?
большое количество (около 1 млн.) html файлов +
seowin
_____________
Стимулятор ~yoomoney - 41001303250491
icedfox
27.11.2015 - 18:07
seowin, по моему мнению вы начинаете смотреть не с той стороны на проблему.
В вашем текущем варианте выборка из базы для 1 млн файлов не самое большое зло, у вас все может упереться в запись/чтение диска.
Как бы я начал делать в вашем случае.
1. делаю карту сайта с линками и кормлю ее ПС.
2. При открытии страницы проверяем наличие файла, если нет, то делаем запрос к базе и создаем файл для страницы , затем его отдаем.
Вот и все. По факту это называется кеширвоание
В вашем случае это уход от проблемы с мгновенной нагрузкой на сервер. файлы будут создаваться постепенно. по мере обращения к ним.
П.С. SQLLite не лучшее решение для ваших задач.
seowin
27.11.2015 - 19:35
Цитата (icedfox @ 27.11.2015 - 18:07) |
seowin, по моему мнению вы начинаете смотреть не с той стороны на проблему. В вашем текущем варианте выборка из базы для 1 млн файлов не самое большое зло, у вас все может упереться в запись/чтение диска.
Как бы я начал делать в вашем случае. 1. делаю карту сайта с линками и кормлю ее ПС. 2. При открытии страницы проверяем наличие файла, если нет, то делаем запрос к базе и создаем файл для страницы , затем его отдаем.
Вот и все. По факту это называется кеширвоание В вашем случае это уход от проблемы с мгновенной нагрузкой на сервер. файлы будут создаваться постепенно. по мере обращения к ним.
П.С. SQLLite не лучшее решение для ваших задач. |
Спасибо за совет.
Но тут есть 2 проблемы:
1. Важно, чтобы в момент захода пользователя/бота на страницу, страница открывалась как можно быстрее
2. Если скрормить карту сайта боту ПС, получается то же самое, что если бы я генерил страницы до того, как скармливать их боту.
Так как бот будет переходить по ссылкам и страницы также будут генерироваться. Да и к тому же с задержкой.
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.