作者:云聪京初瑞子_617 | 2021-08-28 20:36
目前业务需要实现一个时时分析数据流的功能,需要精确到秒级别,原本打算用swooletask实现一个任务服务,但是目前还没有对应的机器跑服务端,所以暂时决定用swoole的多进程模型结合swoole的timer实现,过程中
目前业务需要实现一个时时分析数据流的功能,需要精确到秒级别,原本打算用swoole task实现一个任务服务,但是目前还没有对应的机器跑服务端,所以暂时决定用swoole 的多进程模型结合swoole 的timer实现,过程中遇到一个父进程,内存占用不断飙升的问题,求解?
其中代码逻辑是,在父进程中创建6个swoole_process,通过swoole_timer隔一秒钟分发任务给空闲的子进程,并标记该进程为忙碌状态,子进程处理完任务后与父进程通过管道通信,通知父进程当前进程处于空闲状态,通过父子之间的通信,起到类似"父进程维护一个子进程池"的效果,其中某个进程空闲超过一段时间或者超过一定处理任务数,父进程即可通知该进程销毁并拉起新的子进程。代码逻辑大概这样,但是遇到的问题是父进程的内存占用逐渐变大,请问swoole大神们该如何解决?是不是因为父进程维护这个类似子进程池导致的呢?请赐教
回复内容:
目前业务需要实现一个时时分析数据流的功能,需要精确到秒级别,原本打算用swoole task实现一个任务服务,但是目前还没有对应的机器跑服务端,所以暂时决定用swoole 的多进程模型结合swoole 的timer实现,过程中遇到一个父进程,内存占用不断飙升的问题,求解?
其中代码逻辑是,在父进程中创建6个swoole_process,通过swoole_timer隔一秒钟分发任务给空闲的子进程,并标记该进程为忙碌状态,子进程处理完任务后与父进程通过管道通信,通知父进程当前进程处于空闲状态,通过父子之间的通信,起到类似"父进程维护一个子进程池"的效果,其中某个进程空闲超过一段时间或者超过一定处理任务数,父进程即可通知该进程销毁并拉起新的子进程。代码逻辑大概这样,但是遇到的问题是父进程的内存占用逐渐变大,请问swoole大神们该如何解决?是不是因为父进程维护这个类似子进程池导致的呢?请赐教
父进程内存泄漏了,某些全局变量数组未即时释放内存导致的。检查你的代码。