Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

49. Оптимизируем загрузку PHP-кода в 22 раза, или почему FastCGI не ускоряет PHP (Дмитрий Котеров)
Goto page Previous  1, 2
Author Message
anonymous_incognito
Guest





Карма: 388
   поощрить/наказать


PostPosted: Sat Jan 17, 2009 4:27 pm (написано за 30 минут 38 секунд)
   Post subject:
Reply with quote

Vitaly Puzrin wrote:
Дело было давно, форум IPB на 2000 уников в сутки, сервер (только не смейтесь) на целерон 2000 и 2 гига памяти.
будете смеяться, но я всё-таки прокомментирую. Если бы поменяли проц на p4, то ваши скрипты ускорились бы на 30%. А на корку с 6-8мб кеша - в 10-20 раз (полагаю с коре2 с 6MB кешем, пхпешка стала умещаться там, за счет чего и такой скачок). Без акселераторов. Без мемкэша. Без памяти. Без нгинкса и 500-го бэд-гейтвея :)
На последних корках (семёрки) правда выигрыш меньший (по сравнению с корками), но система в целом (апаче, мускул, шедулеры) отзывчивее. Довольно толсто.

К чему это? К тому, что отладить или использовать в общем случае тот же самый апач удобнее, чем велосипедить и иметь кучу геморроя с уже написанным софтом, который не всегда без вышеупомянутой болячки, запустится на лисипеде. А количество производимых мега-проектов каждым конкретным индивидуумом не на столько большое, чтобы говорить, что ентот самый индивидуум генерит "высонагруженные" проекты ежедневно :) Мораль всё-таки в том, что для каждого лисипеда высокой нагрузочной способности требуется свой пилот, который и будет крутить педали под конкретный девайс :)
Back to top
Guest






Карма: 388
   поощрить/наказать


PostPosted: Wed Jan 21, 2009 11:33 am (спустя 3 дня 19 часов 6 минут; написано за 5 минут 40 секунд)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
_а-я_ wrote:
До этого я хотел чтоб nginx сразу отдавал PHP- fcgi через php-fpm/
Но прочитав тут все, понял что этого не стоит делать. Это так?
Неправильно говорить "не стоит". Лучше говорить - "по скорости разница будет совсем незначительной, и fastcgi тут не является панацеей". Ну а память при fastcgi выиграете, да, но тоже не чтобы уж очень значительно тоже (при правильных настройках апача).
_а-я_ wrote:
Прочитав все, я понял, что лучше не использовать инклуды. А «забихать» все в один большой php-файл по возможности.
Главное, чтобы это не ухудшало читабельность программы и не усложняло ее разработку. Все-таки человеческое время дороже машинного.
Плюс - эффект начинает проявляться, только если исходников очень много (1М и больше). Если у Вас кода всего-то на 100КБ, то смысла заморачиваться вообще нет.
_а-я_ wrote:
если PHP транслирует байт-код, а eAccelerator – кэширует, почему нельзя на сервере хранить именно в этом «байт-коде»
Zend Encoder это как раз и пытается делать, только смысла нет совсем: достаточно в shared memory хранить оттранслированную версию.
Кроме того, у eAccelerator есть режим сохранения байт-кода во временные файлы тоже.
В любом случае, когда байт-код на лету генерится, это гораздо удобнее, чем хранить его в виде файлов (потому что исчезает фаза компиляции при разработке).
Спасибо. =)
Вроде справился.
Избавился от инклудов. Использовал следующую структуру.
base.php <- chat.php(140.kb)
base.php <- forum.php(50kb)
..
и т.д.
для каждого действия использовал отдельную пользовательскую функцию,
чтоб дело происходило как бы в chroot’e

скорость генерации страниц увеличился в разы. И eAccelerator'ом "добил" уже! =)
итого, скорость генерации упала с 0,05 до 0,008сек
даже сам как-то не поверил.

Дело происходит на слабом VDS(300Мгц, ОЗУ: 64МБ)
Так же полностью перешел на свзяку
Nginx + php-fpm + php-Fastcgi
Итого еще от 20 до 35Mб оперативки свободно)

Кроме этих процессов, еще запущен MySQl, почта и по мелочи)

Хотя я в это новичок) может что-то не так понял, но мне кажется эт большой результат.)
Back to top
eXed_
Guest





Карма: 388
   поощрить/наказать


PostPosted: Wed Aug 19, 2009 3:35 pm (спустя 6 месяцев 29 дней 4 часа 2 минуты; написано за 7 минут 6 секунд)
   Post subject:
Reply with quote

ради эксперимента провел тесты на денвере (разумеется под виндой)
Code (php): скопировать код в буфер обмена
//index.php(88),1,"9.244 ms","9.244 ms","9.244 ms","9.244 ms","100.00% / 100.00%"
require_once('../class/db_mysql.php');

//index.php(91),1,"9.095 ms","9.095 ms","9.095 ms","9.095 ms","100.00% / 100.00%"
require_once('Z:\home\test\www\class\db_mysql.php');

//index.php(94),1,"10.21 ms","10.21 ms","10.21 ms","10.21 ms","100.00% / 100.00%"
require_once('Z:/home/test/www/class/db_mysql.php');

//index.php(98),1,"12.45 ms","12.45 ms","12.45 ms","12.45 ms","100.00% / 100.00%"
ini_set (www.php.net/ini_set)('include_path', ini_get (www.php.net/ini_get)('include_path') . PATH_SEPARATOR . 'Z:\home\test\www\class');
require_once('db_mysql.php');

