Работа Яси на слабом ресурсе

Я поставил YaCy на удаленном виртуальном сервере со следующими параметрами:
Процессор: 1 ядро, 1GHz
память: 1Gb
диск: 32Gb

Для Яси было выделено:
RAM: 870Mb, минимум: 40Mb
диск D: 26Mb

Версия Яси: 1.924/10079

Целевая задача: длительное индексирование русскозычной части Интернета (а не отдельных избранных сайтов).

Я взял стартовым адресом один из рейтингов Рунета, страницы которого содержали около 4 тыс ссылок на различные сайты.

Я запустил краулер в режиме “Expert Crawl”, установив “Unlimited crawl depth for URLs matching with” для доменов ru и su (было написано корректное регулярное выражение).

По моим предположениям, краулер должен был отправиться в длительное блуждание по всему Рунету. Однако, похоже он пошел параллельно по всем ссылкам, которые нашел на стартовом сайте. Это было видно через “Index Browser”.
Очень скоро он исчерпал всю выделенную память и остановился.

Я экспериментировал около 3 месяцев, и ни разу краулер не проработал самостоятельно более суток. Требовался ручной сброс переполнения памяти, иногда очистка индекса, иногда полный рестарт.

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

People, why doesn’t anyone answer me? More than a month has passed.
After all, you have your own peer - how did you set it up? Thousands of peers are working in the network.
Why doesn’t anyone want to tell?

Previously, the forum allowed to write in any language.
Just in case, I give a translation of my post:

================================

I put YaCy on a remote virtual server with the following parameters:
Processor: 1 core, 1GHZ
Memory: 1GB
Disk: 32GB

For YaCy it was highlighted:
RAM: 870MB, minimum: 40MB
Disk D: 26MB

YaCy version: 1.924/10079

Target task: prolonged indexing of the Russian-language part of the Internet (and not individual selected sites).

I took one of the Runet ratings as a starting address, the pages of which contained about 4 thousand links to various sites.

I launched Crawler in the “Expert Crawl” mode by installing “Unlimited Crawl Depth for urls Matching with” for domains RU and SU (the correct regular expression was written).

According to my assumptions, Crawler was supposed to go on long wandering throughout the Runet. However, it seems he went parallel of all the links that he found on the starting site. This was evident through the Index Browser.
Very soon, he exhausted all the allocated memory and paused.

I experimented for about 3 months, and Crawler never worked on his own for more than a day. A manual reset of memory exhausted was required, sometimes the cleaning of the index, sometimes a complete restart.

Please tell me what the settings should be for the above conditions, so that Crawler continues to work, albeit slowly, but autonomously and stably, without requiring incessant manual intervention?

Поскольку мне так никто и не ответил, пришлось решать проблему самостоятельно.
Вероятно, я решил ее очень криво, но что делать: ведь как будет правильно - никто не научил.

Итак.
Я экспериментировал с YaCy в общем счете более полугода, но мне так и не удалось найти сочетание настроек, обеспечивающее устойчивую и безостановочную работу на выше сказанном ресурсе. Память продолжала переполняться и краулер останавливался. А поскольку YaCy не может самостоятельно нажать кнопку сброса переполнения памяти, когда она появляется, я написал внешнюю утилиту, которая делает это.

Лицензия:
бесплатно (FREEWARE), без каких либо условий и гарантий. Вы ИМЕЕТЕ право изменять и модифицировать код и пользоваться утилитой на свое собственное усмотрение и ответственность.

Утилита разрабатывалась под Windows XP для YaCy 1.924/10079

Поскольку форум не позволяет присоединять вложения, пришлось закинуть ZIP на файлообменник, вот ссылка:
https://ru.files.fm/u/2uhps585t
В архив включены также исходники.

Файлообменник хранит загруженное 2 месяца. Если уважаемая Администрация этого сайта ценит проделанную мной работу, пусть админы заберут и поместят архив утилиты для общего использования здесь на форум, или в другое постоянно доступное место.

Как работает утилита.

Утилита Clear.exe предназначена для использования на сервере в полностью автоматическом режиме.
Она общается с YaCy через localhost и заданный порт. Через каждые 5 минут она обращается к административному интерфейсу и проверяет, не возникло ли переполнение памяти. Если память исчерпана, утилита нажимает кнопку сброса переполнения памяти.
Кроме того, утилита проверяет, в работе ли краулеры. Если краулер приостановлен, то снимает его с паузы, если диск не переполнен.
Если дисковая квота исчерпана (следовательно запускать краулер дальше нет смысла), утилита выдерживает паузу 6 часов + время, которое перед этим проработал краулер индексируя, а затем очищает дисковое пространство, удалением всего индекса, после чего рестартует Windows. (Предполагается, что на сервере настроен автоматический запуск YaCy в процессе рестарта.)
Для чего нужен рестарт?
Как я обнаружил экспериментальным путем, очистка индекса не освобождает дисковое пространство полностью. Файлы продолжают накапливаться в каталоге …\DATA\INDEX\freeworld\SEGMENTS\default
Эти файлы заняты и их невозможно удалить просто так. Поэтому рестартуем Windows, а затем стираем содержимое этого каталога раньше, чем будет запущена YaCy.

