Снижение нагрузки на процессор

SiZE

Новичок
Есть хостинг джино, есть самописный движок, есть 500 человек ежедневных посетителей.

С недавнего времени поползла нагрузка на процессор, что черевато отключением сайта. Все запросы к базе были оптимизированы и в логе медленных запросов не показываются. В логе нагрузки на процессор выводится следущее:
user 19.00% [2011-04-28 20:24]
%CPU COMMAND: LAST REQUEST
6.40 httpd-04: (worker) W site.ru/index.php
4.50 httpd-04: (worker) W site.ru/index.php
8.10 httpd-04: (worker) W site.ru/index.php?topic=4054

user 14.70% [2011-04-28 20:27]
%CPU COMMAND: LAST REQUEST
5.20 httpd-04: (worker) W site.ru/index.php?action=index
4.40 httpd-04: (worker) W site.ru/index.php
5.10 httpd-04: (worker) W site.ru/index.php?action=index

user 16.40% [2011-04-28 20:33]
%CPU COMMAND: LAST REQUEST
10.00 httpd-04: (worker) _ site.ru/uploads/avatars/small_ava_330.jpg
3.40 httpd-04: (worker) W site.ru/index.php?blog=1573
3.00 httpd-04: (worker) W site.ru/index.php?action=index
Собственно каким образом можно отследить, что является источником нагрузки? Все лежит в классах, ничего не зацикливается, шаблоны отдельно, запросы отдельно.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
а) доплатите $3/мес и забивайте VPS хоть до 100%
б) потратьте недели две и отпрофилируйте

ресайз фоток делается? работа с диском (файлами) есть?
user 40% не говорит, что проц загружен вычислениями, он может просто ждать i/o

site.ru/uploads/avatars/small_ava_330.jpg - картинки скриптом отдаете?
 

SiZE

Новичок
ресайз фоток делается? работа с диском (файлами) есть? site.ru/uploads/avatars/small_ava_330.jpg - картинки скриптом отдаете?
Фото загружаются редко. Работы с диском нет, вся информация лежит в базе. Сами фото отдаются по ссылке напрямую.

Каким образом можно отпрофилировать, как вы говорите?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Если я правильно понимаю, строка
10.00 httpd-04: (worker) _ site.ru/uploads/avatars/small_ava_330.jpg
говорит о том, что, отдавая картинку, апач пригрузил проц на 10%.
Если файл просто лежит на винте, это может говорить, например, об очень высокой загрузке винчестера.

Можно отпрофилировать профайлерами. Можно и просто записывая время исполнения различных модулей. Как - я рассказывать не буду, не учитель.
 

SiZE

Новичок
Если я правильно понимаю, строка
10.00 httpd-04: (worker) _ site.ru/uploads/avatars/small_ava_330.jpg
говорит о том, что, отдавая картинку, апач пригрузил проц на 10%.
Как объяснили в ТП:

Процесс, который отдавал картинку, также мог выполнять несколько запросов php скриптам.
В результате отображается средняя нагрузка на процессор.
Написал мини класс, который замеряет время на расставленных чекпоинтах и в конце сбрасывает в файл информацию если время выполнения составило более 0.5 секунды. Опытным путем выяснил, что оказывается echo $html; выполняется дольше всего. Т.е. все выборки из базы, работа в классах, выполнение различных циклов и условий может занимать около 0.2 секунд, а echo $html; 0.5 и более. Что это может быть такое? :)
 

Фанат

oncle terrible
Команда форума
если выполнение различных циклов и условий - это 0.2, то это уже ахтунг. должно быть 0.02, а лучше, чтобы нолей было три.
А отдача - это медленный клиент.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
ну что ... смотри мой пост №1 :)
переходи на vps и настраивай нормально
 
Сверху