Forums / National / Russian / Движок ощутимо грузит CPU. Надо что-то делать!

Boss
#1 2009-06-29 20:02
Господа, я, конечно, понимаю, что котонти развивается в отличии от седитио. В нем есть всякие прикольные рюшечки и т.д. Но котонти раза в два, как минимум, более требователен к ресурсам, чем седитио. И в данном случае нифига не помогает даже HML-кэш. Предлагаю сосредоточится на оптимизации кода. Это более важно чем все остальное. Я в свое время LDU/SEDITIO выбрал именно за легкость. Котонти в этом смысле меня разочаровывает.

Назовите пожалуйста хотя бы основные фичи, появившиеся в котонти. Которые сказались или могли сказаться на повышенной нагрузке на CPU по сравнению с седитио.
Trustmaster
#2 2009-06-30 00:33
По результатам анализа phpinfo() выяснено, что, скорее всего, причина в том, что PHP5 для Cotonti на хосте работает через CGI, в то время как PHP4 для Seditio работал как модуль Апача.
May the Source be with you!
Dr2005alex
#3 2009-06-30 00:55
Чут-чуть посмотрев выяснил еще что могут хорошо грузить плагины!

Например если плагин стандалон и имеет перехват header! То даже при выводе INDEX его код будет выполнятся в header(если в плагине не контролируется location) А если в части header что-нить мощное расчитывается? Получается что для INDEX у нас и так куча плгинов работает Типа NEWS, POLLS и т.д. да еще и этот не нужный в данный момент.....
Думаю надо в плгинах учитывать местоположения усеров!

P.S. Это то что на глаз быстро определил!
WebKaa.ru - Cotonti Relax
Boss
#4 2009-06-30 16:44
Dr2005alex да как их учтеш? :-) Юзеры или роботы всегда и везде.

Насчет моего случая, надеюсь отказ от использования CGI для PHP5 сделает свое дело и станет лучше. Отпишусь чуть позже. Перенос сайтов на другой сервер уже начат.

Пока боюсь сильно радоваться, но вроде эффект есть. Подкоплю немного статистики.

Dit bericht is bewerkt door Boss (2009-06-30 18:40, 14 jaren ago)
Sergeich
#5 2009-06-30 18:55
Босс, попробуй через фасткги подключить пхп, говорят, что прирост производительности пхп значительный, даже в сравнении с пхп как модуль апача.

Кстати, могу судить по своему сайту, установка на сервер nginx ощутимо увеличило скорость сайта.
Azazello
#6 2009-06-30 22:24
Boss посмотри тут однако, очень помогает.
Boss
#7 2009-06-30 23:35
Azazello спасибо. Решение заслуживает рассмотрения, но сгоряча такое делать не следует. :-) Нужно взвесить все за и против. Там еще правильно насчет баннеров отметили. При наличии баннеров на странице вставленных простым PHP ротация работать, соответственно не будет. Пока возьму это на заметку.

По совету Trustmaster обратился к своему хостеру и мне сделали необходимые изменения. Смысл в общем такой, может кому тоже пригодится.

Во-первых, на хостинге, на некоторых серверах и в частности на моем по умолчанию был установлен PHP4. Для использования PHP5 хостинг рекомендовал производить дополнительные действия. Одним из таких была вставка в файл .htaccess команд:
AddType php5-script .php
Action php5-script /cgi-php/php5
Оно конечно позволяло использовать PHP5, но такое решение трудно назвать оптимальным. Поскольку PHP5 при этом работает через CGI (Server API CGI). Поскольку поддержку PHP5 добавили как бы поверх, то при каждом запросе Апач вызывает PHP заново (как команду в консоли). А это ОЧЕНЬ плохо для производительности. Соответственно я попросил установить PHP5 именно, как модуль Апача.

Во-вторых, для дополнительного повышения производительности я попросил установить расширение XCache.

Ответ от хостера пришел очень быстро. Мне просто предложили перехать на другой сервер, где это все уже есть. Правда вместо XCache там установлен eaccelerator. Это аналог, обеспечивающий примерно тот же результат. Переезд занял порядка часа.

Что я получил в итоге. Смотрим статистику CPU:

После переезда:
2009-06-30 19:00:00 2.73 % 0.82 min 0.75
2009-06-30 18:45:00 2.97 % 0.89 min 0.78
2009-06-30 18:30:00 3.2 % 0.96 min 0.93
2009-06-30 18:15:00 3.5 % 1.05 min 0.97
2009-06-30 18:00:00 3.2 % 0.96 min 1.19
2009-06-30 17:45:01 3.5 % 1.05 min 1.37
2009-06-30 17:30:01 2.8 % 0.84 min 1.06
2009-06-30 17:15:01 2.8 % 0.84 min 1.4
2009-06-30 17:00:01 2.63 % 0.79 min 1.7
2009-06-30 16:45:00 3.1 % 0.93 min 1.72
2009-06-30 16:30:00 3.07 % 0.92 min 1.65
2009-06-30 16:15:01 3.37 % 1.01 min 1.17
2009-06-30 16:00:00 3.73 % 1.12 min 1.43
2009-06-30 15:45:01 2.77 % 0.83 min 1.48
2009-06-30 15:30:00 3.26 % 0.98 min 1.63
2009-06-30 15:15:00 3.07 % 0.92 min 1.22
2009-06-30 15:00:00 4.47 % 1.34 min 1.48
2009-06-30 14:45:00 4.2 % 1.26 min 1.49
2009-06-30 14:30:01 3.3 % 0.99 min 1.4
2009-06-30 14:15:00 3.06 % 0.92 min 1.1
2009-06-30 14:00:01 3.37 % 1.01 min 1.33
2009-06-30 13:45:00 3.2 % 0.96 min 1.01
2009-06-30 13:30:01 2.9 % 0.87 min 1.1
2009-06-30 13:15:01 2.87 % 0.86 min 1.05

