vagrant ssh-config очень медленный - PullRequest
0 голосов
/ 01 июля 2019

Команда vagrant ssh-config занимает более 12 секунд:

host% time vagrant ssh-config
Host default
  HostName 10.0.0.2
  User vagrant
  Port 22
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /home/user/.vagrant.d/insecure_private_key
  IdentitiesOnly yes
  LogLevel FATAL

1.614u 0.487s 0:12.27 17.0%     0+0k 0+24io 0pf+0w
host% 

Это, вероятно, причина того, что vagrant ssh также занимает 12 секунд (для сравнения, ssh -p2222 vagrant@localhost не использует vagrant ssh-config и занимает всего 1 секунду).

Мой Vagrantfile:

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|

  config.vm.box              = "bento/ubuntu-18.10"
  config.vm.box_version      = "201906.18.0"
  config.vm.box_check_update = false
  config.vm.hostname         = "demo"

  config.vm.network :private_network, ip: "10.0.0.2"
  # enables, for example, 'ssh vagrant@10.0.0.2'

  # None of these actually work. Boo.
  #config.ssh.host = "10.0.0.2"
  #config.ssh.port = 22
  #config.ssh.username   = 'root'
  #config.ssh.password   = 'vagrant'
  #config.ssh.insert_key = 'true'

  config.vm.provider "virtualbox" do |vb|
    vb.name   = config.vm.hostname
    vb.memory = "2048"
    vb.cpus   = "2"
    vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
  end

  # config.vm.synced_folder "../data", "/vagrant_data"

  config.vm.provision "shell", inline: <<-SHELL
    echo "Hello, World!"
  SHELL

end

Если я запускаю vagrant ssh-config --debug, он выдает следующее, прежде чем ждать около 11 секунд:

 INFO runner: Preparing hooks for middleware sequence...
 INFO runner: 1 hooks defined.
 INFO runner: Running action: environment_load #<Vagrant::Action::Builder:0x0000000001e95f60>
DEBUG checkpoint_client: starting plugin check
 INFO cli: CLI: [] "ssh-config" []
DEBUG cli: Invoking command class: VagrantPlugins::CommandSSHConfig::Command []
DEBUG checkpoint_client: waiting for checkpoint to complete...

Затем он печатает до этой точки:

 INFO base: VBoxManage path: VBoxManage
 INFO subprocess: Starting process: ["/usr/bin/VBoxManage", "--version"]
 INFO subprocess: Command not in installer, restoring original environment...
DEBUG subprocess: Selecting on IO

и зависает на 0,5 секунды, а затем снова печатает некоторые другие вещи и вышеприведенные строки и зависает еще 0,5 секунды, прежде чем закончить.

Я ожидал бы, что vagrant ssh-config будет просто запрашивать структуру данных Vagrant, и я ожидаю, что это будет эффективно реализовано, так что оно может завершиться за несколько миллисекунд. Вместо этого он делает что-то, очевидно, довольно сложное.

Я заметил, что другие команды, такие как vagrant destroy --debug, ведут себя аналогично. У них длинная пауза после waiting for checkpoint и более короткие паузы после Selecting on IO.

Были ли такие команды Vagrant, как vagrant ssh-config и vagrant destroy такими медленными? Любые мысли о том, как заставить бродячие команды работать быстрее? Можно ли обойти медленные части?

1 Ответ

0 голосов
/ 08 июля 2019

Это не широко распространенная проблема, и, насколько мне известно, нет способа обойти определенные части.Если скорость вас действительно беспокоит, я бы посмотрел на удаление всего Vagrant, включая каталог ~/.vagrant.d, перезагрузку компьютера и переустановку последней версии Vagrant с официальных установщиков Vagrant .Чтобы увидеть, если это ускоряет вещи.Также может быть полезно запустить vagrant global-status, чтобы проверить, не мешает ли запуск нескольких ящиков вашим скоростям.

...