我正在將我們團隊的bugzilla升級到最新的穩定版本。 在以前使用的Bugzilla 2.x中,網頁的加載時間大約爲2秒,這被用戶接受。不過,Bugzilla 4.4.8需要3到4秒才能渲染頁面。 我的問題是,Perl導入Bugzilla需要的模塊似乎有問題。是什麼導致perl非常慢地導入模塊?
我通過直接用perl檢查index.cgi腳本,編寫一個只導入perl Bugzilla模塊的testscript.cgi,並通過註釋出使用語句來檢查導致長時間運行的原因。
#!/usr/bin/perl
use strict;
use lib qw(. lib);
use Bugzilla;
use Bugzilla::Constants;
use Bugzilla::Error;
use Bugzilla::Update;
print "Content-Type: text/html\n\n";
print "<html><body>\n";
foreach (@INC){
print "$_<br>\n";
}
print "</body></html";
禁用Bugzilla導入時,服務器的響應時間會縮短到50ms。 我繼續把它和本地的Perl/Apache/Bugzilla安裝在我的筆記本上進行比較:〜630ms來渲染我認爲可接受的頁面。
我想起了這種困難行爲的一個可能起源:如果它必須遍歷模塊的太多目錄呢?
Solaris機器@INC:
.
lib/sun4-solaris
lib
/opt/perl-5.20.2/lib/site_perl/5.20.2/sun4-solaris
/opt/perl-5.20.2/lib/site_perl/5.20.2
/opt/perl-5.20.2/lib/site_perl/sun4-solaris
/opt/perl-5.20.2/lib/site_perl
筆記本@INC:
.
lib/i686-linux-gnu-thread-multi-64int
lib
/etc/perl
/usr/local/lib/perl/5.18.2
/usr/local/share/perl/5.18.2
/usr/lib/perl5
/usr/share/perl5
/usr/lib/perl/5.18
/usr/share/perl/5.18
/usr/local/lib/site_perl
是什麼原因導致的服務器上導入Perl模塊這個長期運行的? 我怎麼測量IO讀取時間?
系統屬性:
的Perl 5.20.2/ 的Solaris 10
更新: 正如意見建議我分析了傑韋利:: NYTProf腳本:腳本在以下時間最多在幾個文件中的語句
use Bugzilla::Install::Filesystem
use Bugzilla::Install::Localconfig
use Bugzilla::Install::Util
use Bugzilla::Auth and subroutines
use Bugzilla::User
use Bugzilla::Template
嘗試['Devel :: NYTProf'](http://search.cpan.org/perldoc/Devel::NYTProf) – dawud 2015-03-31 12:09:05
也試試'Benchmark :: Stopwatch'。 – 2015-03-31 12:38:55
我不明白爲什麼我現在應該使用NYTProf或Stopwatch,因爲我現在已經在使用我的代碼片斷了很多時間。我的問題是關於這個擴展運行時間的原因。我認爲它比perl更系統化。 – 2015-03-31 12:44:00