單獨使用某些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行:安裝定時器
如果您從虛擬機內導航,它會得到更好還是同樣緩慢? –
長時間加載時間,控制檯命令和輸出:http://pastebin.com/x2D1L3Lw 編輯:再次運行該命令它有時會返回3到7秒之間的良好加載時間,這種情況不會發生在虛擬機之外。 – Artis
我用ps aux檢查了apache進程。似乎每次我在我的主機上加載站點時,其中一個進程在處理器列(第3個)中顯示大於0的數字,而在內存列(第4個)中顯示大於1的數字,並且它們保持如此多或少,但apache進程的數量並沒有增加。 http://pastebin.com/ebUp48eh 另外,奇怪的是,虛擬機wget加載時間檢查顯示2快速加載時間和1長,然後1快速和1長,然後2快速和1長等模式 – Artis