首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux内存管理和大文件

Linux内存管理和大文件
EN

Stack Overflow用户
提问于 2011-01-24 23:09:58
回答 1查看 265关注 0票数 0

我从远程服务器获取图像对象,然后尝试使用它们的API将它们上传到Rackspace的云文件中。如果我需要购买更多的内存,那么需要多少RAM来完成这个任务(当前的开发服务器只有512 is )。

在执行脚本时,我是:

  • 查询我的本地数据库,为每个id查询一组id(约1,000个)
  • ,查询一个远程服务器,该服务器返回10-20个图像对象,每个图像为25-30k
  • 创建一个云文件容器,基于从远程服务器返回的每个图像对象的id,为从远程服务器返回的每个图像对象创建一个图像对象,在容器中创建一个图像对象,并在本地db中向该对象(
  • 更新行)写入添加图像的日期时间H 210f 211

这在一小部分ids上执行相对较快,但是100 (所以700-1k图像)可能要花费5-10分钟,而且任何更多的东西似乎都会无限期地运行。已经尝试了以下几点,但收效甚微:

  • 使用php的set_timeout在几分钟后杀死了脚本,计算出这会清除分配给执行的内存,使我能够从我停止的地方开始工作,并在集合中工作是比较小的部分。但是,
  • 从未抛出此错误,而是在图像对象上传后取消包含图像对象的数组键(而不是just the reference inside the loop)。

PHP的memory_limit设置为128 is,运行'tops‘命令我看到用户'www-data’消耗了16%的内存资源。然而,用户列表中不再出现这一点,但我仍然看到这一点:

代码语言:javascript
复制
PID  USER      PR   NI VIRT RES  SHR  S %CPU %MEM  TIME+    COMMAND
2400 mysql     20   0  161m 8220 2808 S    0  1.6  11:12.69 mysqld

...but TIME+永不改变。我看到仍然有一个任务在运行,但是这些值从未改变过:

代码语言:javascript
复制
Mem:    508272k total,   250616k used,   257656k free,     4340k buffers

为冗长的帖子道歉-不完全确定什么(如果有的话)是有用的。这不是我的专业领域,所以有点抓稻草。提前谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-25 03:39:47

MySQL是一个守护进程--它将继续运行,并处于内存中,直到它死掉或被您杀死为止。TIME+是自上次重新启动以来使用的cpu时间。如果它是空闲的(%CPU = 0),那么TIME+就不会增加,因为没有消耗cpu时间。

您是否检查过cloudfiles API是否泄漏了某种句柄?您可能正在取消从服务中检索到的图像对象( service -> You ),但是Cloudfiles API仍然必须将该映像发送回门外(您->Rackspace),并且可能会泄漏到某个地方。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4788260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档