process_timeout以及日志存储的疑问

houniao506

请教大佬:
1、process_timeout 默认是30秒,(临时开启了declare(ticks=1);)
①是单次请求总和不能超过30秒,对吗?如果是,那么怎么理解长时间任务,长时间任务肯定是不止30秒的
②process_timeout会是进程内存爆满的原因吗?

2、系统的日志,看不全,很多省略号,请问有什么办法?call_user_func的内容显示不完整,看的很麻烦,每次都要靠猜
2019-11-30 15:24:13 pid:23799 process_timeout:
1 [internal function]: Events::onMessage('7f000001138c000...', '{"type":"ordert...')
2 /data/commonLibs/vendor/workerman/gateway-worker/src/BusinessWorker.php(395): call_user_func('Events::onMessa...', '7f000001138c000...', '{"type":"ordert...')
截图

3、最近每个进程的内存占用非常高,但是日志里看不到。所以请问我怎么知道是哪些任务执行后,没有回收内存?注:调试busy的方法对我好像没有什么用

2696 1 0
1个回答

walkor

1、process_timeout
① process_timeout 是onXXX(比如onMessage)里业务代码执行太慢,执行超过30秒。这里是指执行一次onXX的时间。
② process_timeout 和内存没关系

2、系统的日志
你可以改源码打印下debug_backtrace 或者 Exception::getTrace获得更完整的调用数据

3、内存
虽然业务已经将内存释放,但是php有时不会将业务释放的内存交还操作系统,这种不能算内存泄漏,因为php会重复使用这段内存。如果内存不是无限增长就没问题,如果是无限增长,则考虑哪里发生了内存泄露,你可以网上找下php的内存工具来定位。

  • 暂无评论
年代过于久远,无法发表回答
🔝