Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как сделать тормоза?
 
 автор: Владимир55   (27.07.2006 в 23:29)   письмо автору
 
 

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

Сами они этого, как ни удивительно, сделать не могут. Но уверяют, что со стороны пользователя возможно всё. А возможны ли тормоза?
(страницы на сайте смешанные - и htm, и php)

   
 
 автор: ec_stasis   (28.07.2006 в 01:24)   письмо автору
 
   для: Владимир55   (27.07.2006 в 23:29)
 

Можно, для этого надо оптимизировать код. Может помочь...

   
 
 автор: cheops   (28.07.2006 в 11:39)   письмо автору
 
   для: Владимир55   (27.07.2006 в 23:29)
 

Сначала нужно разобраться что потребляет ресурсы, как правило это MySQL или GDLib. У вас что на сайте ресурсоёмкого имеется?

   
 
 автор: Владимир55   (28.07.2006 в 11:50)   письмо автору
 
   для: cheops   (28.07.2006 в 11:39)
 

>Сначала нужно разобраться что потребляет ресурсы, как
>правило это MySQL или GDLib. У вас что на сайте
>ресурсоёмкого имеется?

Что на сайте ресурсоемкое, понять мне не удается. База MySQL обслуживает только счетчик, полученный с этого форума, счетчик количества одновременно присутствующих посетителей, состоящий из одного файла, а также форум, гдн одновременно присутствуют 2-5 человек. А в остальном сайт статический - тексты с несколькими картинками-иллюстрациями. В сутки до 700 посетителей, которые просматривают до 4000 страниц. А вот какие разъяснения хостера (хостинг 1Gb.ru) я получил вчера:

В период 2006-07-26 13:00 - 17:00, когда наблюдался пик нагрузки, к вашему
сайту было сделано 37482 запроса, из них 33 запроса типа POST и 1298 запроса
GET непосредственно к файлам .php.

Топ по запросу к файлам:

1241 /online/online.php
33 /for1/index.php
4 /for1/login.php
4 /brd.php
3 /for1/search.php
3 /for1/faq.php
2 /forum/index.php
2 /for1/viewonline.php
2 /for1/memberlist.php
2 /for1/groupcp.php
1 /for1/profile.php
1 /for1/privmsg.php

   
 
 автор: cheops   (28.07.2006 в 12:06)   письмо автору
 
   для: Владимир55   (28.07.2006 в 11:50)
 

Запросы MySQL имеются ввиду или обычные? 1298 хитов... это очень мало, нагрузка должна быть мизерной. Спросите хостера, кото создаёт нагрузку больше PHP или MySQL? Счётчик OnLine посетителей файловый или на MySQL?

   
 
 автор: Unkind™   (28.07.2006 в 12:18)   письмо автору
 
   для: Владимир55   (28.07.2006 в 11:50)
 

Мне кажется вам стоит сменить хостера или тарифный план. =)
Кстати, на циклы проверьте скрипты. =)

Кстати, насчет ответа хостера не понял...Сам себе противоречит - всего 37482, а максимальнозапрашиваемый файл - 1241 запросов. Остальное по одному хиту. Пусть 4000 страниц хоть раз просмотрели + эта "тыща" итого никак 37482 не выходит...

   
 
 автор: cheops   (28.07.2006 в 12:29)   письмо автору
 
   для: Unkind™   (28.07.2006 в 12:18)
 

Тут всё нормально 37482 - это общее число обращений в том числе и к картинкам (под каждое изображение даже 1х1 браузер оформляет отдельный запрос), которые по оределению не могут нагружать процессор, процессор может нагружать только PHP-скрипт. Хостер не говорит, что обращений много (их как раз мало) и ему не нравится, что при таком маленьком количестве хитов, большая нагрузка, так как увеличение посещаемости приведёт к запредельным нагрузкам... мне кажется логика такая. Нужно просто разобраться, что нагружает процессор и снять эту нагрузку.

   
 
 автор: Владимир55   (28.07.2006 в 13:05)   письмо автору
 
   для: cheops   (28.07.2006 в 12:29)
 

>Нужно просто разобраться, что
>нагружает процессор и снять эту нагрузку.

Хорошо бы, да как разобраться?

Сегодня нагрузка не превышает 0.5% (вижу по монитору у хостера), вчера не превысила 1.5%, а позавчера, в день прегнузки, ситуация была такая:
- с ноля часов до 13 часов нагрузка колебалась от 0.07% до 0.4%;
- с 13 до 14 составляла 6.74 %;
- с 14 до 15 составляла 14.26 %;
- с 14 до 15 составляла 12.45 %;
- с 16 до 17 составляла 2.53 %;
- с 17 часов до конца дня была на уровне 1.2% - 1.8%.

То есть пик приходится на период с 14 до 15 часов. Смотрю логи за этот час - нет там ничего особенного: ни посещений роботов, ни атак каких-нибудь с идентичными запросами. Просто посетители в осоновном перебирают кнопки меню и больше ничего. Могу показать лог за этот час (или весь).

   
 
 автор: cheops   (28.07.2006 в 13:10)   письмо автору
 
   для: Владимир55   (28.07.2006 в 13:05)
 

