Перейти к контенту
  • 0

Как убрать нагрузку на сервер?


Вопрос

Добрый день. Столкнулась с такой проблемой:

имеем 2 одинаковых форума, одному уже 3 года исполнится. Больше года гнездимся на одном хостинге, к работе которого претензий не имеем, цены тоже приемлемы. В один прекрасный момент получаем письмо от хостера, про увеличенную нагрузку на CPU сервера от одного из форумов. И через определенный период нам закрывают аккаунт. После некоторой переписки сайт заработал, но по адресу, где расположен форум зайти нельзя, выдает ошибку 403.

 

Вот что пишет сам хостер:

У вас сдесь сессия передается не через кукис, а прямо в строке запроса,

потому поисковики бегают по этому форуму кругами дико расходуя ресурсы.

 

Если форум вам не нужен - впишите в его .htaccess

deny from all

 

короче вам нужно чтобы в ссылках на форуме

индекс.пхп?s= 7 8 2 4 6 2 6 6 b 4 8 d 1 5 6 f 0 2 7 6 2 2 e 0 5 2 b 0 2 9 8 ashowforum=2

пропало это самое

s=78246266b48d156f027622e052b0298a

 

(форум нам нужен, вообщето)

Как это решить? Внятного ответа от техподдержки я не получила, ответ был достаточно жесток, мол, они не будут помогать в том, чтоб помочь нам платить хостеру меньше. И порекомендовали перейти на тариф выше. Я бы и перешла, только считаю, что работа форума с такой нагрузкой ненормальна.

 

Спасибо заранее.

Ссылка на комментарий
Поделиться на других сайтах

  • Ответы 126
  • Создана
  • Последний ответ

Лучшие авторы в этом вопросе

Лучшие авторы в этом вопросе

Загружено фотографий

Рекомендуемые сообщения

  • 0

Проверил всё что можно...

Глюков вроде нигде нет. Исключение - при "выходе" из аккаунта выкидывает "сервер занят". Но при этом выход происходит. Ошибка некритичная... Но для чистоты эффекта может добавить в код исключение для act=Login? Пользователи часто набивают логин\пароль с пулемётной скоростью.

 

Время клика стоит 1 сек. ( $no_duble_click = 1; ), имхо в самый раз. Вредные боты фигачат гораздо чаще, гостю-человеку вполне комфортно.

 

В сообщении "сервер занят" (файл /cache/lang_cache/ru/lang_error.php) я руками дописал возможную причину ошибки:

 

'server_too_busy' =>

 

"Сервер не может в данное время выполнить ваш запрос.

Попробуйте обновить страницу в браузере.

Появление этой ошибки возможно связано с тем, что вы слишком часто кликаете по форуму и сервер может принять Вас за бота. Время между кликами не должно быть менее 1 секунды.

Пожалуйста авторизуйтесь или зарегистрируйтесь, чтобы снять это ограничение."

 

Лишний повод для пользователя пройти регистрацию )).

 

Из глупых предположений... Спам-бот при регистрации с какой скоростью кликает?

Изменено пользователем 4apai
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Глюков вроде нигде нет. Исключение - при "выходе" из аккаунта выкидывает "сервер занят". Но при этом выход происходит. Ошибка некритичная...

Там редирект без ожидания.

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

 

 

Из глупых предположений... Спам-бот при регистрации с какой скоростью кликает?

От спамботов нужна другая защита. Эта лишь для личботов работает.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
FatCat, так ты поправил код и с того сообщения можно пробовать ставить ?
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Спасибо за объясниния и за теме. Как раз на Нике (тариф 301) с перегрузкой по оперативе столкнулся... вернее, часто всё просто отваливалось и сайт и форум не были доступны в прайм-тайм, да и не только... по 20-30 мин. в день... В саппорте долго не могли объяснить причину проблем. В конце-концов выяснилось, что проблема в перегрузке оперативы... Судя по графику, порой достигает 700-750Мб, при лимите в 192 Мб. Хотя, из скриптов только форум средней посещаемости... Вот и не знаю, толи хостинг мутит, толи надо серьёзно браться за оптимизацию форума.

