php-fpm - патчи для улучшения работы php в FastCGI from anight

confguru

ExAdmin
Команда форума
php-fpm - патчи для улучшения работы php в FastCGI from anight

Andrei Nigmatulin представил набор патчей http://php-fpm.org к PHP 4/5, значительно упрощающих использование FastCGI sapi в production.

Возможности php-fpm:
# Управление процессами. Возможность "плавно" останавливать и перезапускать php воркеры без потери запросов. Возможность плавно обновлять конфигурацию и binary без потери запросов;
# Ограничение ip адресов, с которых могут приходить запросы от web сервера;
# Динамическое количество процессов, в зависимости от нагрузки (TODO);
# Запуск воркеров с разными uid/gid/chroot/environment и разными php.ini опциями;
# Логирование stdout & stderr рабочих процессов;
# Аварийный перезапуск всех процессов при случайном разрушении shared memory opcode cache, если используется акселератор;
# Принудительное завершение подвисших процессов, если set_time_limit() не срабатывает (TODO);
# Бонус: фирменные фичи

На данный момент доступны версии для php-4.4.7 и php-5.2.3
 

confguru

ExAdmin
Команда форума
Поставил себе, вроде нормально, но не помешает
скриптик для запуска останова этого дела и показа конфигурации

-~{}~ 10.08.07 01:06:

На freebsd 6.2 при делании сначала
make patch (Sunosin) вылезло такок..
***************
*** 1301,1307 ****
install_targets="$PHP_INSTALL_CLI_TARGET $install_targets"
;;
*)
- install_targets="install-sapi $PHP_INSTALL_CLI_TARGET $install_targets"
;;
esac

--- 1310,1316 ----
install_targets="$PHP_INSTALL_CLI_TARGET $install_targets"
;;
*)
+ install_targets="install-sapi $install_fpm $PHP_INSTALL_CLI_TARGET $instal
;;
esac

-~{}~ 10.08.07 01:07:

для configure.in

-~{}~ 10.08.07 01:33:

вываливается при make
Zend/zend_execute.lo sapi/cgi/fastcgi.lo sapi/cgi/cgi_main.lo sapi/cgi/getopt.lo main/internal_functions.lo -lcrypt -lcrypt -lm -lxml2 -lz -liconv -lm -lcrypt -lcrypt -o sapi/cgi/php-cgi
libtool: link: `sapi/cgi/fastcgi.lo' is not a valid libtool object
*** Error code 1

-~{}~ 10.08.07 01:40:

там патчик такой накладывается..

=================================
--- configure.in.orig Mon Jun 4 08:08:43 2007
+++ configure.in Mon Jun 4 08:13:47 2007
@@ -233,7 +233,6 @@
dnl .
dnl -------------------------------------------------------------------------

-PTHREADS_CHECK
PHP_HELP_SEPARATOR([SAPI modules:])
PHP_SHLIB_SUFFIX_NAMES
PHP_SAPI=default
@@ -258,7 +257,6 @@

if test "$enable_maintainer_zts" = "yes"; then
PTHREADS_ASSIGN_VARS
- PTHREADS_FLAGS
fi

divert(3)
@@ -1123,7 +1121,7 @@
EXPANDED_DATADIR=$datadir
EXPANDED_PHP_CONFIG_FILE_PATH=`eval echo "$PHP_CONFIG_FILE_PATH"`
EXPANDED_PHP_CONFIG_FILE_SCAN_DIR=`eval echo "$PHP_CONFIG_FILE_SCAN_DIR"`
-INCLUDE_PATH=.:$EXPANDED_PEAR_INSTALLDIR
+INCLUDE_PATH=.:${prefix}/share/pear

exec_prefix=$old_exec_prefix
libdir=$old_libdir
@@ -1295,22 +1293,19 @@
INLINE_CFLAGS="$INLINE_CFLAGS $standard_libtool_flag"
CXXFLAGS="$CXXFLAGS $standard_libtool_flag"

-all_targets="$lcov_target \$(OVERALL_TARGET) \$(PHP_MODULES) \$(PHP_CLI_TARGET)"
-install_targets="$install_modules install-build install-headers install-programs $install_pear"
+all_targets="$lcov_target \$(OVERALL_TARGET) \$(PHP_MODULES) \$(PHP_CLI_TARGET) \$(PHP_CGI_TARGET)"
+install_targets="$PHP_INSTALL_CLI_TARGET $PHP_INSTALL_CGI_TARGET $install_modules install-build install-headers install-programs $install_pear"

case $PHP_SAPI in
- cli)
- install_targets="$PHP_INSTALL_CLI_TARGET $install_targets"
- ;;
- *)
- install_targets="install-sapi $PHP_INSTALL_CLI_TARGET $install_targets"
+ apache|apache2handler)
+ install_targets="install-sapi $install_targets"
;;
esac
PHP_SUBST(all_targets)
PHP_SUBST(install_targets)

-PHP_INSTALL_HEADERS([Zend/ TSRM/ include/ main/ main/streams/ regex/])
+PHP_INSTALL_HEADERS([Zend/ TSRM/ main/ main/streams/ regex/])

PHP_ADD_SOURCES(TSRM, TSRM.c tsrm_strtok_r.c tsrm_virtual_cwd.c)

-~{}~ 10.08.07 02:19:

Убрал из папки files
patch-configure.in
patch-sapi_cgi_config9.m4

вроде собралось...
там конфликтовало с патчем anighta

-~{}~ 10.08.07 02:27:

заработало..

но проще собрать из исходников :)

-~{}~ 10.08.07 02:40:

Прощай индеец.. :) Теперь ты не будешь жрать мою память :)

-~{}~ 26.09.07 21:18:

Любопытное письмо в рассылку пришло :)

На тестовом VPS подбираю конфигурацию,
цель - оптимизация по расходу памяти.

делаю ab -n 10000 -c 4 http://test.******.ru/

apache2+mod_php = 11 req/sec
nginx+php-fcgi+spawn_fcgi = 16 req/sec
apache2+mod_php+xcache = 40 req/sec
nginx+php-fcgi+xcache+spawn_fcgi = 55 req/sec
nginx+php-fcgi+xcache+php-fpm = 155 req/sec !!!!!!!!!

200мгц процессор и 256 памяти, скрипт
делает 10-12 запросов на чтение и 3 на
запись к Mysql-Innodb расположенной на том же
сервере.

Проверял неоднократно, разброс значений
укладывается в 15%.

Есть подозрение, что причина в собранном
из исходников php+fpm, неужто это может дать
рост производительности в полтора раза?
mod_php из штатного пакета Debian

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
14067 root 16 0 26824 3388 1372 S 0 1.3 0:00.57 php-cgi-fcgi
16283 alex 16 0 27600 5884 3004 S 0 2.2 0:10.81 php-cgi-fcgi
22353 alex 15 0 27600 5896 3008 S 0 2.2 0:09.45 php-cgi-fcgi
27822 alex 16 0 27600 5904 3016 S 0 2.3 0:12.00 php-cgi-fcgi

как видно, и памяти на каждый fcgi идёт как
минимум в два раза меньше по сравнению с
mod_php+apache
 

fixxxer

К.О.
Партнер клуба
http://php-fpm.anight.org/download.html

19.01.2008 v 0.5.5

- add: php-4.4.8 support
- add: error log level
- change: php-4.4 fastcgi sapi upgraded to 5.2.5
- add: --with-fpm-conf, --with-fpm-log and --with-fpm-pid configure options
- fix: php-fpm was failed to compile on Solaris
- fix: better signal handling on MacOSX
- add: sample init.d script for starting php-fpm

+ экспериментальный freebsd port: http://groups.google.ru/group/highload-php-ru/browse_thread/thread/1e07d10776ab0051
 

MiksIr

miksir@home:~$
Аналоги есть ;) apache+mod_php =)

от Andrei Nigmatulin
дата 31 марта 2008 г. 15:42
> Андрей можно узнать когда данная фича фича появится в fpm?
Пока не могу сказать точно. Код уже частично написан, просто тупо нехватает времени сесть и доделать.
 

Alexandre

PHPПенсионер
в следующей версии ветки php 5 вроде как php-fpm должен войти в дистрибутив.
у меня работает пока на development

-~{}~ 29.04.08 20:36:

Кто-нибудь в курсе, когда это появится? Очень нужно...
в разработке, может быть в новой версии появится,

вообще-то я переговорил сегодня с Андреем, он не против сделать флип-чарт по php-fpm
обещал подготовить тезисы
 

confguru

ExAdmin
Команда форума
Давайте уж со слайдами.. в воркшоп зале?
Минут на 15-20?

Ох и нассыщенная программа получится...
 

confguru

ExAdmin
Команда форума
Anight - будет на экслюзивном workshopе PHPConf 2008.
Следите за программой.. PHPConf - это больше чем конференция...

МЕСТ НЕТ!
SOLD OUT!

-~{}~ 21.09.09 13:42:

Проект переехал на http://php-fpm.org

Anight - будет на PHPConf 2009 (кто хочет проставит автору пивасика - не пропустите)
 

dimagolov

Новичок
Получил в рассылке [email protected]
from dreamcat four <[email protected]>
reply-to [email protected]
to [email protected]
date Mon, Nov 23, 2009 at 9:52 AM
subject Ownership of php-fpm project
mailing list <highload-php-ru.googlegroups.com> Filter messages from this mailing list
mailed-by googlegroups.com
signed-by googlegroups.com
unsubscribe Unsubscribe from this mailing-list

hide details Nov 23 (3 days ago)


Hello,


There have been some developments on the highload-php-en recently. It
seems that we should think to give all code ownership to you guys here
on the Russian list. Otherwise for english documentation / website,
that's seems to be held by the responsibility of Mike Shadle. The rest
of this discussion is explained purely in terms of source code
ownership ;)

Maybe please translate to Russian for the others.
You could be interested for maintaining the php-fpm project so then
please email me direct.


Advantages for Russian maintainer
===========================

* dreamcat4 has already finished now all his major work on php-fpm

* The english side doesn't have a moving community of C programmers

* By contrast, generally C programming seems especially strong here in Russia

* The php-fpm project is also complimentary and associated to nginx,
which is also Russian online community

* I've noticed that there are enough people here on php-highload-ru
who seems to know what they are talking about

* As the previous maintainer, I don't have quite enough C experience
by myself to fix upcoming bugs in php-fpm sapi code.

* Same answer for making a new feature such as suexec, or adaptive process.

* Mike seems to be happy to leave decisions for the source code left to me.

* Its also true that php core team have Russian speaker also. I don't
know if that makes much help or not.

* We have open bug for introducing php-fpm in 5.3

* Its a small project. And good fun. So its not too much work or
expectations to take on.
Come on guys!



So what's the requirement?
====================

* Can understand C language, and / or compilation scripts for gentoo
or Debian / Freebsd etc

* Either knows or wants to learn version control system.
* This is necessary for git and github. ( git-svn for php.net upstream).

* To have people to informally but also officially maintain the code in github.

* To publish the best recommended packages and ports / ebuild to
readme files? Yes/no?

* 1 person for knowing and managing the collaborators who can commit
directly to account.
(Other collaborators can fork and branch / merge)

* To be at least Russian native speaker. So not me. Sorry!

* We should encourage an easy atmosphere multiple collaborators who
just help occasionally.
No pressure, and more like group responsibility. Continue to discuss
on this mailing list.

* To be organised with technical people. The core skill set is
familiarity with Unix / 'C'

* A person to also merge other people's patches into the official code

* Maybe split to 2 branches a production branch and a development branch.
(Currently there was only 1 production branch).

* Eventually you want to give up the project to somebody else and
especially to the official php.net





dreamcat4
[email protected]
 

DYPA

Настоящая dypa (c)
http://news.php.net/php.internals/46277 - ура, в php 5.3 включат :)
 

confguru

ExAdmin
Команда форума
Что -то у меня не ставиться..

patch -d php-5.2.12 -p1 < php-5.2.12-fpm-0.5.13.diff
patching file configure
Hunk #1 succeeded at 773 (offset -267 lines).
Hunk #2 FAILED at 12434.
Hunk #3 FAILED at 12475.
Hunk #4 succeeded at 12421 (offset -270 lines).
Hunk #5 succeeded at 12487 (offset -270 lines).
Hunk #6 succeeded at 18660 (offset -270 lines).
Hunk #7 succeeded at 109297 (offset 125 lines).
Hunk #8 succeeded at 117582 (offset 149 lines).
Hunk #9 succeeded at 118286 (offset 149 lines).
Hunk #10 succeeded at 118341 (offset 150 lines).
2 out of 10 hunks FAILED -- saving rejects to file configure.rej
patching file configure.in
Hunk #1 succeeded at 295 (offset -7 lines).
Hunk #2 succeeded at 518 (offset -7 lines).
Hunk #3 succeeded at 1262 (offset 1 line).
 

fixxxer

К.О.
Партнер клуба
а это не страшно, просто configure перебилдить надо

rm configure
./buildconf --force
 
Сверху