Нагрузка нормальная... вы так ничего не сделаете... нужно чтобы в пик нагрузки хостер запускал не команду uptime которая просто сообщает всю нагрузку на сервер, а команду top, чтобы посмотреть какие процессы дёргают больше всего процессор. Таблица для учёта OnLine большая? Может там записи не удаляются?

   
 
 автор: Владимир55   (28.07.2006 в 13:27)   письмо автору
 
   для: cheops   (28.07.2006 в 13:10)
 

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

Два месяца изучения этой проблемы привели к тому, что захотелось просто избавиться от неё любыми средствами и заняться контентом сайта, поскольку это и есть моя функция на нем, и посетители ждут текстов, а не чего-то еще. Так и пришла мысль о тормозах. Хотя сейчас, после беседы с Вами, мне она уже не кажется столь интересной, ибо это неправильно и противоречит самой природе человека - надо не тормозить по жизни, а ускоряться! Ведь так?

А посему свое пожелание о тормозах я снимаю.

   
 
 автор: Unkind™   (28.07.2006 в 12:38)   письмо автору
 
   для: Владимир55   (28.07.2006 в 11:50)
 

Тогда еще лучше структуру таблиц в базе проверить...=)

   
 
 автор: Владимир55   (28.07.2006 в 13:07)   письмо автору
 
   для: Unkind™   (28.07.2006 в 12:38)
 

Так я эти таблицы не трогал! Одна пришла с форумом рнр, а другая со счетчиком - обе стандартные!

   
 
 автор: Ан   (28.07.2006 в 13:10)
 
   для: Владимир55   (28.07.2006 в 11:50)
 

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

$part_time = explode(' ',microtime()); 
$begin_time = $part_time[1].substr($part_time[0],1);

и в конце:

$part_time = explode(' ',microtime()); 
$end_time = $part_time[1].substr($part_time[0],1); 
sprintf("%.3f",$end_time - $begin_time);

позволит вывести те самые секунды.
Со счётчиком PowerCounter могут приключаться странные вещи, в частности не архивироваться ip-адреса месяцами. В некоторых случаях запрос к базе данных осуществляется более 30 секунд. А за базой данных всегда нужны присмотр и уход.

   
 
 автор: cheops   (28.07.2006 в 13:13)   письмо автору
 
   для: Ан   (28.07.2006 в 13:10)
 

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

   
 
 автор: Владимир55   (28.07.2006 в 13:30)   письмо автору
 
   для: cheops   (28.07.2006 в 13:13)
 

Счетчик я обнулил 12 дней назад, так счто база там небольшая, но все же накопилась. Хотя бывало, что не обнулялась месяцами.

А Вы имеете в виду базу адресов PowerCounter? Если так, то она и в самом деле не имеет большого значения и накапливать её необязательно. А как сократить интервал да суток? Где что надо изменить?

   
 
 автор: Ан   (28.07.2006 в 15:10)
 
   для: Владимир55   (28.07.2006 в 13:30)
 

В файле archive.php запросы на удаление типа:

$arr[] = "DELETE FROM $tbl_ip WHERE putdate <= '$last_date_arch' - INTERVAL 30 DAY";

INTERVAL 1 DAY
У меня получилось. Хотя не могу знать всего в этом скрипте наверняка, поэтому для подстраховки лучше дождаться и ответа Игоря.

   
 
 автор: Владимир55   (28.07.2006 в 16:32)   письмо автору
 
   для: Ан   (28.07.2006 в 15:10)
 

Я тоже с этим скриптом не на "ты", так что подожду.

   
 
 автор: akira   (28.07.2006 в 16:38)   письмо автору
 
   для: Владимир55   (28.07.2006 в 16:32)
 

Так, пока не кто не видет...
А еще у нас Loki спец по этой части :) его тоже можнос просить. Вот.

   
 
 автор: Владимир55   (28.07.2006 в 17:39)   письмо автору
 
   для: akira   (28.07.2006 в 16:38)
 

Также шепотом и отвечаю: Loki вообще Чемпион планеты по части счетчиков!!! Собственно, я и использую ту модификацию, которую придумал Loki - с указанием названия страниц. Как толь Loki проснется, я сразу спрошу его об этом!

   
 
 автор: cheops   (28.07.2006 в 22:53)   письмо автору
 
   для: Ан   (28.07.2006 в 15:10)
 

>INTERVAL 1 DAY
Да, именно так.

   
 
 автор: Владимир55   (15.08.2006 в 17:04)   письмо автору
 
   для: Ан   (28.07.2006 в 15:10)
 

А вот я не сумел!

И причина очень веская - нет в моем счетчике файла archive.php!

=================
Использую версию фиг знает какую, полученную от локи.

   
 
 автор: Bronepoez[)   (29.07.2006 в 12:26)
 
   для: Владимир55   (28.07.2006 в 13:30)
 

У вас наверное фрагментированы таблицы в базе. Чтобы их дефрагментировать выполните на каждой из них команду OPTIMIZE <table>, где <table> - имя таблицы.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования