Регистрация
Вход через соцсети
Восстановление пароля

Поиск кладет сервер

Новый топик
15.05.2007, 10:46
Ответить | Цитировать
Гость
Гость

Добрый день!

Возникла следующая проблема - при индексации сайта модулем поиска периодически ложится сервер. В техподдержке сообщили, что не хватает оперативки - на момент отключения сайт запрашивает до 80 метров. По логам видно, что происходит это в процессе индексации сайта модулем поиска. Причем, иногда индексация проходит нормально (в среднем - за 2 часа), а иногда - растягивается почти на сутки со все возрастающим ресурсопотреблением.

Индексация запускается вечером, когда "живых" пользователей на сайте практически нет. Система - NetCat 2.4. Хостинг - выделенный виртуальный сервер с оперативкой 16 мб. Сайт - форум на неткатовском модуле "форум", около 1500 топиков.

Вопросы:
- что может вызывать такое поведение системы?
- как с этим бороться?

С уважением.
15.05.2007, 11:19
Ответить | Цитировать
h/z

Зарегистрирован:
2007-02-06
Сообщений: 755

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

1) просмотреть макеты и шаблоны сайта на предмет избыточных запросов к базе данных
2) попробовать в файле /netcat/modules/search/crontab.php поставить sleep() в цикле перебора ссылок
3) еще желательно убедиться что на хостинге стоят актуальные свежие версии php и mysql, хотя врядли это утечка памяти в скриптах
4) одно замечание: если внутри opt или opt_case, даже если условие не сработало, есть s_list_class то он всегда делает выборку, но показывает только исходя из логики сравнения в opt(opt_case).
если надо выборку s_list_class (или что-то подобное) совершать по какому-то условию (в макетах, шаблонах)
то лучше использовать тенарный логический оператор ".(true?"":"")."
в это случае избыточных вызовов происходит не будет
15.05.2007, 11:45
Ответить | Цитировать
Гость
Гость

h/z писал(а):
большой объем оперативки может уходить на неоптимальные выборки из базы данных.
т.к. во время индексации запрашиваются и собираются хтмл странички, одна за другой без перерыва,
Непонятно только, почему иногда виснет, а иногда - нет... От чего это может зависеть? Ведь сайт, в принципе, не меняется от раза к разу.

h/z писал(а):
то нагрузка может вырасти до пиковой, и более не падать т.к. кроме индексирующего скрипта сайт могут запрашивать и другие.. а при пиковой нагрузке время обработки возрастает значительно.
Да, помимо собственного модуля в логах в избытке засветились боты поисковиков. Они вполне могли создавать дополнительную нагрузку.

h/z писал(а):

1) просмотреть макеты и шаблоны сайта на предмет избыточных запросов к базе данных
2) попробовать в файле /netcat/modules/search/crontab.php поставить sleep() в цикле перебора ссылок
3) еще желательно убедиться что на хостинге стоят актуальные свежие версии php и mysql, хотя врядли это утечка памяти в скриптах
4) одно замечание: если внутри opt или opt_case, даже если условие не сработало, есть s_list_class то он всегда делает выборку, но показывает только исходя из логики сравнения в opt(opt_case).
если надо выборку s_list_class (или что-то подобное) совершать по какому-то условию (в макетах, шаблонах)
то лучше использовать тенарный логический оператор ".(true?"":"")."
в это случае избыточных вызовов происходит не будет

Ок, спасибо, попробуем.
15.05.2007, 15:12
Ответить | Цитировать
h/z

Зарегистрирован:
2007-02-06
Сообщений: 755

когда нагрузка достигает пиковой, то отвиснуть при постоянной внешней нагрузке.. в лице пльзователей или ботов, уже намного труднее..
т.к. пользователи запросы продолжают слать..

зависает - не зависает, это лишь совпадение с нагрузкой..
надо разбираться чтобы не было вообще такой нагрузки..
198 196 2007-05-15 15:12:11 10011
Описание проекта