2016-09-14 29 views
0

單獨使用某些PHP代碼的文件運行良好且速度很快,對於具有MySQL連接查詢的文件也是如此。從我可以看到的一切似乎都很好,除非試圖在Magento中加載任何頁面。第一次加載需要60秒以上,然後Magento緩存開始運行,而後續加載時間超過20秒,但關鍵問題仍然是事情開始前的大量空閒時間。在Vagrant開發站點上加載頁面之前的大量空閒時間

這不能由於VM同步功能,因爲在這種情況下沒有網站文件在同步文件夾中。我已經構建了腳本來提取和安裝特定的目錄來處理,因此只需要同步一小部分文件而不是整個網站。

我已經搜索,研究和嘗試了所有可以利用我的人力,我仍然在尋找修復。 如果有任何日誌可以幫助您找到解決方案,請告訴我哪裏可以找到它們。

使用:

  • 流浪1.8.4
  • 的VirtualBox 5.0.24
  • 的CentOS 6.8
  • 的Apache/2.2.15
  • PHP 38年5月5日
  • MySQL的14.14
  • Magento CE 1.9.2.3

由於某個SSH錯誤,必須使用較舊的Vagrant版本,而且我必須使用較舊的VirtualBox。

的Vagrantfile:

Vagrant.configure("2") do |config| 
    config.vm.box = "package.box" 
    config.vm.network "private_network", ip: "192.168.3.4" 
    config.ssh.insert_key = false 

    # The code below sets the VM memory to half of the host's and number of CPU cores to 4 
    # None of the variations of those VM settings that I have tried affect the idle time when trying to load the site 
    config.vm.provider "virtualbox" do |v| 
    host = RbConfig::CONFIG['host_os'] 
    # Give VM 1/4 system memory 
    if host =~ /darwin/ 
     # sysctl returns Bytes and we need to convert to MB 
     mem = `sysctl -n hw.memsize`.to_i/1024 
     elsif host =~ /linux/ 
     # meminfo shows KB and we need to convert to MB 
     mem = `grep 'MemTotal' /proc/meminfo | sed -e 's/MemTotal://' -e 's/ kB//'`.to_i 
     elsif host =~ /mswin|mingw|cygwin/ 
     # Windows code via https://github.com/rdsubhas/vagrant-faster 
     mem = `wmic computersystem Get TotalPhysicalMemory`.split[1].to_i/1024 
    end 
    mem = mem/1024/2 
    v.customize ["modifyvm", :id, "--memory", mem] 
    v.cpus = 4 
    end 

    config.vm.provision :shell, path: "resources/bootstrap.sh" 

    config.vm.provision :shell, 
    inline: "service httpd start; mount -a -o nonempty", 
    run: "always" 

    # Run these provisioners when needed with $vagrant provision --provision-with name 
    if ARGV.include? '--provision-with' 
    config.vm.provision "site", type: :shell, :inline => "source /vagrant/resources/build_site.sh" 
    end 

end 

我用kaorimatz /的centos-6.8-x86_64的基箱,設置了LAMP棧,配置了設備進一步和包裝它作爲該基框。

PHP memory_limit似乎也不會影響空閒時間。

頁面的截圖負載統計:

  • 「頁面加載時間」 Chrome擴展 Page load time extension
  • Chrome開發者工具時間軸 Developer Tools Timeline 沿着時間軸頁面的快照在頂部必須之前的負載,因爲沒有任何事情發生,直到空閒時間結束,然後當前頁面重新加載,並在合理的時間內重新構建DOM。

在時間軸中,似乎有那些微小的功能(開始時一束條紋,然後間隔,直到大負載時間發生)。 在開始的前6行時間軸的重複功能在每一行中:

行1:計時器所觸發

行2:函數調用

第3列:(匿名功能)

第4行:C

行5:的setTimeout

第6行:安裝定時器

+0

如果您從虛擬機內導航,它會得到更好還是同樣緩慢? –

+0

長時間加載時間,控制檯命令和輸出:http://pastebin.com/x2D1L3Lw 編輯:再次運行該命令它有時會返回3到7秒之間的良好加載時間,這種情況不會發生在虛擬機之外。 – Artis

+0

我用ps aux檢查了apache進程。似乎每次我在我的主機上加載站點時,其中一個進程在處理器列(第3個)中顯示大於0的數字,而在內存列(第4個)中顯示大於1的數字,並且它們保持如此多或少,但apache進程的數量並沒有增加。 http://pastebin.com/ebUp48eh 另外,奇怪的是,虛擬機wget加載時間檢查顯示2快速加載時間和1長,然後1快速和1長,然後2快速和1長等模式 – Artis

回答

0

我自己解決了它,雖然在實際的解決方案周圍循環了一週。謝謝大家誰試圖幫助。

對於任何構建包括虛擬機在內的任何重要開發站點系統的人來說,我最初犯的錯誤是我通過SSHFS掛載了Magento的核心PHP文件以節省存儲和複製時間。對於一個巨大的媒體文件夾和Magento PHP文件目錄來說,SSHFS仍然可以完美工作,但是從index.php開始到達構建的DOM的Magento運行的文件數量實際上是瘋狂的。

0

難以確定,如果這是您的情況的問題,但我最近一直在爲您的類似設置工作,發現在Vagrantfile中改變v.cpus = 4v.cpus = 1極大地改進了Magento頁面加載時間。你會覺得更多CPU核心速度會更快,但事實證明,VirtualBox是不是在並行處理非常好,因爲詳細解釋在這裏:

http://www.mihaimatei.com/virtualbox-performance-issues-multiple-cpu-cores/

這裏: https://ruin.io/2014/benchmarking-virtualbox-multiple-core-performance/

這裏: https://forums.virtualbox.org/viewtopic.php?f=3&t=64268

這裏: https://github.com/roots/trellis/issues/410

日的核心問題是具有多個vCPU的Virtualbox VM需要在處理開始之前在主機上釋放所有分配的內核。因此,使用4個虛擬CPU時,每次Virtualbox在主機上安排CPU時間時,都會等到所有4個內核都可用。在頁面加載的過程中,這個等待時間顯然可以增加很多。

無論如何,嘗試刪除虛擬CPU的數量。希望它對你有所幫助。

+0

這似乎沒有任何改變。奇怪的是,生產服務器上的一些舊開發站點也需要14秒的請求,然後加載DOM。一些其他開發站點,相同的副本,無論他們在哪個分支,都會像在線網站一樣快速加載。 Vagrant框中的默認Magento網站會在半秒內加載首頁。 – Artis

+0

這是一個無賴。由於許多不同的因素,性能調試非常令人沮喪。通過我的Vagrant設置,我只能在一臺機器上加載15個Magento管理頁面。其他機器更快。沒有意義。你有沒有嘗試過使用Aoe_Profiler?我發現這種事情非常有幫助。 http://fbrnc.net/blog/2012/08/magento-profiler –

相關問題