Closed yiliaofan closed 8 years ago
竟然内存报错:
[06-Nov-2015 18:45:10 Asia/Shanghai] PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 1048577 bytes) in /home/work/ww/vendor/guzzlehttp/psr7/src/Stream.php on line 211
@matyhtf 老大,多谢啊
这个不一定是扩展的内存泄露, 可能是/guzzlehttp/psr7/src/Stream.php 这个中的静态变量或是数据 push 之类引起的,swoole 要注意对某些变量做 追加的操作
多谢 @ewenlaz ~
还真是Stream.php报错了。。 @matyhtf 老大,这块可能的原因是?我使用完都unset或者=null处理了
如下log:
[06-Nov-2015 23:26:11 Asia/Shanghai] PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 1048577 bytes) in /home/work/ww/vendor/guzzlehttp/psr7/src/Stream.php on line 211 [06-Nov-2015 23:26:13 Asia/Shanghai] PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 1048577 bytes) in /home/work/ww/vendor/guzzlehttp/psr7/src/Stream.php on line 211
同时在使用的过程中发现gmagick,长时间运行有可能coredump,没办法用回了gd库,多谢~
检查对全局变量和类静态变量的使用 。
检查是有静态变量的引用,如下:
$client = self::$client; $client->doprocess(); unset($client); 后来改成 $client = new Client(); $client->doprocess(); unset($client); 还是有内存增长的现象,但一般增长到一个值后,逐渐稳定下来。。
这块防止内存泄露,可否说的详细点,具体在worker/task里,有什么需要注意的? @matyhtf 谢谢~!
Task进程可以设置task_max_request解决内存泄漏问题。
日志如下:
逻辑大概是: event work接请求,然后抛出到task worker异步对图片的处理。。我压测后出现上面的log;
另外,在写这块的逻辑时,发现在task worker有内存泄露, 通过在onTask回调里面,强制unset解决,还有问题 这块内存泄露问题比较大,一般在event/task worker在写逻辑的时候有什么注意事项么?谢谢~
用的版本是:1.7.17和1.7.18测试的
非常感谢~ @matyhtf 老大,有空帮看下,谢谢~