进程占用内存太多

z985342160

开启多个进程,每个进程内能过定时来执行任务。

项目描述:相于当爬虫,只是调用的是平台提供的API,抓去产品列表、对手价格,然后实现自动改价格(大部分都是平台提供的API)。

目前账号已经在达到150个。有的账号下的产品有2-3千。服务器配置还是最近才升到8核16G。CPU和内存使用率特别高。最近我发现有进程占用的内存超过1G(SHR)了,有的才几十。我猜测是某些账号下产品太多导致内存占用过高。根据文档查找进程ID,基本都是IO等待。

我准备使用memory_get_usage/memory_get_peak_usage记录每次运行的内存使用情况(记录账号ID),但观察一段时间,相减的结果只有30M以内(大部分在几M),这与top看到的相差太大。我怎么计算一次任务的内存占用情况呢?

我想找到是哪个账号,然后单独测试看是程序哪里的问题。

阅读 777
3个回答

yongdao35

SHR 不是实际占用内存,RES 才是

  • 暂无评论
z985342160

看错了,是RES

  • 暂无评论
dignfei

curl会内存泄露。你需要访问一定数量后重启进程

  • pader 2021-05-10

    如果都是调用 API 的,肯定得使用 Workerman 的异步 HTTP 组件啊,否则你一个请求就阻塞了整个进程。