OSX上的Ruby进程保持在90%以上。这是怎么回事?

| 我在本地构建了少数Ruby / Rails应用程序。我最近注意到,无论我正在使用哪个应用程序,我的Ruby进程都将达到90%以上的速度,CPU风扇将启动,并且除非我杀死傻瓜,否则不会停止它。我正在使用哪个应用似乎并不重要。有任何想法吗?有什么方法可以追踪出什么问题了吗? 我已经在Mongrel,Apache / Passenger和POW上运行了这些应用程序,每次得到相同的结果。 而且顺便说一句,我没有任何作业或任务持续运行。这种CPU占用正在发生,而服务器没有受到攻击。 我的系统: Ruby:Ruby 1.8.7(2009-06-12补丁程序级别174)[universal-darwin10.0] Rails:Rails 3.0.4 OSX 10.6.7,MBP 2.53 GHz Core 2 Duo     
已邀请:
您是否尝试过打开终端窗口并运行
top
或打开
Activity Monitor
,然后分别运行每个窗口并查看CPU何时开始爬升?
top
Activity Monitor
都可以让您根据应用程序正在生成的CPU负载进行排序。使用
top -o cpu
并查看最高负载是您运行的应用程序,还是该应用程序正在运行的其他原因。 Rails应用程序启动时会出现峰值,但在等待传入连接时会稳定下来。如果您有定期执行的任务,则应该看到那些导致CPU活动再次激增,然后在任务结束时下降的任务。 您正在使用MacBook Pro。你有多少RAM?也许您的应用程序运行不足,并且必须交换太多?那会影响您的整体系统性能,使CPU更加努力地工作,从而导致CPU发热。 MacBook Pro的硬盘是专为提高电池效率而不是高性能而设计的,因此,如果您用大量的数据库I / O砸硬盘,则可能会使机器升温并导致应用程序等待由于记录锁定或某种争用。 有很多不同的情况会导致您的计算机和应用程序运行缓慢,并且您实际上并未给我们提供很多帮助,因此这些是我研究的一些一般性想法。     
我也注意到了这一点,并且能够指出它。.如果我运行top -o cpu,然后打开另一个终端窗口并运行IRB,然后关闭终端窗口而不退出IRB,那么top突然显示一个红宝石进程在大约90%的CPU上。如果我进行相同的实验,但在关闭窗口之前退出IRB,则没有90%的红宝石猪。 因此,显然我们需要小心,不要关闭终端窗口,除非我们已经正确退出了ruby程序。     
这可能是一个建议,而不是一个答案,因为我不知道它是否涵盖了您的问题,但是仅需几分钟,您可能想要尝试一下。 我在FreeBSD上遇到了这个问题,这是我的解决方案。不知何故,Ruby / Rails / etc的版本彼此不兼容,并且它们也没有给我错误消息,我总是可以追逐它。 我确定您正在执行此操作,但请确保捆绑包始终是最新的。 我切换到rvm(Ruby版本管理器),并完全停止使用系统Ruby。总的来说,这是我使用Ruby进行的最佳系统管理员操作,因为Mac OS X / Macports(我的开发机器)和FreeBSD / ports(我的生产机器)在Ruby版本中落后。 我可以看到您在Mac OS X上的ruby 1.8.7补丁程序级别为174-当前版本的补丁程序级别为330或更高。 此外,如果您要推送到不是Mac OS X的生产服务器,那么您可能会获得更好的RVM可移植性,因为您可以在同一位置安装相同版本的Ruby,Rails和所有gems。两台机器。     

要回复问题请先登录注册