Во многих популярных CMS уязвимым местом в плане нагрузки на хостинг является фотогалерея. Мне стало интересно, как же себя поведет InstantCMS.
По правде говоря, идея тестирования пришла не просто так, в планах перевести довольно большой сайт, собранный на коленке из нескольких скриптов.
Один мой знакомый говорил — "Не ломай, то что работает", я решил опровергнуть это утверждение.
Для начала я должен убедиться, что Инстант будет легко работать при большом количестве материалов и при приличной аудитории. Началом решил выбрать фотогалерею.
Исходные данные:
InstantCMS 1.7 с настройками "по умолчанию"
localhost с установленной сборкой сервера Vertrigo (Apache 2.0.64, PHP 5.2.17, MySQL 5.0.91)
Заливал картинки в рукопашную через админку используя "Массовую загрузку фото". К двум имеющимся альбомам было создано ещё 200 пустых ("0001"-"0200").
2 теста: 1) много фото в одном альбоме 2) много альбомов
1) В первый альбом залил 2101 фотографию (скрин выше), в тот момент остальных альбомов ещё не было.
Наблюдения: всё отлично летает, навигация по страницам с фотографиями прекрасная, никаких проблем, задержек.
2) Создано 200 новых альбомов, в каждый загружено по 50 фотографий, суммарно 10к, итого 12к фото в фотогалерее.
Наблюдения: уже в процессе наполнения начались тормоза при открытии списка альбомов "localhost/photos", когда была заполнена первая сотня альбомов процесс обновления странички составлял порядка 20 секунд, но это меня не остановило, я продолжил и наполнил все 200 альбомов. По умолчанию в Инстанте все альбомы выводятся единым списком, поэтому итог стал печальным, процесс открытия страницы с альбомами занимает порядка 30 секунд на локалхосте (компьютер 2,8GHz, 2Gb) и то только если открывать одновременно одну страницу. Времени на исполнение php было выделено 60 секунд, при открытии одновременно 2-х страниц с альбомами они открывались только к концу таймаута, при открытии большего кол-ва страниц открывалась максимум одна, остальные падали в эррор.
Хочу спросить совета, куда теперь двигаться, как оптимизировать альбомы? Внутри каждого альбома проблем нет, всё летает.
"По умолчанию" в настройках фотогалереи стоит случайный показ мини-эскизов, даст ли это существенную разгрузку? И ещё, как сделать постраничную нафигацию?
Что порадовало. Количество фотографий практически никак не сказалось на размере базы данных, 12к фоток и 200 альбомов занимают ВСЕГО 1,2 Мегабайта! Так мало я ещё никогда не видел ни в одной популярной cms.
Работа галереи внутри альбомов практически незаметна, что альбом с 2к фото, что 50 (пробовал с разным "Выводом фотографий").
Прошу оказать помощь советами с оптимизацией списка галерей.
Следующей на тесте будет "Доска объявлений".
UPD:
По совету, отключил в настройках вывод эскизов. К сожалению результата не дало, засек на секундомере, окно ниже открывалось 25 секунд, при отключении блок с последними фото эффекта никакого тоже не принесло, теже 25 секунд.
По правде говоря, идея тестирования пришла не просто так, в планах перевести довольно большой сайт, собранный на коленке из нескольких скриптов.
Один мой знакомый говорил — "Не ломай, то что работает", я решил опровергнуть это утверждение.
Для начала я должен убедиться, что Инстант будет легко работать при большом количестве материалов и при приличной аудитории. Началом решил выбрать фотогалерею.
Исходные данные:
InstantCMS 1.7 с настройками "по умолчанию"
localhost с установленной сборкой сервера Vertrigo (Apache 2.0.64, PHP 5.2.17, MySQL 5.0.91)
Заливал картинки в рукопашную через админку используя "Массовую загрузку фото". К двум имеющимся альбомам было создано ещё 200 пустых ("0001"-"0200").
2 теста: 1) много фото в одном альбоме 2) много альбомов
1) В первый альбом залил 2101 фотографию (скрин выше), в тот момент остальных альбомов ещё не было.
Наблюдения: всё отлично летает, навигация по страницам с фотографиями прекрасная, никаких проблем, задержек.
2) Создано 200 новых альбомов, в каждый загружено по 50 фотографий, суммарно 10к, итого 12к фото в фотогалерее.
Наблюдения: уже в процессе наполнения начались тормоза при открытии списка альбомов "localhost/photos", когда была заполнена первая сотня альбомов процесс обновления странички составлял порядка 20 секунд, но это меня не остановило, я продолжил и наполнил все 200 альбомов. По умолчанию в Инстанте все альбомы выводятся единым списком, поэтому итог стал печальным, процесс открытия страницы с альбомами занимает порядка 30 секунд на локалхосте (компьютер 2,8GHz, 2Gb) и то только если открывать одновременно одну страницу. Времени на исполнение php было выделено 60 секунд, при открытии одновременно 2-х страниц с альбомами они открывались только к концу таймаута, при открытии большего кол-ва страниц открывалась максимум одна, остальные падали в эррор.
Хочу спросить совета, куда теперь двигаться, как оптимизировать альбомы? Внутри каждого альбома проблем нет, всё летает.
"По умолчанию" в настройках фотогалереи стоит случайный показ мини-эскизов, даст ли это существенную разгрузку? И ещё, как сделать постраничную нафигацию?
Что порадовало. Количество фотографий практически никак не сказалось на размере базы данных, 12к фоток и 200 альбомов занимают ВСЕГО 1,2 Мегабайта! Так мало я ещё никогда не видел ни в одной популярной cms.
Работа галереи внутри альбомов практически незаметна, что альбом с 2к фото, что 50 (пробовал с разным "Выводом фотографий").
Прошу оказать помощь советами с оптимизацией списка галерей.
Следующей на тесте будет "Доска объявлений".
UPD:
По совету, отключил в настройках вывод эскизов. К сожалению результата не дало, засек на секундомере, окно ниже открывалось 25 секунд, при отключении блок с последними фото эффекта никакого тоже не принесло, теже 25 секунд.
Реклама #
WALTERZ 13 лет назад #
futuristian 13 лет назад #
13 лет назад #
futuristian 13 лет назад #
Fuze 13 лет назад #
2. вы упустили огласить конфигурационные файлы своего софта.
3. необходимы соответствующие индексы в таблицах
4. в каждом конкретном случае необходимо оптимизировать запросы, согласно требований - движок - это в первую очередь универсальность.
5. ваш запрос (который вероятно тормозит) находится в файле \components\photos\model.php
метод getSubAlbums
Madmax 13 лет назад #
Fuze 13 лет назад #
Максим, хорошо)))
Автору: все же я склоняюсь к тому, что у вас проблема с настройкой сервера, ибо 2000 фото это ничто, даже на базе без индексов.
> По совету, отключил в настройках вывод эскизов.
вас не правильно информировали, это вам ничего не даст.
Madmax 13 лет назад #
"Признаю свою вину - меру - степень - глубину )"
futuristian 13 лет назад #
futuristian 13 лет назад #
Fuze 13 лет назад #
futuristian 13 лет назад #
picaboo 13 лет назад #
Fuze 13 лет назад #
picaboo 13 лет назад #
Виктор 13 лет назад #
По идее вот это:
$sql = "SELECT a.*, IFNULL(COUNT(f.id), 0) as content_count
FROM cms_photo_albums a
WHERE (a.parent_id=$parent_id) AND a.published = 1 AND a.NSDiffer = '{$differ}'
ORDER BY $albums_orderby $albums_orderto";
должно дать и общее количество и сортировку.
Вот что со скоростью - надо проверять.
Виктор 13 лет назад #
Должно стать:
futuristian 13 лет назад #
Fuze 13 лет назад #
общего количества это не даст, т.к. не присоединяется таблица с фото
вот так можно:
но общего количества это тоже не даст. Возможно разумней будет считать кол-во отдельными запросами. НО автору поста я рекомендую перенастроить свой mysql сервер, хотя бы с учетом кол-ва доступной оперативной памяти. Погуглите на тему настройка mysql.
futuristian 13 лет назад #