Утилита еще производит рестарт Windows при зависании YaCy, если административный интерфейс недоступен в течение 20 мин, а также в случае других длительных или многочисленных ошибок. Например, если скорость индексации равна нулю в течение 6 часов. (Очевидно, что краулер завис, хотя формально он не в паузе).

Возможно, Вас шокирует полное удаление накопленного индекса. А что еще можно сделать на ограниченном ресурсе, если дискового пространства больше нет? Если хотим индексировать новое, приходится проститься со старым.
Тем более, что через 14 дней индекс всё равно уже неактуален.

Как запускать утилиту.

Файл Clear.exe загружаем на удаленный сервер, на котором запущен узел YaCy, в произвольно выбранный каталог (специальная инсталляция не нужна).
Для своего запуска утилита требует параметром число: номер порта, по которому работает YaCy. (Этот номер можно найти на самой первой странице ConfigBasic.html, обычно 8090.)
Если просто кликнуть по Clear.exe, то она откроет окошко с краткой справкой и указанием, что требуется номер порта, и больше не делает ничего.
Если при запуске был задан параметром правильный номер порта, то утилита входит в нормальный фоновый режим, не показывая никакого окна. (А зачем оно на удаленном сервере, где на него некому смотреть?)

Фоновый режим работы утилиты требует, чтобы она была запущена отдельным процессом: самостоятельным ярлыком или отдельным заданием Планировщика Windows.
Если Вы впишете в начало .bat-файла простой запуск Clear.exe, то утилита запустится, но дальнейшее выполнение .bat-файла ожидает, когда утилита закончится, - а она в дежурном режиме, не кончается. Так что создастся впечатление, что всё зависло. (Можно снять процесс clear.exe через Диспетчер задач.)
Чтобы такого не происходило, в .bat-файле утилиту Clear.exe нужно запускать при помощи команды start. Эта команда не ожидает завершения и продолжает дальнейшее выполнение .bat .

Я реализовал на сервере запуск утилиты, вставив две строчки в начало файла startYACY.bat:

start [path]\Clear.exe 8090
del /q [path]\DATA\INDEX\freeworld\SEGMENTS\default\*.*

где [path] означает путь до файла или до указанного каталога.
Если у Вас YaCy работает через другой порт, то пишите его номер вместо 8090.

Вторая строчка с командой del /q … -это удаление всех файлов в указанном каталоге. Если у Вас пути YaCy другие, Вам придется самостоятельно выяснить, в каком именно каталоге накапливаются файлы, и поставить в очистку его.

Напомню, что если Вы делаете запуск чего-либо через Планировщик Windows, то проверяйте “Дополнительные параметры” - по умолчанию там стоит галочка на ограничение длительности выполнения 72 часа, ее надо снять.

Чтобы утилита Clear.exe могла общаться с YaCy, доступ по localhost не должен быть запаролен.

Хочу также отметить, что главная цель - произвольное хождение краулера по Интернету мной еще не достигнута.

Я пришел к мнению, что YaCy изначально проектировалась под задачу индексации некоторого количества избранных сайтов, а не как глобальный поисковик. Вероятно предполагалось, что каждый владелец сайта запустит собственный узел YaCy для индексации своих собственных сайтов, и таким образом окажется в итоге проиндексирована большая часть всех сайтов в целом.
Но с моей точки зрения, Ява для такой задачи - не очень удачный выбор. Вот если бы система была написана на PHP, так что ее можно было бы без вопросов поставить на любой сайтовый хостинг - я думаю, дело пошло бы горазо бодрее!..

Вероятно на мощном узле с большим ресурсом YaCy работает гораздо эффективнее, но на моем слабом узле, даже с опцией неограниченной глубины индексирования, краулер бесконечно гулять не может: в конечном итоге бросает всё, обнуляет очередь и останавливается.
Кроме того, с этим количеством памяти YaCy не может обработать базу индекса размером существенно больше 8Gb - начинает виснуть и вылетать. Так что я поставил эту дисковую квоту: 8 гиг, хотя оставалось еще много свободного дискового пространства.
Запас свободной памяти, который вначале я пытался сократить до 40 Мб пришлось снова расширить до 55 Mb. Выяснилось, что меньше 50Mb его делать не следует: тормозит и виснет интерфейс.

i did never understand what ‘\DATA\INDEX\freeworld\SEGMENTS\default*.*’ is for. do you know?

I do not know what the files in this directory are for.
But the disk space needed to be cleared, so these files have to be deleted.
They accumulate and can occupy significant space.

Yesterday, I finally found out!
As I was crawling, the size of ‘\DATA\INDEX\freeworld\SEGMENTS\default*.*’ was growing constantly. Start-up was slower and slower, as system was somehow dealing with all these files (merging them, compressing etc.) and every approximately 1 000 000 pages I had to increase RAM for 1 GB, as these files were probably kept in memory.
Yesterday I had to delete local RWIs (Index administration>URL database administration>Cleanup>Delete RWI Index (DHT transmission words)) and all of the files disappeared, startup started to be quicker and memory footprint decreased radically.
So my theory is, these files are RWIs ready to be sent to other peers. Very poorly (at least expensively) managed and clowly degrading the performance of an instance.