Переезд:
2009-06-30 13:00:01 8.67 % 2.6 min 1.19
2009-06-30 12:45:01 2.8 % 0.84 min 1.01
2009-06-30 11:30:00 3.8 % 0.57 min 0.59

До переезда:
2009-06-30 11:15:00 10 % 1.5 min 0.9
2009-06-30 11:00:00 9.33 % 1.4 min 0.22
2009-06-30 10:45:00 7.33 % 1.1 min 0.42
2009-06-30 10:30:00 7.87 % 1.18 min 0.98
2009-06-30 10:15:00 10 % 1.5 min 1
2009-06-30 10:00:00 9.33 % 1.4 min 0.55
2009-06-30 09:45:00 9.53 % 1.43 min 0.22
2009-06-30 09:30:00 7.67 % 1.15 min 0.32
2009-06-30 09:15:00 9.4 % 1.41 min 0.14
2009-06-30 09:00:00 7.67 % 1.15 min 0.18
2009-06-30 08:45:00 9.8 % 1.47 min 0.15
2009-06-30 08:30:00 8.8 % 1.32 min 0.13
2009-06-30 08:15:00 12.2 % 1.83 min 0.17
2009-06-30 08:00:00 8.33 % 1.25 min 0.12
2009-06-30 07:45:00 9.07 % 1.36 min 0.11
2009-06-30 07:30:00 6.87 % 1.03 min 0.13
2009-06-30 07:15:00 8.07 % 1.21 min 0.22
2009-06-30 07:00:00 6.93 % 1.04 min 0.33
2009-06-30 06:45:00 6 % 0.9 min 0.3
2009-06-30 06:30:00 5.87 % 0.88 min 0.18
2009-06-30 06:15:00 6.47 % 0.97 min 0.34
2009-06-30 06:00:00 7.73 % 1.16 min 0.35
2009-06-30 05:45:00 7.47 % 1.12 min 0.08
2009-06-30 05:30:00 5.27 % 0.79 min 0.08
2009-06-30 05:15:00 5.4 % 0.81 min 0.07
2009-06-30 05:00:00 6.8 % 1.02 min 0.13
2009-06-30 04:45:00 10.2 % 1.53 min 0.26
2009-06-30 04:30:00 6 % 0.9 min 0.39
2009-06-30 04:15:00 6.4 % 0.96 min 0.09
2009-06-30 04:00:00 6.6 % 0.99 min 0.09
2009-06-30 03:45:00 6.33 % 0.95 min 0.08
2009-06-30 03:30:00 6.6 % 0.99 min 0.11
2009-06-30 03:15:00 6.53 % 0.98 min 0.09
2009-06-30 03:00:00 7.6 % 1.14 min 0.09
2009-06-30 02:45:00 6.6 % 0.99 min 0.1
2009-06-30 02:30:00 7.6 % 1.14 min 0.17
2009-06-30 02:15:00 6.73 % 1.01 min 0.25
2009-06-30 02:00:00 6.93 % 1.04 min 0.08
2009-06-30 01:45:00 9.33 % 1.4 min 0.12
2009-06-30 01:30:00 11.13 % 1.67 min 0.17
2009-06-30 01:15:00 8.87 % 1.33 min 0.17
2009-06-30 01:00:00 8.67 % 1.3 min 0.22
2009-06-30 00:45:00 9.8 % 1.47 min 0.4
2009-06-30 00:30:00 10.73 % 1.61 min 0.3
2009-06-30 00:15:00 8 % 1.2 min 0.54
2009-06-30 00:00:00 10.13 % 1.52 min 0.4

Таким образом раза в два точно нагрузку удалось снизить. Также заслуживает внимание то, что ранее скачки были с разницей и в три раза. Сейчас нагрузка более равномерная. Хотя конечно понаблюдаю еще. Но в любом случае эффект очевиден.

забыл сказать, что сейчас нагрузка стала даже немного меньше, чем была на Seditio. Разница на вскидку 20-40%.

Прошла пара дней. За это время максимальная нагрузка на CPU, которую довелось увидеть составила 6.39%. Это безусловно хороший показатель. Для эксперимента я даже пробовал сбрасывать HTML-кэш. Заметных скачков нагрузки после этого не было.

Теперь меня смущает лишь нагрузка на базу. :-) Временами она превышает 10%, в которые хотелось бы вписываться. Будем думать над оптимизацией имеющихся плагинов и ждать новых версий движка.

Dit bericht is bewerkt door Boss (2009-07-02 23:56, 14 jaren ago)