Попробую реализовать что-то из предложенного в этой теме, отпишусь. Надеюсь, обсуждение данной проблемы не умрёт, хотелось бы услышать ещё советы и мнения.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Egor.M, у меня тот же тариф и тот же хостинг, но до 700-750Мб я не доходил, но до 500-600 частенько

Сейчас вроде снизилась нагрузка

Но я все большие сообщения разбил на маленькие и поставил некоторые запладки из этой темы, как советовали

Сейчас иногда превышает за сутки 500МБ, но пару раз, а то было постоянно выше

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Док, а как именно разбил сообщения? И что именно посоветуете поставить из этой темы, раз уж уже испытали всё, чтобы мне не всё сразу не тестить?

 

В саппорте всем советуют ставить ngnix, отключать лишнее модули, смотреть, что сколько занимает памяти (используя SSH). Модули многие отключил, да эффекта не так много... На счёт ngnix, даже не знаю...

 

Интересно, сколько на других хостингах средний форум занимает памяти? (Если верить счётчикам, то у меня где-то 5000-5500 просмотров страниц форума в сутки, ~250 сообщений в день).

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Но у вас уже серьезный форум, у меня очень мало народу и сообщений

Вообще наверное это хостер хитрит, так как у меня было 4 сайта на одном тарифе

2 было на джамале и 2 на ИПБ, так нагрузка была 520 памяти

Все удалил и оставил 1 джамалу и один ИПБ, так нагрузка стала 490, а иногда и за 500 валит

Поставил я из этой темы htaccess, то что советовали там прописать и robots взял из темы

Вчера был скачек на 510 памяти, а так в пределах 400, но у меня народу на форуме 5 пользователей и также гостей, одновременное прибывание

Но с robots я перестарался и из за него меня перестали сканировать, за сутки Google Bot 9, MSN Bot 6, Yahoo Bot 4, яндекс вообще пропал

Сегодня изменил robots, посмотрим что будет дальше

 

На форуме 5 человек и время 12 ночи, а то и 3 человека было, так у меня показало использования памяти 508 и сразу в логах выдало ошибку

Код ошибки: 2006
Сообщение сервера: MySQL server has gone away
IP-адрес клиента: 87.118.94.70
Страница: /forums/index.php?showforum=12
Запрос: UPDATE ibf_cache_store SET cs_array=1,cs_value='a:43:{i:1;a:7:{s:2:\"id\";s:1:\"1\";s:12:\"sub_can_post\";s:1:\"0\";s:4:\"name\";s:5:\"Гараж\";s:9:\"parent_id\";s:2:\"-1

 

Поэтому так думаю, что это хостер хитрит

Использую PHP4.4.9, а если включаю PHP5.2.9 , то сразу зашкаливает за 500 использования памяти

Видимо для него Ипб слишком тяжолый

 

Так что из темы вам снизит максимум 50-100 использования памяти, но до нормы, как положено 192МБ, все равно не поможет

У меня даже ночью в 04.00 и то показывает 250мб

 

А сообщения у меня были очень большие, так как у меня технический форум и все делал в одном сообщение

У вас не думаю что есть такие большые, тут есть в теме ссылка на сообщение, вот оно сейчас разбито на 3 или 4, а было одно

Можете глянуть на предыдущих страница

 

Вот мои показатели, это за год

post-70672-1244563023_thumb.png

А это за неделю

post-70672-1244563014_thumb.png

 

За месяц

post-70672-1244563133_thumb.png

За сутки

post-70672-1244563181_thumb.png

Изменено пользователем Док
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Док, вот, и у меня в логах такая же ерунда получается... (Код 2006) Я так понимаю, из-за перегрузок какой-то таймаут соединения случается...

 

В данный момент, из скриптов вообще только IPB... Сейчас 12-15 юзеров онлайн, + 5-8 гостей (не самый посещаемый день или я что-то перемудрил), несколько определившихся ботов... память уже ближе к 480-500... То есть, ещё чуть-чуть и перегруз. Речи о 192 и быть не может.

 

