php 用户中断操作,【php】php-fpm的中断和启动控制

php-fpm,如何控制访问特别长的请求?是否有中断的机制?

max_execute_time(php.ini): 这个是用户态时间,不累计io操作,但是大多数操作都是io会慢,所以这个参数只能适用于cpu密集型,大部分应用不适合;

request_terminate_timeout(php-fpm): 这个是request整个处理超时,是计算io操作的,

request_terminate_timeout,设置为5s,超过这个时间点,php进程结束,然后给客户端返回502.

php-fpm对于这两种设置的处理都是直接kill掉进程,再启动一个新的worker进程,整个操作代价是比较高的,但是重启有个好处是内存不会被不断消耗,即使有小部分泄漏都没事。

需要注意的是:max_execute_time是php.ini中设置的,request_terminate_timeout是php-fpm中设置的。

另外,如果想解决这种超时问题,业务层面的php代码优化,接口优化才是处理超时的最终解决方案。

二,其他php-fpm参数

; Possible Values:

; static - a fixed number (pm.max_children) of child processes;

; dynamic - the number of child processes are set dynamically based on the

; following directives. With this process management, there will be

; always at least 1 children.

; pm.max_children - the maximum number of children that can

; be alive at the same time.

; pm.start_servers - the number of children created on startup.

; pm.min_spare_servers - the minimum number of children in 'idle'

; state (waiting to process). If the number

; of 'idle' processes is less than this

; number then some children will be created.

; pm.max_spare_servers - the maximum number of children in 'idle'

; state (waiting to process). If the number

; of 'idle' processes is greater than this

; number then some children will be killed.

pm = dynamic

pm.max_children = 5

pm.min_spare_servers = 1

pm.max_spare_servers = 2

; The number of requests each child process should execute before respawning.

; This can be useful to work around memory leaks in 3rd party libraries. For

; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.

; Default Value: 0

pm.max_requests = 500

; The timeout for serving a single request after which the worker process will

; be killed. This option should be used when the 'max_execution_time' ini option

; does not stop script execution for some reason. A value of '0' means 'off'.

; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)

; Default Value: 0

request_terminate_timeout = 5

pm相关的参数,都是和进程管理相关的。

pm=dynamic表示进程数是动态生成。

pm.max_children 表示允许生成的最大子进程数

pm.min_spare_children 表示最小的空闲子进程

pm.max_spare_children 表示最大的空闲子进程

pm.max_requests = 500; 整个代表的是每个子进程在重新生成之前要处理多少个请求数。这个对于内存泄漏有很好的抑制作用。

也就是说子进程在处理到500个请求时候一定会重新生成。

php-fpm,默认在处理多个并发请求时,如果当前进程不够用时,最多能开到max_children个子进程数。

但是这些临时生成的子进程,并不是请求完毕就会释放,而是得等到因为某些原因需要退出时才会退出。

常见的有两个原因:

A,设定了pm.max_requests参数,那么处理了这么多请求一定会退出;

B,如设定了request_terminate_timeout,一个请求超过了这个限定,该对应的php-fpm子进程也会被kill掉。

标签:fpm,max,number,中断,php,children,pm

来源: https://www.cnblogs.com/helww/p/11201318.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值