|
|
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
|
когда нагрузка достигает пиковой, то отвиснуть при постоянной внешней нагрузке.. в лице пльзователей или ботов, уже намного труднее..
т.к. пользователи запросы продолжают слать..
зависает - не зависает, это лишь совпадение с нагрузкой..
надо разбираться чтобы не было вообще такой нагрузки..
|