Пока отключил лишние модули апача, в настройках форума убрал запись посещений ботов. Кстати, включил gzip_module в настройках апача (он по умолчанию офф).

Юзер-агенты роботов давно прописаны, пока не менял. Вот, менять роботс.тхт действительно стрёмно... В теме видел пример, там значится:

 

Disallow: /board/lofiversion/
Disallow: /board/index.php?act=idx

Эти строки, я так понял, запрещают индексировать текстовую версию (она же хорошо съедается вроде) и idx - это же главная страница форума? Я, правда, не оч. сильно в этом разбираюсь, надеюсь, меня поправят, если что.

 

post-70616-1244565667_thumb.png

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Ситуации похожи

Этот код запрещает штудировать lofiversion, а вот второй не знаю

Сегодня только сам понял, что запретил lofiversion

Вообщем будем бороться дальше, пока хостер не выгонит :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Док, кстати, как Ваш форум в поиске? У меня Гугл не вылезает с форума, но позиции, прямо скажем, не самые интересные, даже по очевидным запросам... Есть мнение, что из-за плохой доступности и низкой скорости доступа к форуму, просто не выйти... (проиндексировано-то много, вроде). Тоже неприятная сторона перегрузок...

 

В общем, держите в курсе, посмотрим, что будет. Рад, что нашёл заинтересованных в решении проблемы людей.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

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

Видимо из за нагрузки, роботы не видят их

 

Тоже держите в курсе, по вашей инфе попробую отключить моды на хостинге в панели

Если что будет у меня, то тоже отпишу

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Да, у меня тоже в логах, ошибка 302... в строках, где Яндекс и Гугл... Хотя, ссылки рабочие... Видимо, действительно нагрузка... Может, ещё что-то, конечно... =/
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Решил написать в этой теме, раз она стала популярной по совета

 

Хотел спросить про ботов

Нашел в этой теме http://forums.ibresource.ru/index.php?show...29&hl=Yahoo

Что ботов можно убрать с форума, только блокировкой через бан по айпи

Так понимаю, что Yahoo Bot и MSN Bot, они иностранные и для русских сайтов они пользы не приносят, а только могут давать нагрузку

Если это так, то зачем они нужны, лучше их забанить

Вопрос, как их правильно забанить, чтобы случайно не пострадали другие пользователи ?

Сам часто попадал на сайты, там не был не раз, а уже гостем пишет, что вы забанены на этом фооруме

Так понимаю, что мой айпишник попал в бан, то ли людей банили, то ли ботов

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

 

И в одном робот тексте нашел вот такую строку

Host: www.адрес сайта.ru

# Inktomi (Anzwers, AOL, Canada.com, Hotbot, MSN, etc.)

User-agent: slurp

Думал что она банит указаных ботов на форуме, но оказалось не так

Вставлял эту строку и робот MSN как ходил, так и штудировал форум

 

Может кто знает какие еще способы, как заблокировать не нужных роботов и тем самым еще снизить нагрузку на сервер ?

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Может кто знает какие еще способы, как заблокировать не нужных роботов и тем самым еще снизить нагрузку на сервер ?

По юзерагенту через .htaccess наверное проще всего будет:

SetEnvIfNoCase User-Agent "^Yahoo" bad_bot
<Limit GET POST HEAD>
Order Allow,Deny
Allow from all
Deny from env=bad_bot
</Limit>

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

Если уже есть лимит, просто добавляешь в имеющийся лимит строку

Deny from env=bad_bot

и делаешь строки под каждого бота перед открывающим лимитом.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Не могу сообразить

У меня в .htaccess есть такие строки

#Options -Indexes
<Limit GET POST>
Order Allow,Deny
Deny from 113.255.107.204
Deny from 113.89.4.156
Deny from 114.127.246.36
Deny from 99.249.141.3
Allow from All
</Limit>

 

И я хочу забанить на форуме роботов Yahoo Bot и MSN Bot

Как мне и куда это прописать ?

 

