发布网友 发布时间:2022-05-12 08:42
共4个回答
懂视网 时间:2022-05-12 13:03
解决php-fpm进程不释放内存问题上通过减少php-fpm进程总数来达到减少php-fpm内存占用的问题,实际使用过程中发现php-fpm进程还存长期占用内存而不释放的问题。解决的方法就是减少pm.max_requests数。(推荐学习:PHP编程从入门到精通)
最大请求数max_requests,即当一个 PHP-CGI 进程处理的请求数累积到 max_requests 个后,自动重启该进程,这样达到了释放内存的目的了。以1GB内存的VPS主机设置为例(如果你设置的数值没有达到释放内存可以继续调低):
pm.max_requests = 500
当php-fpm进程达到了pm.max_requests设定的数值后,就会重启该进程,从而释放内存。下图是我测试后的效果,可以看出php-fpm进程被强制结束并释放了内存。
对于大内存以及对并发和可用性要求的话,建议使用static管理模式+最大的pm.max_children。如果是小内存的服务器,建议使用dynamic或者ondemand模式,同时降低pm.start_servers和pm.max_spare_servers进程数。
热心网友 时间:2022-05-12 10:11
这个,不是PHP本身的问题。热心网友 时间:2022-05-12 11:29
用进程锁机制,每次只允许一个进程实例运行。热心网友 时间:2022-05-12 13:04
PHP启动第二步 8. 当一个页面请求发生时,SAPI层将控制权交给PHP层。于是PHP设置了用于回复本次请... PHP调用每个扩展的MSHUTDOWN方法,这是各个模块最后一次释放内存的机会。 一个典型的RSHUTDOWN方法...