Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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
Php 慢流浪箱,如何改善这一点?_Php_Performance_Symfony_Vagrant - Fatal编程技术网

Php 慢流浪箱,如何改善这一点?

Php 慢流浪箱,如何改善这一点?,php,performance,symfony,vagrant,Php,Performance,Symfony,Vagrant,我们已经为我们的开发箱构建了一个流浪箱,我们面临一些延迟问题 问题: 阿塞提克:手表慢了 (app_dev.php)中的整体应用程序访问速度较慢 在“漫游”框的共享文件夹中使用“查找”命令速度非常慢 关于盒子: 在virtualbox上运行(在Mac和Linux上运行) 灯环境(ubuntu) 大代码库(10K+文件) Symfony 2应用程序 改进性能的措施: NTFS的使用(使用bindfs) 流浪汉: config.vm.synced_文件夹“#{folder['source

我们已经为我们的开发箱构建了一个流浪箱,我们面临一些延迟问题

问题:

  • 阿塞提克:手表慢了
  • (app_dev.php)中的整体应用程序访问速度较慢
  • 在“漫游”框的共享文件夹中使用“查找”命令速度非常慢
关于盒子:

  • 在virtualbox上运行(在Mac和Linux上运行)
  • 灯环境(ubuntu)
  • 大代码库(10K+文件)
  • Symfony 2应用程序
改进性能的措施:

  • NTFS的使用(使用bindfs)
  • 流浪汉:
config.vm.synced_文件夹“#{folder['source']}”,“/mnt/vagrant-#{i}”, id:“{i}”,键入:'nfs',挂载选项:['rw',vers=3',tcp',fsc' ,'actimeo=2']

  • 将缓存和日志移出共享文件夹(AppKernel更新)
我们可以清楚地看到,每当访问共享文件夹中的文件时,“bindfs”进程都在消耗大量的cpu

首先,这正常吗?我希望流浪汉在任何时候都能复制盒子上的文件,而这些文件是在本地进行的

我们可以看到,当访问缓存数据(在共享文件夹之外)时,box本身工作正常,因此速度足够快,那么我可以做些什么来提高box的性能并避免这些延迟问题?

  • 考虑允许VM使用一个或两个额外的CPU核心。这可以通过virtualbox gui界面或使用vagrant配置进行控制。见本页底部

  • 确保您的虚拟机在SSD驱动器上运行(如果预算允许的话)

  • 如果在php.ini中启用了xdebug或xdebug评测,则会降低php的速度。在我工作的“流浪者”对话框上禁用xdebug.remote_autostart时,我们注意到了真正的性能改进。但这确实会迫使您以不同的方式开始调试会话

如果您这样做,您还需要不要在主机和vagrant之间共享供应商文件夹。因为读取共享文件的速度很慢。看看这个。 为此,您需要更改symfony2项目中的composer.json文件:

"config": {
  ...,
  "vendor-dir": "/some_new_location/vendor"
},
还可以更改
app/autoload.php

$loader = require '/some_new_location/vendor/autoload.php';
完成此操作后,运行composer安装

还有一些阅读资源:


  • 如果使用Phpstorm,则可以使用Deployment模块将文件从基本计算机同步到虚拟计算机


    然后,本地计算机上的每个更改都会将文件上载到虚拟机。这会提高你的表现。我尝试了很多解决方案,但每一个都不足以解决我的问题。移开缓存文件夹,取消共享供应商文件夹

    使用NFS时,在共享目录中创建大量文件的速度非常慢。作为解决办法 -将vagrant vendor文件夹更改为非共享文件夹

    "config": {
      "bin-dir": "bin",
      "secure-http" : false,
      "vendor-dir" : "/vendor"
    },
    
    -在应用程序文件夹中创建符号链接,因为构建过程的某些部分可能通过相对链接引用供应商/bin目录

    project-dir$ sudo ln -s /vendor vendor
    
    • 做composer安装,这会快得多

    • Zip/vendor文件夹并将Zip复制到NFS共享项目文件夹中

    • 通过主机提取zip文件
    • 再次运行composer安装以确保其不会再次下载文件

    比赛迟到了。对于新手来说,有2个插件可以提高蝙蝠右边的流浪者盒子的速度

    装置 确保您拥有Vagrant 1.4+并运行:
    Vagrant插件安装Vagrant cachier

    我也在使用它,这对于MySQL的微调是非常好的


    我希望它对测试有帮助,您可以尝试在不使用共享文件夹的自动同步选项的情况下启动vagrant,例如:

    config.vm.synced_folder "./", "/home/vagrant/APP/", disabled: true
    
    现在你将体验流浪者(网络应用)的最高速度,一切都应该至少快两倍。但是现在主机和虚拟机之间没有同步

    现在您只需添加特定文件夹“未禁用:true”,其中正在进行开发“src”、“public”、“tests”等。现在,速度应该与第一次测试非常相似,例如:

    config.vm.synced_folder "./src", "/home/vagrant/APP/src", disabled: true
    config.vm.synced_folder "./public", "/home/vagrant/APP/public", disabled: true
    
    包含许多文件的文件夹,如“.git”“供应商”“节点模块”,等等,确实会降低性能

    我的phpunit测试在优化之前持续了12分钟,在优化之后持续了4.5分钟(win主机)

    享受

    以下是我的宅地配置(laravel),仅供参考:


    对于任何谷歌人来说:

    在.env文件中

    CACHE_DRIVER=memcached
    
    (而不是缓存\驱动程序=阵列)


    这些问题主要与VirtualBox中使用的默认文件系统vbfs的性能缓慢有关。根据我的经验,在继续测试NFS之前,加快速度的最佳方法是更新虚拟机中的来宾添加。最简单的方法是使用
    vagrant vbguest
    插件,它将在后台更新GA。我的汇编速度提高了三倍

    要在Vagrant中使用该文件,请编辑该文件并将其添加到开头:

    #注意:自动安装vagrant插件
    所需插件=%w(vagrant vbguest)
    plugins_to_install=必需的_plugins.select{| plugin | not Vagrant.has_plugin?plugin}
    如果没有插件,请安装为空?
    将“安装插件:{plugins_to_install.join(“”)}”
    如果系统“vagrant plugin install#{plugins_to_install.join(“”)}”
    执行“流浪者”{ARGV.join(“”)}
    其他的
    “中止”一个或多个插件的安装失败。正在中止
    结束
    结束
    
    这个问题与PHP本身无关,更不用说Symfony了。我认为它属于超级用户。你也可以使用它来缓存VMI中的供应商文件夹。将缓存和日志目录移动到ramdisk非常成功将日志和缓存移动到ramdisk非常有帮助,但在app_dev中工作时,你不会访问缓存文件,因此在本例中
    folders:
     - map: "./"
       to: "/home/vagrant/APP"
       type: "nfs"
       options:
         disabled: true
     - map: "./app"
       to: "/home/vagrant/APP/app"
       type: "nfs"
     - map: "./resources"
       to: "/home/vagrant/APP/resources"
       type: "nfs"
     - map: "./routes"
       to: "/home/vagrant/APP/routes"
       type: "nfs"
     - map: "./tests"
       to: "/home/vagrant/APP/tests"
       type: "nfs"
     - map: "./public"
       to: "/home/vagrant/APP/public"
       type: "nfs"
    
    CACHE_DRIVER=memcached