我正在了解vagrant和puppet。 当我使用vagrant33(Ubuntu 10.04)时,木偶似乎很慢。 我修复了fqdn问题(question 7780322),但它仍然很慢。
我已将(部分)问题追溯到其中。要求ipaddress非常快,但ipaddress_eth0需要20秒:
root@a:/# time facter ipaddress
10.0.2.15
real 0m0.031s
user 0m0.024s
sys 0m0.004s
root@a:/# time facter ipaddress_eth0
10.0.2.15
real 0m20.126s
user 0m0.080s
sys 0m0.020s
root@a:/#
寻找ipaddress_lo也很慢。
任何人都可以帮我解决一下如何调试这个问题的解决方案或建议吗?我是Ruby的新手,但愿意学习。
感谢。
答案 0 :(得分:1)
我刚刚定义了未知主机(?) / etc / hosts:
10.0.2.3 computer1 10.0.2.2 computer2
在此之后,arp -a非常快,因此改善了反应-p的反应,提高了木偶剂的性能 - 测试
答案 1 :(得分:0)
问题是arp -a
运行得很慢。
vagrant@lucid32:~$ time arp -a
? (10.0.2.3) at 52:54:00:12:35:03 [ether] on eth0
? (10.0.2.2) at 52:54:00:12:35:02 [ether] on eth0
real 0m20.022s
user 0m0.004s
sys 0m0.000s
vagrant@lucid32:~$
我认为这是虚拟机(4.1.12_77245),仅主机网络,ubuntu 10.04和Windows 7主机操作系统的某种组合的问题。
作为一种解决方法,假设我可以在不了解我的mac地址的情况下了解一下木偶,我将/opt/ruby/lib/ruby/gems/1.8/gems/facter-1.6.0/lib/facter/arp.rb
的第7行替换为如下:
require 'facter/util/ip'
Facter.add(:arp) do
confine :kernel => :linux
setcode do
### output = Facter::Util::Resolution.exec('arp -a') # disable for slow arp
output = "" ### return a blank, rather than the real (but slow) arp
if not output.nil?
arp = ""
output.each_line do |s|
if s =~ /^\S+\s\S+\s\S+\s(\S+)\s\S+\s\S+\s\S+$/
arp = $1.downcase
break # stops on the first match
end
end
end
"fe:ff:ff:ff:ff:ff" == arp ? arp : nil
end
end
Facter::Util::IP.get_interfaces.each do |interface|
Facter.add("arp_" + Facter::Util::IP.alphafy(interface)) do
confine :kernel => :linux
setcode do
arp = Facter::Util::IP.get_arp_value(interface)
"fe:ff:ff:ff:ff:ff" == arp ? arp : nil
end
end
end