//index.php(100),1,"12.90 ms","12.90 ms","12.90 ms","12.90 ms","100.00% / 100.00%"
ini_set (www.php.net/ini_set)('include_path', ini_get (www.php.net/ini_get)('include_path') . PATH_SEPARATOR . 'Z:/home/test/www/class');
require_once('db_mysql.php');
Относительный путь можно использовать, ожидал худшего.
Неправильный DIRECTORY_SEPARATOR тормозит.
include_path - фаворит по торможению инклудов.


Объединение в один файл, без вариантов.
Back to top
Гость ЛГА
Guest





Карма: 388
   поощрить/наказать


PostPosted: Mon Nov 01, 2010 6:00 pm (спустя 1 год 2 месяца 13 дней 2 часа 24 минуты; написано за 2 минуты)
   Post subject:
Reply with quote

Народ а можно описать процедуру объединения библиотек PHP в один файл? У меня стоит сейчас NGNIX как форвард и Apache как бэквард плюс eAccelerator на PHP. Но как то притормаживает отправка сообщений на форум хочу вот сделать как написано в статье но незнаю как это сотворить :)
Back to top
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Tue Nov 02, 2010 2:31 am (спустя 8 часов 30 минут; написано за 26 секунд)
   Post subject:
Reply with quote

Гость ЛГА
Вы уверены, что дело в библиотеках? Сделайте сначала профилирование
Back to top
View user's profile Send private message
Гость ЛГА
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Nov 02, 2010 9:21 am (спустя 6 часов 50 минут; написано за 1 минуту 3 секунды)
   Post subject:
Reply with quote

А чего это? Я просто далек от этого и если можно то поподробнее или где почить можно. За ранее спасибо. Но всё равно хотелось бы сделать как написано в статье.
Back to top
Гость ЛГА
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Nov 02, 2010 10:26 am (спустя 1 час 5 минут; написано за 54 секунды)
   Post subject:
Reply with quote

Статьи по профилированию PHP я нашел, попробую сделать. Но попрошу описать процесс объединения библиотек в один файл :)
Back to top
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Thu Nov 04, 2010 11:57 am (спустя 2 дня 1 час 30 минут; написано за 4 минуты 31 секунду)
   Post subject:
Reply with quote

Гость ЛГА
м, попробуйте поискать - может, для этого есть какие-то специальные техники. Мне в голову приходит только чтение файлов с диска, поиск в файле require/require_once и include/include_once, найденное ставится в очередь файлов, а сами строки вырезаются. Очищенный остаток льётся в один большой файл.
Но как-то это грубо, мне кажется. Зато огромное поле для развлечений. Автолоадинг ещё.
Back to top
View user's profile Send private message
patt
Заглянувший



Joined: 27 Feb 2007
Posts: 9
Карма: -1
   поощрить/наказать


PostPosted: Wed Nov 10, 2010 3:09 pm (спустя 6 дней 3 часа 11 минут; написано за 9 секунд)
   Post subject:
Reply with quote

Из личного: опыта заменив не проекте Apache на lighttpd проект перешел из состояния "после рестарта грузит страницу по минуте, и через 30мин отваливается" в состояние "работает нормально особо не нагружая процессор"
Back to top
View user's profile Send private message
alpaca
Guest





Карма: 388
   поощрить/наказать


PostPosted: Mon Mar 12, 2012 11:28 pm (спустя 1 год 4 месяца 2 дня 8 часов 19 минут; написано за 48 секунд)
   Post subject:
Reply with quote

Прошло уже много времени с момента обсуждения. Вышли новые версии и всё такое. Какие мнения на сегодняшний день?
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Fri Jun 22, 2012 2:28 am (спустя 3 месяца 9 дней 3 часа; написано за 21 секунду)
   Post subject:
Reply with quote

patt
Ну тут как бы как в анекдоте: "блоха без ног оглохла".
О том и статья вся...
Back to top
View user's profile Send private message Send e-mail
lurkerr
Guest





Карма: 388
   поощрить/наказать


PostPosted: Sat Oct 25, 2014 11:18 am (спустя 2 года 4 месяца 3 дня 8 часов 49 минут; написано за 3 минуты 24 секунды)
   Post subject:
Reply with quote

Дмитрий, я, следуя вашей статье, тоже у себя сделал merge всех классов фреймворка (Kohana) и был доволен как слон.
Но тут на днях нашел другой бенчмарк, у товарища немного другой результат получился: phpixie.com/blog/benchmarking-autoloading-vs-combining-classes-into-a-single-file/
Т.е. слитый файл проиграл вчистую автозагрузчику. Это из-за огромного classmap такое получилось? Или времена изменились, и автозагрузка нынче рулит?
Back to top
Vernon
Guest





Карма: 388
   поощрить/наказать


PostPosted: Mon Oct 07, 2019 2:52 pm (спустя 4 года 11 месяцев 13 дней 3 часа 33 минуты)
   Post subject: 49. Оптимизируем загрузку PHP-кода в 22 раза, или почему FastCGI не ускоряет PHP :: Наблы :: Куроводство :: Форум dkLab и Denwer
Reply with quote

П№ool! Thanks fОїr this articlпЅ…! Feel free to visС–t my web blog :: в…®пЅ…menti ЖЉemiЙ—ov (demidov83.jimdofree.com/)
Back to top
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Goto page Previous  1, 2
Page 2 of 2    Email to a Friend.
Post a reply
Username
Subject
Господа спамеры и оптимизаторы!

Вы можете даже и не пытаться вставлять в текст поста ссылки - они все равно автоматически удаляются (вернее, тэги <a> заменяются на тэги <u>).

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

Disable BBCode in this post
Disable Smilies in this post
    HTML is OFF
BBCode is ON
Smilies are ON
You cannot post new topics in this forum. You can reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML