Web-разработка: Пример использования eAccelerator для нагруженного php-проекта
Наш новый фронтенд-сервер сейчас вполне справляется с нагрузкой и в оптимизации не нуждается (чего нельзя сказать о базе данных), но после того, как я очередной раз посмотрел на его top, мне вдруг стало жалко ожесточённо разнашиваемых дисков, и я решил уделить этому пару минут и поставить eAccelerator.
Спящие апачи с нулевым потреблением процессора в рейтинге не учавствовали.
Top до:
last pid: 81349; load averages: 1.32, 0.96, 0.73 up 26+20:37:16 17:02:30 67 processes: 1 running, 66 sleeping CPU states: 3.1% user, 0.0% nice, 1.1% system, 0.6% interrupt, 95.2% idle Mem: 1266M Active, 5844M Inact, 205M Wired, 251M Cache, 214M Buf, 162M Free Swap: 1024M Total, 1024M Free PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 81128 habrahabr 1 20 0 32460K 14288K lockf 4 0:09 2.93% httpd_habr 81122 habrahabr 1 20 0 32784K 14608K lockf 5 0:09 2.83% httpd_habr 81126 habrahabr 1 20 0 32384K 14328K lockf 3 0:10 2.20% httpd_habr 81105 habrahabr 1 20 0 32456K 14288K lockf 1 0:09 1.86% httpd_habr 81108 habrahabr 1 20 0 32556K 14384K lockf 2 0:09 1.86% httpd_habr 81111 habrahabr 1 20 0 32548K 14372K lockf 7 0:09 1.66% httpd_habr 81133 habrahabr 1 20 0 32880K 14712K lockf 5 0:09 1.66% httpd_habr 75450 nobody 1 4 0 1038M 1037M kqread 3 527:12 1.42% memcached 81110 habrahabr 1 20 0 32388K 14216K lockf 6 0:09 1.37% httpd_habr 81114 habrahabr 1 20 0 32876K 14704K lockf 7 0:10 1.22% httpd_habr 81113 habrahabr 1 20 0 32496K 14328K lockf 0 0:09 1.12% httpd_habr 81112 habrahabr 1 20 0 32496K 14320K lockf 6 0:07 1.03% httpd_habr 81130 habrahabr 1 20 0 32460K 14284K lockf 7 0:09 0.98% httpd_habr 81116 habrahabr 1 20 0 33556K 15384K lockf 2 0:09 0.98% httpd_habr 81106 habrahabr 1 20 0 32888K 14712K lockf 1 0:10 0.88% httpd_habr 81117 habrahabr 1 20 0 34052K 15880K lockf 5 0:09 0.88% httpd_habr 81124 habrahabr 1 20 0 32452K 14292K lockf 2 0:09 0.88% httpd_habr 81107 habrahabr 1 20 0 32440K 14272K lockf 3 0:08 0.88% httpd_habr 81132 habrahabr 1 20 0 32376K 14204K lockf 7 0:08 0.88% httpd_habr 81127 habrahabr 1 20 0 32860K 14944K lockf 2 0:07 0.88% httpd_habr 81103 habrahabr 1 20 0 32472K 14280K lockf 4 0:10 0.83% httpd_habr 81119 habrahabr 1 20 0 32468K 14296K lockf 0 0:09 0.78% httpd_habr 81125 habrahabr 1 20 0 32396K 14232K lockf 7 0:08 0.73% httpd_habr 81123 habrahabr 1 20 0 32876K 14694K lockf 4 0:10 0.78% httpd_habr 81134 habrahabr 1 20 0 32428K 14248K lockf 1 0:08 0.78% httpd_habr 81131 habrahabr 1 20 0 32860K 14684K lockf 6 0:09 0.73% httpd_habr 81115 habrahabr 1 20 0 32388K 14220K lockf 6 0:09 0.68% httpd_habr 81118 habrahabr 1 20 0 34744K 16692K lockf 4 0:09 0.63% httpd_habr 81120 habrahabr 1 20 0 32612K 14540K lockf 3 0:09 0.63% httpd_habr 81121 habrahabr 1 20 0 32396K 14224K lockf 0 0:08 0.59% httpd_habr 81104 habrahabr 1 20 0 33536K 15360K lockf 1 0:09 0.34% httpd_habr 81129 habrahabr 1 20 0 32444K 14276K lockf 6 0:08 0.34% httpd_habr 81109 habrahabr 1 20 0 32444K 14272K lockf 2 0:07 0.24% httpd_habr Top после: last pid: 81887; load averages: 0.17, 0.34, 0.46 up 26+20:55:47 17:21:01 68 processes: 2 running, 66 sleeping CPU states: 2.5% user, 0.0% nice, 1.2% system, 0.4% interrupt, 96.0% idle Mem: 1202M Active, 5869M Inact, 201M Wired, 251M Cache, 214M Buf, 204M Free Swap: 1024M Total, 1024M Free PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 81482 habrahabr 1 20 0 56068K 18912K lockf 4 0:08 1.90% httpd_habr 75450 nobody 1 4 0 1038M 1037M kqread 6 527:34 0.98% memcached 81471 habrahabr 1 20 0 56204K 25744K lockf 6 0:08 0.73% httpd_habr 81487 habrahabr 1 20 0 59492K 31552K lockf 1 0:07 0.73% httpd_habr 81484 habrahabr 1 20 0 59820K 32328K lockf 1 0:08 0.54% httpd_habr 81456 habrahabr 1 20 0 55976K 19380K lockf 0 0:09 0.49% httpd_habr 81469 habrahabr 1 20 0 56140K 18928K lockf 5 0:08 0.49% httpd_habr 81460 habrahabr 1 20 0 57224K 20676K lockf 7 0:08 0.49% httpd_habr 81461 habrahabr 1 20 0 56248K 27964K lockf 5 0:07 0.44% httpd_habr 81459 habrahabr 1 20 0 55752K 25304K lockf 5 0:08 0.34% httpd_habr 81476 habrahabr 1 20 0 55856K 18980K lockf 3 0:08 0.34% httpd_habr 81480 habrahabr 1 20 0 55568K 18380K lockf 3 0:08 0.29% httpd_habr 81470 habrahabr 1 20 0 55952K 27852K lockf 0 0:08 0.29% httpd_habr 81466 habrahabr 1 20 0 57116K 30072K lockf 3 0:07 0.29% httpd_habr 81467 habrahabr 1 20 0 56184K 27648K lockf 1 0:08 0.24% httpd_habr 81477 habrahabr 1 20 0 55836K 24572K lockf 5 0:07 0.24% httpd_habr 81464 habrahabr 1 20 0 59524K 29480K lockf 5 0:08 0.20% httpd_habr 81468 habrahabr 1 20 0 55588K 27248K lockf 1 0:08 0.15% httpd_habr 81458 habrahabr 1 20 0 55812K 19132K lockf 6 0:08 0.15% httpd_habr 81474 habrahabr 1 20 0 55576K 26852K lockf 1 0:08 0.15% httpd_habr
Разумеется, для кого-то это но новость, но всё же занятно, как можно устранить один из недостатков php по сравнению с mod_perl.
При большей нагрузке разница была бы значительней.
habrahabr.ru
- Великий Язык PERL!: Perl мертв. Долгой жизни Perl’у JT Smith, президент Plain Black, создатель WebGUI, и одного из незамеченных успешного применения Perl в бизнесе, недавно прислал мне это эссе. Он разрешил мне издать его полностью здесь. Кажется, каждый день меня спрашивают, почему я пишу на Perl, а не на PHP, Java, C#, Ruby, Python, или [вставьте ваш любимый язык здесь]. Люди говорят "Perl больше не используется, не так ли?" Поскольку я пишу это, значит есть миллионы Perl программистов во всем мире. Perl5 активно поддерживается, и разрабатывае
- PHP: Tips & tricks CakePHP Для тех, кто уже успел познакомиться с фреймворком.Гибкое управление связями По умолчанию, при поиске всех представителей модели, Cake ищет и все связанные с ней подмодели. Что бывает часто неудобно, поскольку число запросов резко увеличивается, как и число бесполезной информации. Это, конечно, можно решить стандартными средствами, типа $this->recursive в размере количества необходимых подуровней поиска (до 3 по умолчанию), но и это часто не помогает, т.к. бывает, что некоторые субмодели нужны
- MODx CMS: MODX, Ditto и SQL или откуда проблемы с производительностью С MODX работал всего 2 недели, но успел познакомиться с багами парсинга тегов вызова чанков, снипетов. Например не получалось вызвать снипет как параметр для другого снипета. И даже чанк как параметр для снипета. На официальном форуме не помогли, на IRC посоветовали запускать снипеты через API. Для wayfinder получилось что хотел сделать, для Ditto ничего не получается вызвать. Столкнулся ещё с некоторыми глюками интересными в формах. Никак не удается обойти слишком умный валидатор, генерируя в
- Отраслевые события: WEB-разработчик Open Air 31 августа (Москва, Киев, Минск ..) Приглашаются все WEB-разработчики на Open Air 31 августа с 18:00 и до упора... - прощаемся с летом, обсуждаем идеи Дресс-код - шорты и кепка (шутка) Песни, танцы (в том числе ритуальные с бубном), соки, пиво, разговоры на тему разработки (perl,ruby,php,python,c++, nginx, memcached) обсуждение новых идей, публичные цитаты из классиков "вселенная вращается вокруг программистов и если бы не мы...", вобщем профессиональный оттяг и общение с интересными людьми которых и на конференциях не всегда за
- Великий Язык PERL!: Что нового в Perl 5.10? На днях вышел первый кандидат Perl-а на релиз — 5.10.0 RC1. А ведь прошло 5 лет с момента предыдущего релиза (5.8). Так что же интересного нас ждет в 5.10? Следует заметить, что Perl 5.10 имеет обратную совместимость с предыдущими версиями в отличии от грядущего Perl 6. По-умолчанию новые возможности версии 5.10 отключены. Активируются они специальной прагмой use feature, которая, кстати, имеет лексическую область видимости; или при помощи записи use 5.10.Функция say Аналог старого-доброго