Необходима большая Wiki-настройка, кэширование / индексирование сервера со временем замедляется

Во-первых, я хотел бы извиниться за длинный пост, но терпите меня, я считаю, что все это необходимо ….

Я использую DokuWiki (V: 2014-09-29) на своем веб-сайте–http://nofusscomputing.com/wiki/, главным образом для документирования моей собственной сети (закрыто) или для оказания помощи людям с любыми услугами или функциями, которые я предоставляю (только для чтения). Все вики генерируют свою собственную карту сайта, на которую ссылается мой индекс сайта. теперь некоторые из этих вики будут содержать более 50 000 страниц, и, насколько мне известно, DokuWiki не соответствует протоколу карты сайта для этих больших вики, в этом случае я перейду этот мост позже. Я использую расширение Search index Manager для индексации и кэширования этого сайта, чтобы ускорить время загрузки.

Моя установка состоит из основной вики-фермы и под-вики в качестве информационных баз данных, настроенных как животные, т.е. http://nofusscomputing.com/database/application/home. Эта настройка позволяет мне открывать / закрывать и выпускать каждый компонент моих информационных баз данных при необходимости. Текущий размер составляет около 40 страниц для основной вики и вышеупомянутого животного с 65. Основная причина использования вики вместо создания страниц моего собственного сайта довольно проста …. чтобы снизить затраты, а DokuWiki проста, хорошо разработана и в основном отвечал моим потребностям, и я хотел бы избежать сайта, который забивает сервер MySQL, если мне действительно не нужно.

Фон
В свободное время я пишу программное обеспечение для Windows, которое в конечном итоге поможет любому пользователю ПК. Одна часть этого программного обеспечения собирает данные о системе компьютера, на котором она установлена; эти данные в свою очередь хранятся в базе данных MySQL, а затем анализируются моим собственным программным обеспечением для динамического создания вики-страниц. В настоящее время у меня нет проблем с получением данных из базы данных и программным созданием вики-страниц, поэтому я создаю презентабельную и, надеюсь, полезную информацию.

вопрос
Это новое вики животное предоставит информацию о файле. Начальный размер будет около 200 000 страниц, и я ожидаю, что он вырастет до миллионов.

На выходных я начал переносить данные в новую информационную базу данных, я написал сценарии, необходимые для извлечения данных из MySQL для создания страниц (первоначальное создание страницы было всего 5000 страниц), это была достаточно простая задача …. но. …. индексирование / кэширование было немного медленным.

хорошо … очень быстро сузил его до веб-сервера с очень маленькими аппаратными характеристиками (QNAP TS-110 … не смейтесь слишком громко, он мне хорошо послужил), поэтому я вытащил HP DC7900 SFF (Intel core2 Duo E8400 3,00 ГГц, 4 ГБ ОЗУ, 1 ТБ жесткого диска (без Raid) и WIN7 с WAMP2) и мой сервер Intel Bare (Intel XEON старый, вероятно, 2,8 ГГц (четырехъядерный процессор), 8 ГБ ОЗУ, RAID 1 WIN SVR 2003 + WAMP2) после Многие часы тестирования Intel Server потерпели неудачу, но я все еще был доволен производительностью HP DC7900. Все машины имели одинаковую общую деградацию индексации / кэширования. Со временем время кэширования / индексации уменьшается до такой степени, что, если бы я проиндексировал намного больше 5000 страниц, моя вики была бы в постоянном состоянии индексирования / кэширования новых страниц вики, конечно, я что-то упустил …….

Первоначальная настройка пространства имен основывалась на имени файла, которое является хэшем SHA256 для рассматриваемого файла, хеш был разбит на 2 символа в подпапках, заканчивающихся на глубине около 19-20 папок, это, кстати, нет, нет ….. слишком много папок для сканирования для индексации и работает медленно, но на положительном уровне не должно быть не более 256 объектов в папке. в конце и просто для тестирования я решил использовать первые две шестнадцатеричные цифры хеша в качестве подпапки, а затем поместить файл внутрь. до сих пор не знаю, как я собираюсь настроить структуру папок, кроме попыток найти способ сохранить ее не выше, чем около 16 000-17 000 объектов в папке, так как именно тогда я начал замечать, что машины начинают замедляться отвалы.

Результаты
Время индексировать / кэшировать 5000 страниц путем подсчета записей журнала веб-сервера
Qnap TS110 через 8 часов я перестал индексировать, начал индексировать около 1 страницы каждые 2-3 секунды.
HP DC7900 первые 10 минут была около 1.381 страниц / секунду. 5000Pages занимает 4630Secs или 1.0799Pages / Second, время загрузки страницы почти мгновенно.
Сервер Intel только немного быстрее и закончил примерно в то же время. Первые 10 минут были около 3.121Pages / Second. 5000Pages занимает 2015Secs или 2.4813Pages / Second, время загрузки страницы почти мгновенно.

Вопрос
Оба сервера со временем деградируют, есть ли способ это исправить? или кто-нибудь знает способ улучшить то, что я пытаюсь достичь?

1

Решение

Я не уверен, подходит ли этот вопрос для StackOverflow. Наверное, лучше спросить на форумах DokuWiki или в списке рассылки.

Несколько мыслей по этому поводу:

  • 200 тыс. Страниц — это много
  • Индекс DokuWiki использует один файл для хранения списка всех страниц (data / index / page.idx)
  • Этот индекс страницы читается в массив при каждом доступе к индексу, что, скорее всего, является одним из узких мест здесь
  • Вы ничего не сказали о содержании своих страниц, но я предполагаю, что все они могут быть очень похожими, что приведет к разрастанию отдельных индексных файлов вместо распространения индекса по разным файлам (как это происходит на страницах на естественном языке).
  • Вы не должны использовать веб-плагин searchindex для индексации, а использовать инструмент командной строки bin / indexer.php, чтобы избежать накладных расходов на многие запросы AJAX.
  • в конце концов, может быть, лучше переключиться на один из доступных поисковых плагинов, которые используют специальный бэкэнд поисковой системы, такой как SOLR или Sphinx
  • обычно производительность может быть улучшена за счет использования быстрого хранилища (SSD) и наличия достаточного объема ОЗУ (для кэширования файловой системы)
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]