FastCGI и оптимизация

02.01.2011

В голове у меня каша, и вот чтобы привести в порядок разрозненные обрывки знаний ищу и впитываю более-менее структурированную информацию. Процесс не быстрый.

В сети куча всяких мануалов по настройке PHP-FPM и всякого такого, но почти нигде не объясняется, что ж это за хрень такая, как и почему она возникла, как правильно использовать и т. п. А делать что-либо без понимания мне некомфортно.

Но вот сейчас нашёл классную статью от известного всем программистам Дмитрия Котерова (создателя Денвера), которая, похоже, станет неплохим базисом для меня. Статья называется Оптимизируем загрузку PHP-кода в 22 раза, или почему FastCGI не ускоряет PHP.

Если вы читали (или прочитаете) этот материал и у вас возникли свои мысли по теме, не молчите! Напишите в комментариях, пожалуйста.

Комментарии

  1. # bosha

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

  2. # Тормоз

    Но статья древняя (2008 г.), и я предполагаю, что FPM, который включен в новый PHP 3.3.3 работает как-то иначе. Сейчас буду искать информацию по этой теме.

    P.S. Ещё интересное обсуждение с участием Котерова. Правда, тоже не очень-то новое, 2009 г. Пока непонятно, изменилось что-то с тех пор или нет.

  3. # Rulexec

    bosha, весь тот геморой который испытывают администраторы серверов с FastCGI – лишён смысла — это для PHP лишён, для языков, где либы организованы в классы, а не лежат по 9к в глобал скейпе (извиняюсь за плохие слова), очень даже осмыслен и нужен.

  4. # Rulexec

    Попытка немного похоливарить под вечер.

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

    Если у вас код в классе, или как минимум в функции, интерпретатор при подключении такого файлика может даже не заглянуть внутрь функции/класса, максимум проверит синтаксис.

    Если же нет, весь код будет выполнен и настанет 3.14159265здец. Я, допустим, хотел подключить либу, которая хеши считает, чтобы md5-хеш высчитать, и вместо того, чтобы загрузить только функцию md5 и зависимых, я подгружаю ещё sha1 и прочих неизвестных мне хешей.

    bosha, весь мой геморой выглядит вот так:

    cat mysite.pid && rm -rf mysite.pid
    kill N && ./start.sh

    И это я просто bash не знаю, чтобы слить всю перезагрузку джанго-демона в одну строку.

  5. # Тормоз

    У тебя вечер, а у меня уже утро, 4:50. Насчёт твоего примера… хм, kill жёстко как-то, неужели нормального способа нет?

  6. # Rulexec

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

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

  7. # Shedar

    На офсайте php-fpm написано, что выигрыш по сравнению с апачем не в скорости (поскольку это всё-таки не полноценный FastCGI, чего очень хотелось бы), а в объеме используемой памяти, что на мой взгляд тоже немаловажно. Отдельным плюсом php-fpm для меня идет возможность завершить запрос, а уже после этого выполнять «финализирующие» действия (записать +1 в стат, освободить ресурсы, досчитать если что нужно).

  8. # Тормоз

    Отдельным плюсом php-fpm для меня идет возможность завершить запрос, а уже после этого выполнять «финализирующие» действия (записать +1 в стат, освободить ресурсы, досчитать если что нужно).

    А можно подробнее, как именно ты это делаешь и почему такая возможность именно благодаря FPM появляется?

  9. # Shedar

    php-fpm предоставляет функцию fastcgi_finish_request(), после вызова которой клиент считает что запрос обработан, но скрипт свою работу не завершает при этом. Более полно вот в этой статье – highload.com.ua/inde…

  10. # Тормоз

    Спасибо, интересно.

  11. # Тормоз

    Кстати, этот сайт у меня в закладках, очень толковый ресурс, мне он нравится. Много хороших статей.

  12. # Павел

    Как я и писал, всегда считал fastcgi в случае с пхп злом и дрочем. Про производительность не знал, но гемороя получал тонны из-за fastcgi. Теперь точно знаю что это полный дроч и так делать никогда не надо.

  13. # bosha

    Rulexec, ты не понял что я в контексте php имел в виду. Для django использование FastCGI вполне осмысленно и даже нужно я бы сказал.

    Олсо, ты вполне правильно всё убиваешь. И раз не знаешь bash (хотя что там знать не понимаю), то пише скрипты на питоне, вот проблема то ;)

  14. # Rulexec

    bosha, я вот думаю в ближайшее время с Fabric разобраться и делать всё по-правильному.

    По-моему превосходная система.

  15. # Тормоз

    но гемороя получал тонны из-за fastcgi

    А какие конкретно проблемы возникали?

  16. # janso: 

    nginx + php-fpm.
    Никогда не понимал плюсов какого-либо иного решения :)

Комментирование этой статьи закрыто.

Интересное Покупки ТехникаРазное Отдых Статьи Строительство Услуги Общество Хобби Культура Советы Уют