laravel 中有四五个定时任务,最近在执行时候发现网站卡顿,错误日志中出现没有可用内存的提示。
因为服务器是作为开发来使用的,1 核 1G 的阿里云,当时的情况就像下图这样;
然后我执行了ps aux --sort -rss
,查看相关的情况,以下是部分截图:
发现其中有很多列都有重复,而且还有很多的时间都很靠前,于是我就 kill 了一两个重复的,
然后:
可用内存变多了。
我有些疑惑:
- 这里的项为什么会重复,为什么老早的还在,是常驻内存的?
- 这样直接 kill 掉会不会出现意外情况?
可以在
handle()
方法里加上\DB::connection()->disableQueryLog();
来关闭查询日志。这个日志在查询数据库时会一直累加,记录在
$queryLog
这个数组里,会导致内存占用越来越高。\DB::getQueryLog()
数组后边会不断追加查询记录,而应用内存占用也会因此越来越高。\DB::getQueryLog()
数组会一直是空的,而应用内存占用会基本保持不变。