Ubuntu系统配置多实例php-fpm服务的例子

php-fpm服务一般情况下我们只会配置一个php-fpm了,如果我们碰到要实现多实例php-fpm服务要如何来配置呢,下面一起来看看吧。 LNMP或者LNAMP环境的配置这里不做介绍,只讲在LNMP环境的基础上配置多实例的过程。因为我在使用的是LNAMP环境,所以额外编译一份php到/usr/local/php-fpm/,配置文件在/etc/php-fpm/,并在此基础上做的笔记。 先修改三个值:

  1. 以static方式,也就是固定进程数量运行php-fpm。
  2. 每个实例建立100个worker进程。(不宜太多,避免不稳定)
  3. 每个进程执行完200次请求即退出。(避免PHP的内存泄露问题,也就是内存越用越多)

默认的conf文件可以在php.ini里查找. 假如是:/etc/php-fpm/php-fpm.conf,有些默认是这路径/etc/php5/fpm/pool.d/www.conf.

sed -i 's#pm = dynamic#pm = static#' /etc/php-fpm/php-fpm.conf
sed -i 's#pm.max_children = 5#pm.max_children = 100#' /etc/php-fpm/php-fpm.conf
sed -i 's#;pm.max_requests = 500#pm.max_requests = 200#' /etc/php-fpm/php-fpm.conf

以下为复制php-fpm.conf和php-fpm服务管理脚本的命令

cd /etc/php-fpm/
cp php-fpm.conf  php-fpm-1.conf
sed -i 's#listen = 127.0.0.1:9000#listen = 127.0.0.1:9001#' php-fpm-1.conf
sed -i 's#\[www\]#\[php-fpm-pool-1\]#' php-fpm-1.conf
sed -i 's#pid = run/php-fpm.pid#pid = run/php-fpm-1.pid#' php-fpm-1.conf
cd /etc/init.d/
cp php-fpm  php-fpm-1
sed -i 's#/etc/php-fpm/php-fpm.conf#/etc/php-fpm/php-fpm-1.conf#' php-fpm-1
sed -i 's#/var/run/php-fpm.pid#/var/run/php-fpm-1.pid#' php-fpm-1
service php-fpm-1 restart

执行完上面的命令即复制了一份php-fpm,服务名和配置文件名均为php-fpm-1。 再复制更多份,把上面的命令上的-1替换为-2,listen监听端口往上修改,然后再执行一遍就OK。 然后写一个restart_php_fpm.sh的文件,内容为

service php-fpm-1 restart
service php-fpm-2 restart
service php-fpm-3 restart
#... ...

可以用来启动和重启所有的php-fpm实例。关闭用命令killall php-fpm即可。 然后是Nginx配置。 在http段加入:

upstream php-fpm-pool {  
    server 127.0.0.1:9001;
    server 127.0.0.1:9002;
    server 127.0.0.1:9003;
    server 127.0.0.1:9004;
    server 127.0.0.1:9005;
}

# 修改server段:
location ~ .*\.(php|php5)?$ {
    fastcgi_pass php-fpm-pool;
    fastcgi_index index.php;
    include fastcgi.conf;
}

配置结束。 多实例在效果上基本等于多台机器的负载均衡,但是我个人还是比较倾向于在单台上配置多实例(累加资源相等的情况下),在一台机器上配置、维护、使用都要方便的多。


相关推荐


评论(0条)

暂时还没有评论,第一个来评论吧!


我要发表看法

引用   粗体   链接   缩进  

最近编辑

热门标签