Jak przyspieszyć Vagrant Box (na mac osx)

Dziś przypadkowo, całkiem zrezygnowany  i zmęczony już vagrantem, szukałem alternatyw, myślałem, aby w końcu przesiąść się na localhost i lokalnie instalować wszystkie potrzebne paczki. Jedną z głównych przyczyn używania vagranta było to, że w hermetycznym środowisku mogę mieć dowolne rzeczy i nie będą mi one zaśmiecały całego systemu, jednakże odkąd pamiętam, vagrant raz był szybki, raz niemiłosiernie wolny, development czasami doprowadzał mnie do szewskiej pasji… albo pasji Gibsona :). Ok do rzeczy, bardzo przypadkowo trafiłem na linka  https://stefanwrobel.com/how-to-make-vagrant-performance-not-suck

O co chodzi z ustawieniami vagranta, domyślnie współdzielenie folderów odbywa się przez „działający wszędzie” domyślny system plików, ustawienia NFS „niestety” nie działają pod windowsem, działają na systemach UNIX (czyli linux, i mac osx), dlatego ta opcja domyślnie jest wyłączona.

Moje ustawienia do vagranta wyglądają następująco:

config.vm.box = "debian"
config.vm.network :hostonly, "192.168.66.6"
config.ssh.forward_x11 = true
config.vm.forward_port 80, 8080
config.vm.forward_port 3000, 3000
config.vm.forward_port 9501, 9001
config.vm.forward_port 9000, 9000
config.vm.forward_port 9500, 9500
config.vm.forward_port 9292, 9292
config.vm.forward_port 27017, 27017
config.vm.share_folder "v-projects", "/var/www/projects/", "/path/to/projects", mount_options: ['rw', 'tcp', 'nolock', 'noacl', 'async'], type: "nfs", nfs_udp: false

Dokumentacja mówi na ten temat: https://www.vagrantup.com/docs/synced-folders/nfs.html

I teraz najważniejsze, zainstaluj aplikację wrk (https://github.com/wg/wrk) na maćku zainstaluj korzystając z brew install wrk i potem odpal komendę wrk -d120s http://url_do_vagranta o to co mi pokazało przed zmianą na NFS i po zmianie:

# przed zmianą: 
Running 2m test @ http://proj
  2 threads and 10 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   258.21ms  210.38ms   1.98s    85.19%
    Req/Sec    21.14     10.37    70.00     63.19%
  4722 requests in 2.00m, 42.11MB read
  Socket errors: connect 0, read 1, write 0, timeout 16
Requests/sec:     39.34
Transfer/sec:    359.26KB

# po zmianie na NFS:
$ wrk -d120s http://proj
Running 2m test @ http://proj
  2 threads and 10 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    21.82ms   47.66ms 607.73ms   91.47%
    Req/Sec     1.22k   271.80     2.06k    68.91%
  291902 requests in 2.00m, 2.54GB read
Requests/sec:   2431.65
Transfer/sec:     21.68MB

Czyli zmiana o 6200%!!! Po prostu WOW!!! Mam nadzieję, że będziecie zadowoleni z tego rozwiązania 🙂

Rafath Khan

Tu powinien być pean na moją cześć, jaki to wspaniały jestem i jakimi niezwykłymi problemami się zajmuję, ale prawda jest taka, że jak każdy człowiek - mam swoje wady i może jakieś zalety. Są momenty, kiedy mam odpowiednią ilość zasobów psychoenergetycznych i mogę przenosić góry, a są niestety i takie momenty, kiedy mi się nawet z łóżka wstać nie chce... nie może tak źle nie jest, ale chętnie bym sobie pospał dłużej... Niemniej jednak, gdy uda się pokonać siebie - satysfakcja jest, ale potem przychodzą kolejne rzeczy, z którymi trzeba się zmierzyć... a na nie, niestety, energii może nie starczyć i tu właśnie wkracza tzw samodyscyplina - powinieneś usiąść i zrobić to coś, a nie siedzieć na kanapie i zajadać się słodyczami i oglądać jakiś nieciekawy serial czy film dla spalenia swojej najważniejszej waluty świata... czasu, którego nie da się odzyskać. I właśnie o tej samodyscyplinie traktować będę na tym blogu + kilka innych tematów, które są mi potrzebne do pracy

Może Ci się również spodoba