nginx和php-fpm的配置

一、nginx

配置文件:nginx.conf

原则:woker进程数与CPU核数一致。(master进程用以管理woker进程,高并发可以考虑woker进程设置提高为CPU核数*2)

参数:worker_processes 1;

原因:nginx作为代理,是提交请求给php-fpm的,并没有涉及到IO(即读写),只是启动程序,时间极短无阻塞问题。就算你设置了大于内核数,也只是在做队列等待,没有意义。

 

二、php-fpm

配置文件:php-fpm.conf

关键参数:

//设置类型static(静态)或者dynamic(动态),静态下是固定的进程数,动态的情况下,会关闭或开启新的进程
pm = dynamic

//静态方式下开启的php-fpm进程数量
pm.max_children = 100    

//动态方式下的起始php-fpm进程数量
pm.start_servers = 30    

//动态方式下的最小php-fpm进程数
pm.min_spare_servers = 20     

//动态方式下的最大php-fpm进程数。
pm.max_spare_servers = 100    

//当一个 PHP-CGI 进程处理的请求数累积到 500 个后,自动重启该进程。如果设置为 ’0′ 则一直接受请求。对内存泄漏的程序非常有用。
 pm.max_requests = 500

————

1、开始的时候一个php-fpm进程只占用3M左右内存,运行一段时间后就会上升到20-30M的原因了。

2、对于内存大的服务器(比如8G以上)来说,指定静态的max_children实际上更为妥当,因为这样不需要进行额外的进程数目控制,会提高效率。

3、对于小内存的服务器来说,比如256M内存的VPS,即使按照一个20M的内存量来算,10个php-cgi进程就将耗掉200M内存,那系统的崩溃就应该很正常了。应该合理设置动态。

4、配置建议:内存/30。如我的阿里云为1024M/30M=34.1,所以阿里给我配置了35。因为一个php-fpm运行稳定一般占20-30M

 

posted @ 2018-11-24 16:45  小寒1206  阅读(634)  评论(0编辑  收藏  举报