2011-02-08 87 views
0

我有點困惑,因爲我的邏輯/程序員大腦說如果所有東西都是恆定的,函數的速度必須是恆定的。分析Web應用程序的速度

我正在使用jqGrid作爲前端顯示數據的PHP Web應用程序。我正在測試我的個人電腦,所以網絡流量不適用。我向PHP函數發出HTTP請求,它返回數據,然後jqGrid呈現它。我有些困惑的是,有時Firebug報告說有時需要300-600毫秒,有時需要3.68秒。我可以一遍又一遍地運行這個請求,並且響應時間非常不同。

查詢是一樣的。系統上的用戶數量是相同的。沒有網絡延遲。相同的代碼。測試時,我不在計算機上運行其他應用程序。我可以理解查詢緩存提高了後續請求的性能,但速度只是波動很大,沒有押韻或原因。

所以,我的問題是,還有什麼可以導致響應時間的這種變化?我如何確定它在做什麼?更重要的是,有什麼辦法讓事情更加一致?

回答

1

如果您使用Apache Benchmarking tool(ab),您可以基於多次訪問和多個併發訪問獲得一組統計信息,通過連接,處理和分析來分析最小,平均,中位和最大訪問時間(和stddev)等候;和百分位數......使它成爲一個非常有用的工具,用於確定這是否真的是問題或畸變。

雖然它不能診斷性能問題的原因,但它可以告訴你,如果你真的有問題

1

您應該做的第一件事是分析您的代碼(請參閱Simplest way to profile a PHP script)。這會告訴你你的瓶頸在哪裏,然後你可以弄清楚爲什麼你的響應時間波動很大。

0

如果您使用Firebug來確定速度,則需要考慮Firefox和PHP都是緩存資源。特別是,PHP具有內置的操作碼緩存,可以最大限度地減少後續運行時間。這在初期顯示爲長期運行,接下來是一些刷新短期運行。我同意rfw深入分析。