SetEnvIfNoCase User-Agent "^Yahoo" bad_bot
<Limit GET POST HEAD>
Order Allow,Deny
Allow from all
Deny from env=bad_bot
</Limit>

 

И еще вопрос, какие роботы не нужны на форуме, чтобы их тоже сразу добавить и заблокировать, чтобы не давали лишению нагрузку

У меня приход идет больше всего от Яндекса и немного гугл, потом идет уже маил и рамблер

Часто лазиют роботы Google AdSense и Cuil, но еще некоторые :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Не могу сообразить

У меня в .htaccess есть такие строки

#Options -Indexes
<Limit GET POST>
Order Allow,Deny
Deny from 113.255.107.204
Deny from 113.89.4.156
Deny from 114.127.246.36
Deny from 99.249.141.3
Allow from All
</Limit>

 

И я хочу забанить на форуме роботов Yahoo Bot и MSN Bot

Как мне и куда это прописать ?

#Options -Indexes
SetEnvIfNoCase User-Agent "^Yahoo" bad_bot
SetEnvIfNoCase User-Agent "^msnbot" bad_bot
<Limit GET POST HEAD>
Order Allow,Deny
Deny from 113.255.107.204
Deny from 113.89.4.156
Deny from 114.127.246.36
Deny from 99.249.141.3
Allow from All
</Limit>

 

 

 

И еще вопрос, какие роботы не нужны на форуме, чтобы их тоже сразу добавить и заблокировать, чтобы не давали лишению нагрузку

У меня приход идет больше всего от Яндекса и немного гугл, потом идет уже маил и рамблер

Часто лазиют роботы Google AdSense и Cuil, но еще некоторые :D

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

Ссылка на комментарий
Поделиться на других сайтах

  • 0

FatCat, спасибо

Прописал, буду посмотреть , что будет дальше :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0

FatCat, так не блокирует их, как лазили , то так и лазят

 

Еще хотел спросить

На сколько важно это http://validator.w3.org

Читал на одном форуме, что при проверке, чем меньше ошибок, тем лучше

Пробил http://forums.ibresource.ru , то там выдало 42 Errors, 3 warning(s)

Пробил себя 152 Errors, 94 warning(s)

И все ругается на всякие счетчики, что их код не правильный

Ссылка на комментарий
Поделиться на других сайтах

  • 0
лучше подправить в коде, и пусть поисковые боты посещают: они в общем не должны мешать работе, в чем-то даже помогут.

Я дал айпишники не поисковых ботов, а самых злобных парсеров, выявленных на моих серврерах за последние 10 дней.

 

ОК, держите простенькую заплатку:

sources\classes\class_session.php

Найти:

	function update_guest_session()
{

и добавить ниже:

		if(($this->time_now - $this->last_click) < 5)$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'server_too_busy', 'INIT' => 1 ) );

Вместо цифры "5" можно попробовать другие цифры. Чем больше цифра, тем меньше нагрузка на сервер, но тем больше гостей будет получать предупреждение при быстром листании страниц:

Сервер не может в данное время выполнить ваш запрос. Попробуйте позже.

 

Зарегистрированных пользователей и известных поисковых ботов этот мод не затронет.

Блин, поставил эту заплатку, а с ней оказалась проблема, не отображалась капча и не кто не мог зарегиться

Спасибо написали, а то так и не знал бы и думал почему не кто не региться :D

 

FatCat, из за чего такое может быть ?

У меня капча вообще не включена, только цифры и они тоже не отображались

Включил капчу, то она тоже не отображается, но если на нее нажать, то рисунок появлялся

А вот с цифрами хуже

В эксплоере стоят крестики, а в мозиле надпись, что включите цифры или что то такое

 

выход есть, причем очень простой. капчу и цифры отключила, вместо них ввела дополнительное поле с вопросом: Если Вы не бот, введите текущий год (4 цифры).

и пользователь должен ввести 4 цифры (так настроено). пусть даже напишет с ошибкой, его пропустит (главное, чтоб ввелись 4 цифры). как показала практика - это работает... за весь период установки этого поля не было ни единой "левой" регистрации.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
FatCat, так не блокирует их, как лазили , то так и лазят

