Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何诊断我非常缓慢的Ruby启动时间?_Ruby_Macos - Fatal编程技术网

如何诊断我非常缓慢的Ruby启动时间?

如何诊断我非常缓慢的Ruby启动时间?,ruby,macos,Ruby,Macos,间歇性地,当我键入一个涉及Ruby的命令时(如Ruby somefile.rb,rake,rspec spec,或irb),执行该命令需要很长时间。例如,几分钟前,irb启动大约需要一分钟。几秒钟前,大约花了一秒钟 在等待irb启动时,我反复按下Control+T。我看到的一些输出包括: load: 1.62 cmd: ruby 12374 uninterruptible 0.45u 0.13s load: 1.62 cmd: ruby 12374 uninterruptible 0.48u

间歇性地,当我键入一个涉及Ruby的命令时(如
Ruby somefile.rb
rake
rspec spec
,或
irb
),执行该命令需要很长时间。例如,几分钟前,
irb
启动大约需要一分钟。几秒钟前,大约花了一秒钟

在等待
irb
启动时,我反复按下
Control+T
。我看到的一些输出包括:

load: 1.62  cmd: ruby 12374 uninterruptible 0.45u 0.13s
load: 1.62  cmd: ruby 12374 uninterruptible 0.48u 0.13s
load: 1.62  cmd: ruby 12374 uninterruptible 0.53u 0.15s
“加载、命令运行、pid、状态以及使用的用户和系统CPU时间”。看起来,当我等待53秒时,使用的CPU时间只有0.15秒

我对负载的理解是这样的。例如,在单核系统上,1.0是完全利用率,但在四核机器上,它是25%的利用率。我认为负载量不是问题,因为我的机器是多核的。另外,当
irb
快速启动时,我可以使用
Control+T
获得一行输出,这也高于
1.0

load: 1.22  cmd: ruby 12452 running 0.26u 0.02s
我还注意到,在良好的情况下,状态是“正在运行”,而不是“不可中断”

如何诊断和修复这些缓慢的初创公司?

这是一个长期问题。尝试安装haveged。
我以前见过这个问题。这为我解决了问题。有时,Ruby的库或元素没有足够的熵来加载随机数池

如果你注意到当你输入更多的内容,移动鼠标,使用大量的网络流量时,事情开始的时间很快——那么这就是熵,这与你的大部分想法相反


如果有更多的处理器和RAM使用,更多的与系统的交互,等等-你会认为它会更慢,但在熵耗尽的情况下,这实际上正是你所需要的。

“不间断”让我觉得它卡在I/O中。如果在后续执行中速度更快,可能只是磁盘速度较慢。我在评论中问:ruby版本是什么?(
ruby-v
)@Satya-ruby 2.1.2p95。进一步的研究表明,它可能正在等待IO系统调用。也许我可以用一些dtrace工具看看是什么。是的,dtrace。我不确定OSX上有哪些跟踪工具,所以我没有说。不管怎样,我想看看它是否像那些缓慢的ruby版本(1.9.2?1.8.7?)一样愚蠢。如果我能捕捉到它再次发生的话,
dtruss-n process\u name
可能会起作用。关于这一点,我建议将这个问题转移到网站上,以获得更全面的信息。虽然问题与开发有关,但原因和解决办法很可能在那里找到,因为这更可能是操作系统或硬件级别的问题。我今天刚刚了解到这一点——笔记本电脑上不太可能出现这种情况,但在任何一种虚拟机上都越来越可能出现这种情况——龙先生可能正在使用这种情况。请尝试移动鼠标或启动其他应用程序并调整窗口大小。