簡體   English   中英

加載網頁時發現瓶頸?

[英]Finding a bottleneck when loading a webpage?

更新1:

在服務器上執行strace后,我發現mmap的進程占用了90%的處理時間。 我發現其中的一頁需要花費一分鍾的時間來加載。

所以我找到了這個鏈接: PHP腳本一直在執行mmap / munmap

它可能顯示了相同的問題。 但是,我不明白正確禁用php錯誤處理程序意味着什么。

原始問題:

加載服務器正在服務的特定網頁時,如何檢查Web服務器上的瓶頸?

由於某些原因,我網站上的幾個頁面變得非常慢,我不確定這種情況正在何處發生。

Chrome開發工具的屏幕截圖:

點擊這里放大 在此處輸入圖片說明

因此,基本上,我需要找出使此部分花很長時間加載的內容? 客戶端網絡工具似乎無法將其分解?

Xdebug:分析PHP腳本 -注意KCacheGrind工具,或者,可以使用高級PHP調試器 apd_set_pprof_trace()函數和pprofp處理生成的數據文件。

我建議研究Xdebug分析 其他兩個答案處理客戶端加載問題,但是如果您的瓶頸是服務器端,那么使用這些工具就不會變得明顯。

您可能還需要調查正在運行的數據庫查詢,以便為有問題的頁面提供服務。 您可能在某處缺少索引,這可能解釋了隨着數據庫表的增大,特定頁面的近期運行緩慢。

我將提取這些查詢並使用MySQL EXPLAIN (假設您正在使用MySQL)運行它們,以查看那里是否運行緩慢。

Derick Rethans(Xdebug的作者)今天發表了一篇不錯的文章,名為PHP在做什么?

它涵蓋了您已經完成的strace,還向您展示了如何使用自定義.gdbinit獲取導致問題的實際php函數名稱。

當然,您必須使用gdb從命令行運行腳本,因此我希望您的問題可以通過這種方式重現。

mmap用於創建文件的內存映射視圖。

如果確實是導致錯誤的錯誤處理程序,我猜您的腳本正在生成許多錯誤(您正在嘗試記錄),可能是循環中未定義索引的通知或其他內容。

檢查日志文件(是否記錄了所有內容?),如果未記錄任何內容,請檢查日志文件的權限,還請再次檢查錯誤報告級別設置為什么。

var_dump(ini_get('error_reporting') & E_NOTICE); -如果您要報告通知,則為非零值。

error_reporting(E_ALL & ~E_NOTICE); -關閉報告通知。

使用Fiddler或YSlow Firefox插件等應用程序將有助於識別網站中加載緩慢的元素。 這應該使任何問題顯而易見。

http://fiddler2.com/fiddler2/

https://addons.mozilla.org/zh-CN/firefox/addon/yslow/

希望這可以幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM