|
|
|
| Здравствуйте.
Впервые столкнулся с проблемой критической перегрузки сервера.
Вся проблема в том, что робот Яндекса сканирую мой сайт создал жуткую перегрузку 24% из 3.5% допустимых, в результате чего сайт отключили.
Я анализировал веб-логи, звонил в службу поддержки и итог таков: всё из-за бешенной скорости сканирования сайта роботом Яндекса, более 10 страниц в секунду.
В службе поддержки говорят, что это зависит от оптимизации сайта, но сайт не содержит никаких динамических элементов, используется только на всех страницах вставка includ'ом верхней части (логотип), нижней части (счётчики), левой части (навигационное меню) и правой части (новости, немного рекламы). Центр страниц везде уникален. В целом сайт представляет собой около 980 страничек php со статьями. Всё больше ничего нет.
Так вот в службе поддержки говорят, что такая нагрузка из-за использования include и говорят, что лучше использовать ssi вставки, или ещё лучше - это генерация php скриптом статических страниц и загрузкой их на сайт? Вот этот момент мне не очень понятен, у меня и так все страницы статические!
1.Подскажите, пожалуйста, include разве создаёт такую нагрузку?
2. И как быть тогда в ситуации, когда навигационное меню должно быть на каждой странице? Как его тогда подключать?
3. А можно делать так: все страницы делать с расширением не php, а html, но естественно с включением кода на php в нужных местах страницы? Это как-то отражается на производительности?
Пожалуйста, ответье, а то я попал в неприятную ситуацию и надежда только на Вас.
Я очень надеюсь на Вашу помощь.
Заранее большое Вам спасибо | |
|
|
|
|
|
|
|
для: webwizard
(04.04.2008 в 17:54)
| | ЗЫ невтему канешн но улыбнула первая статья на сайте
Как повысить Индекс Цитирования сайта (ИЦ) и получить дополнительно посетителей на свой сайт?
|
а на странице очень много инклудов?
помоему просто хостер поставил сильное ограничение на ресуры, потому что 10 страниц в секунду не так уж и много.... | |
|
|
|
|
|
|
|
для: webwizard
(04.04.2008 в 17:54)
| | Врятли тут includы при делах, скорее всего поддержка твоего хостинга слепила ума. Даже если они добавляют нагрузку то скорее всего небольшую, в рамках нескольких %. А насчет бота яндекса то под его видом мог хацкер влезть. Ты по USER_AGENT его определил или по IP? Юзером можно любым представится и долбить сайт, будь то MSN, Google и пр. Точно также наоборот по наблюдениям некоторые боты прячутся за вывеской обычных браузеров =) | |
|
|
|
|
|
|
|
для: Giga
(04.04.2008 в 19:38)
| | Спасибо за ответы.
Это точно бот Яндекса, мы вместе с службой поддержки анализирования IP адреса и статистику веб-логов, однозначно Яндекс.
24.14 % (значение критической перегрузки) - 87.250.252.241 (spider01.yandex.ru)
Обычно на странице используется 4-е includа:
<?php include_once('inc/logo.inc'); ?>
<?php include_once('inc/menu.inc'); ?>
<?php include_once('inc/rigt.inc'); ?>
<?php include_once('inc/autor.inc'); ?>
|
А что лучше использовать require или include Есть ли разница в скорости?
А как насчёт того, чтобы: все страницы делать с расширением не php, а html, но естественно с включением кода на php в нужных местах страницы? Это как-то отражается на производительности?
И чем можно заменить include и вообще стоит ли это делать?
Вообще при построении крупного портала как правильно осуществлять подключение навигационного меню, логотипа и т.п...
Подскажите мне, пожалуйста, решение этих вопросов. | |
|
|
|
|
|
|
|
для: webwizard
(05.04.2008 в 06:10)
| | При использовании include_once() - независимо от результатов подгрузки Ваш скрипт продолжает работать, возможно "криво".
При использовании require_once() - Ваш скрипт прекращает работу (фатальная ошибка), если при подгрузке произошли исключительные ситуации. | |
|
|
|
|
|
|
|
для: vitali
(05.04.2008 в 08:35)
| | Это мне всё известно, меня интересуют мои вопросы, но Вам спасибо. | |
|
|
|
|
|
|
|
для: webwizard
(05.04.2008 в 06:10)
| | а вы время работы скрпта не измеряли? посмотрите, вдруг оно окажется большим.
следовательно что то в коде нужно оптимизировать.. | |
|
|
|
|
|
|
|
для: skor
(05.04.2008 в 10:59)
| | Да код до придела прост, каждая страница по сути представляет html код
(сайт представляет собой архив статей). Никаких баз данных и сложных скриптов вообще нет.
Страницы все статичные и грузятся махом. Include используется только для вставки фрагментов html-кода, таких как логотип, меню и т.п. | |
|
|
|
|
|
|
|
для: webwizard
(04.04.2008 в 17:54)
| | 1) Нет ли где хитрого зацикливания include-ами?
2) Что во включаемых файлах?
3) Используется ли база данных на сайте?
PS SSI-вставки не всегда можно применить - они же только HTML-вставляют. | |
|
|
|
|
|
|
|
для: cheops
(05.04.2008 в 12:14)
| | Никакого вроде зацикливания нет, я использую конструкцию include_once, всё проверял несколько раз, всё просто и понятно.
Собственно include я использую только для вставки на отдельных страницах сайта обычных html-фрагментов (логотип, навигационное меню и т.п.).
А как ещё можно подключать навигацию? Ведь не править вручную все 980 страниц сайта при внесении изменения в один из пунктов меню?
Базы данных вообще не используются. | |
|
|
|
|
|
|
|
для: webwizard
(05.04.2008 в 13:04)
| | Может всё-таки лошадь поставить впереди телеги?
Сделать не 980 страниц с инклюдами на каждой из них, а сделать одну страницу с логотипом, навигацией и подвалом. А 980 статей убрать в БД и вставлять по мере необходимости в эту страницу.
Ясно дело, что робот пережёвывая 980 страниц, создаёт нехилую нагрузку на винт, и соответственно на систему в целом. | |
|
|
|
|
|
|
|
для: Хулиган
(05.04.2008 в 13:22)
| | Я думаю, что 980 статических страниц, лучше чем использование базы данных и генерация информации из неё. Ведь будут уже динамические страницы, а это создаст больше нагрузки чем простые страницы. | |
|
|
|
|
|
|
|
для: webwizard
(05.04.2008 в 13:27)
| | Я думаю, что 980 статических страниц, лучше чем использование базы данных
Если бы это было лучше, люди не придумали бы такое понятие, как База данных.
Ведь будут уже динамические страницы, а это создаст больше нагрузки чем простые страницы.
Это будет 1 страница. И вся нагрузка будет в виде 1 sql-запроса, который выполняется за сотую долю секунды. И сравните это со временем, которое необходимо для чтения 980 страниц
P.S.
Проблема не в том, что используются инклюды, и не в том, что страницы формируются динамически.
Проблема в том, что файлов много. | |
|
|
|
|
|
|
|
для: Хулиган
(05.04.2008 в 13:55)
| | > Если бы это было лучше, люди не придумали бы такое понятие, как База данных.
Не лучше, конечно. Но в плане скорости статическая информация по определению будет быстрее отдаваться, чем динамическая.
> Это будет 1 страница. И вся нагрузка будет в виде 1 sql-запроса, который выполняется за сотую долю секунды. И сравните это со временем, которое необходимо для чтения 980 страниц
Сервер отдаёт сразу 980 страниц? Иначе с какой стати он будет считывать их всех? А при отдаче статической страницы не будет вообще запросов. Поскольку ноль меньше "сотой доли секунды", то очевидно, что ты привел неубедительный аргумент. | |
|
|
|
|
|
|
|
для: Atheist
(05.04.2008 в 14:28)
| | Вот, я тоже самое пишу. Я полностью согласен с Вами Atheist | |
|
|
|
|
|
|
|
для: Хулиган
(05.04.2008 в 13:55)
| | Я думаю Вы не правы, Хулиган. Страниц бывает и в несколько раз больше, но поисковые системы не индексируют такие сайты сразу, а заходят периодически.
К тому же индексация сайта, который лежит в базе данных может вызвать больше нагрузки, чем статические файлы. И ещё один момент, для поисковиков лучше чтобы страницы были статические, индексация будет происходить быстрее и качественнее. | |
|
|
|
|
|
|
|
для: webwizard
(05.04.2008 в 15:53)
| | >К тому же индексация сайта, который лежит в базе данных может вызвать больше нагрузки, чем статические файлы. И ещё один момент, для поисковиков лучше чтобы страницы были статические, индексация будет происходить быстрее и качественнее.
Это интересно почему же? И как вообще они понимают где статические, гди динамические страницы? И надо сказать, что тут вы несколько исказили понятия статических/динамических страниц! | |
|
|
|
|
|
|
|
для: ddhvvn
(05.04.2008 в 15:58)
| | Ну как поисковики понимаю такие страницы, лучше обратиться к ним непосредственно, но уверяю, что они это делают отлично.
Можно почитат об этом более подробно на форуме оптимизаторов
По поводу индексации страниц статических и динамических есть статистика, которую я анализировал на хосте и показатели нагрузки при индексации сайта, состоящего из статических страниц были не больше 0.04% в час. А при динамических 0.5 и больше. | |
|
|
|
|
|
|
|
для: webwizard
(05.04.2008 в 16:02)
| | Чушь! Поисковики ходят по ссылкам. Они не занимаются сканированием! | |
|
|
|
|
|
|
|
для: ddhvvn
(05.04.2008 в 16:04)
| | Ну всё верно, одно дело ссылка имеет вид
http://www.articlesworld.ru/webtex.php
а совсем другое дело, если ссылка имеет вот такой вид:
http://go.1ps.ru/pr/?do=m3&fm_plan=elita&price=600&str=34d
Вы считает что это одно и тоже и робот яндекса не определит где статичекская страница, а где динамическая?
Я считаю, что Вам стоит внимательно почитать вот эту к примеру статью
http://www.searchengines.ru/articles/004504.html | |
|
|
|
|
|
|
|
для: webwizard
(05.04.2008 в 16:08)
| | А я считаю, что Вам следует узнать о такой замечательной вещи, как ЧПУ!
А на счет вида ссылок Вы правы. | |
|
|
|
|
|
|
|
для: webwizard
(04.04.2008 в 17:54)
| | > 1.Подскажите, пожалуйста, include разве создаёт такую нагрузку?
Нет. Надо смотреть код, который ты подключаешь, а не на конструкцию include.
> 3. А можно делать так: все страницы делать с расширением не php, а html, но естественно с включением кода на php в нужных местах страницы? Это как-то отражается на производительности?
Нет. | |
|
|
|
|
|
|
|
для: Atheist
(05.04.2008 в 13:43)
| | Спасибо, Atheist
Вот пример подключаемого кода (это обычный html-файл):
(нижняя часть)
<TABLE border = "0" width = "100%" bgColor = '#666666'>
<TR>
<TH height = '20'><font color = 'silver' size = '4'><b>Все права защищены. "Целебные дары Алтая", © 2008г.</b></font></TH>
</TR>
<TR>
<TH height = '20'> здесь коды счётчиков майла, рамблера и liveinternet </TH>
</TR>
</TABLE>
|
Все остальные части абсолютно подобные.... только используется своя текстовка
Разве это может создавать нагрузку? Мне кажеться, что вообще никакой нагрузки быть не должно. | |
|
|
|
|
|
|
|
для: webwizard
(05.04.2008 в 13:56)
| | Раз нет кода для исполнения, то используй readfile() вместо include. Но вообще лучше сменить хостера. | |
|
|
|
|
|
|
|
для: Atheist
(05.04.2008 в 14:23)
| | Спасибо за ответ, Atheist, но всё же я оставлю include. Я считаю что такая дикая перегрузка из-за косяка Яндекса, сайт хостер обещал включить сегодня. | |
|
|
|
|
|
|
|
для: webwizard
(05.04.2008 в 15:57)
| | > но всё же я оставлю include
Зачем? | |
|
|
|
|
|
|
|
для: webwizard
(05.04.2008 в 15:57)
| | Да лучший вариант - смена хостера. | |
|
|
|
|
|
|
|
для: webwizard
(05.04.2008 в 15:57)
| | Это не косяк яндекса. Это ваши неумеренные аппетиты, помноженные на слабость вашего сервера. Вы хотите сразу двух зайцев убить: проиндексировать в поиске все 980 страниц, повысив вероятность появления в яндексе ссылок на ваш сайт, и при этом не создавать нагрузки на сервер.
Яндекс формирует такое количество запросов, что фактически досит ваш сервер, который не справляется с потоком запросов.
Либо не давайте повода роботу, сократив количество страниц, либо найдите хостера, которого такое количество запросов не повергает в ступор. | |
|
|
|
|
|
|
|
для: webwizard
(05.04.2008 в 15:57)
| | Яндекс тут не при чем! А вот хостер ваш - просто ужас, срочно меняйте его! | |
|
|
|
|
|
|
|
для: webwizard
(05.04.2008 в 15:57)
| | А что за хостер, кстати? | |
|
|
|
|
|
|
|
для: Хулиган
(05.04.2008 в 21:47)
| | Хулиган, сайт находится в сети более 2-х лет
За это время уже все страницы были полностью проиндексированы, а за неделю я добавляю ещё 5-6 новых страничек, поэтому я всё же считаю, что это косяк Яндекса и как Вы заметили проблема хостера, что для меня является странным, т.к. это впервые за 2 года.
Хостинговая компания очень приличная www.1gb.ru. Имеет десятки тысяч клиентов по словам службы поддержки. Тарифные планы вполне приличные, есть всё! | |
|
|
|
|
|
|
|
для: webwizard
(06.04.2008 в 06:41)
| | Вы хотите, чтобы яндекс ориентировался на возможности хостинга 1Гб? И снижал скорость?
Не думаю, что это произойдёт. В любом случае у Вас два выхода:
А. переписать свой код, чтобы не зависеть от возможностей хостера
Б. поменять хостера, чтобы ничего не переделывать
Я тоже недавно решал подобную проблему: с одного хоста страница грузилась в долю секунды, а с другого - по пол-минуты и более. В итоге я выбрал способ А и переписал код. Теперь меня не волнуют возможности хостера, да и самому приятнее, когда код оформлен правильно. Чего и вам желаю. | |
|
|
|
|
|
|
|
для: Хулиган
(06.04.2008 в 12:56)
| | Хулиган, спасибо за помощь.
Но если честно не могу понять, как код лучше переписать код!!!!
Заменить везде include на readfile?
Статические страницы, что тут можно менять? | |
|
|
|