我正在用PHP编写一个守护进程。我没有上大学的OS课程。所以,我想知道,我需要查看哪些服务器/其他统计信息,以确保我的守护进程不会消耗太多系统资源,并且能够在有更多mysql记录时进行扩展。基本上,我的守护进程正在处理一堆mysql表行。
例如,我知道我需要查看守护程序处理一定数量的行所花费的时间以及它使用的内存量。但是,我如何确定它是否泄漏内存?另外,我应该通过什么其他系统参数来判断守护进程呢?
答案 0 :(得分:2)
但是,我该如何确定它是否泄漏内存?
您在这里询问的内容与操作系统关系不大。你关心内存使用是正确的。这个问题的正确答案远远超出了帖子的范围,但是你可能想先看一下引用计数如何用于内存管理,并确保你已经在PHP安装中配置了循环引用检查器。当你发现mysql客户端在运行时阻止PHP并且忽略了PHP的内存限制时,情节变浓了 - 所以如果你获取的结果集太大,你就不会知道它,直到mysql_query返回并且你的代码崩溃了:总是使用查询(或PK选择)中的LIMIT以及首选项在监视程序下运行守护程序。使用不同的内存限制进行测试,低于您打算在生产中使用的内存限制。
请注意,PHP只会在认为内存不足时才开始通过垃圾回收为自己提供更多内存。
将大量内容写入日志文件!
答案 1 :(得分:0)
取决于你将如何执行守护进程在Linux中启动,然后让它处理你预期的很多行(100k +,或需要大约30秒执行的东西)。看看内存使用量增加的速度:小任务发生得太快,需要运行过程。
然后确保你取消设置($ objectOrString),一旦你完成使用它们就关闭所有文件和数据库的连接:这将有所帮助。
同样,根据此文件的作用,您可能希望让它终止并使用cron作业启动它,以便PHP可以为您运行其垃圾收集。