Не знаю. Ботов бить по юзерагенту не пробовал, у меня их автобаном убивает, если слишком нахальничают.

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

 

UPD: Сейчас посмотрел свой код. Странно было бы, если бы он блокировал. Определение ботов сделано, а запрет определившимся не выставлен.

#Options -Indexes
SetEnvIfNoCase User-Agent "^Yahoo" bad_bot
SetEnvIfNoCase User-Agent "^msnbot" bad_bot
<Limit GET POST HEAD>
Order Allow,Deny
Deny from 113.255.107.204
Deny from 113.89.4.156
Deny from 114.127.246.36
Deny from 99.249.141.3
Deny from env=bad_bot
Allow from All
</Limit>

Попробуй так.

Изменено пользователем FatCat
  • Лайк 1
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Ага, изменил, спасибо

Буду наблюдать дальше :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0
ОК, держите простенькую заплатку:

sources\classes\class_session.php

Найти:

	function update_guest_session()
{

и добавить ниже:

		if(($this->time_now - $this->last_click) < 5)$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'server_too_busy', 'INIT' => 1 ) );

Вместо цифры "5" можно попробовать другие цифры. Чем больше цифра, тем меньше нагрузка на сервер, но тем больше гостей будет получать предупреждение при быстром листании страниц:

Сервер не может в данное время выполнить ваш запрос. Попробуйте позже.

Зарегистрированных пользователей и известных поисковых ботов этот мод не затронет.

поставил еденицу вместо 5-ти. но всё равно довольно сильно пресекает работу гостям. именно со стартовой на последнюю тему любого из форумов сразу перейти не получается. нельзя ли уменьшить значение? дробные числа как я понимаю не принимаются?

и ещё, точно ли это не распространяется на поисковики? не хочу, чтобы со временем оказалось, что индексация значительно уменьшилась.

 

Неопознанные боты идут гостями. У меня они попадают в автобан, если начинают слишком активно забирать ресурсы.
а как именно у вас реализован автобан?

 

СПАСИБО за ответы.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
поставил еденицу вместо 5-ти. но всё равно довольно сильно пресекает работу гостям. именно со стартовой на последнюю тему любого из форумов сразу перейти не получается. нельзя ли уменьшить значение? дробные числа как я понимаю не принимаются?

У меня стоит 1, иначе слишком много парсеров пробивается.

А чтобы не было проблем с редиректом, я в функцию редиректа добавил

if(!$ibforums->member['id'] or ($ibforums->input['act']=="Login" and $ibforums->input['CODE']=="03") )sleep(1);

Это код для "однушки", для двушки нужен свой синтаксис!!!

 

 

 

и ещё, точно ли это не распространяется на поисковики? не хочу, чтобы со временем оказалось, что индексация значительно уменьшилась.

Нет, распознанные боты обрабатываются в другой функции.

 

 

 

а как именно у вас реализован автобан?

В специальную таблицу в БД (сделал свою) пишется айпишник, время фиксации этого айпишника, число превышений нагрузки.

Как только цифирька в этой табличке достигает 50, запускается модуль:

1. Удаляются все записи таблицы с истекшим сроком давности (10 суток).

2. Собирается массив айпишников с цифирками больше 50.

3. Из этого массива генерируется новый .htaccess

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

 

Таким образом автобан и авторазбанивает через 10 суток, и не банит тех, кто по дури сделал меньше 50 двойных кликов.

Плюс, переопределен вызов эррора на превышение нагрузки: Отдается не server_too_busy, а no_duble_klick, в котором содержится текст: "Пожалуйста, не делайте двойных кликов по ссылкам, они создают избыточную нагрузку на сервер".

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Это код для "однушки", для двушки нужен свой синтаксис!!!

можно расшифровку? :D

однушка имеется ввиду 1.x или 2.1.x

 

 

В специальную таблицу в БД (сделал свою) пишется айпишник, время фиксации этого айпишника, число превышений нагрузки...
а можно попросить написать мод? мне так в общих словах не повторить. если не сложно конечно. у меня 2.1.7
Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.