如何在不重新加载/重启fpm本身的情况下将池添加到FPM(nginx)?
我正在构建一个环境(在ubuntu 10.04.02机器上)来处理一个包含许多(应该支持至少1000个)子域的网站,每个子域由不同的FPM池和不同的用户提供服务.
没什么新鲜的;我的问题是创建(并启动)一个新的fpm池而不必重新加载/重启FPM,这将导致(我知道,真的很快)停机.
我写了一个python守护进程,需要时:
>创建系统用户>设置子域的Web根目录>在我的/etc/php5/fpm/fpm.d/文件夹中创建subdomain.conf
我google了但我没有找到一种方法来调用fpm使用一个池,这可能是一个“临时”的解决方案:主fpm实例运行所有池,evey新的一个得到他自己的fpm实例,然后与一个cron我停止和每周/每月重新加载fpm / dontknowyet
如果重要,服务器在nginx上运行,配置为使用unix socket到fcgi,这是我的nginx测试配置:
server{
listen 80;
server_name ~^(?<domain>.+)\.test\.local$; # foo.test.local > myapp_foo
root /var/www/myapp/subdomains/myapp_$domain/htdocs;
location / {
index index.php;
}
location ~* \.(gif|jpg|png|ico)${
expires 30d;
}
location ~ \.php${
fastcgi_pass unix:/var/web-sock/myapp_$domain-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
..和我的子域-fpm.conf:
[myapp_foo]
listen = /var/web-sock/myapp_foo-fpm.sock
user = myapp_foo
group = myapp_foo
pm = dynamic
pm.max_children = 30
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 30
我已经尝试将php5-cgi和/或spawn-fcgi用于新的子域,但是有点不稳定,并且当并发级别增长时经常崩溃.
任何的想法?