我們為什麼需要性能優化以及關於性能優化的一些建議

我們希望用戶與用Web構建的內容進行有意義的交互。如果是博客,我們希望人們閱讀帖子。如果是在線商店,我們希望將潛在的購物者變成買家。如果它是一個社交網路網路應用程序,我們希望訪問者寫帖子,上傳照片,並與其他人互動。 性能在任何在線企業的成功中起著重要作用,因為高性能的網站比表現不佳的網站更好地吸引和留住用戶。以下是有關性能如何影響多個網站的互動和轉化的案例研究。 Pinterest重建了他們的頁面以實現性能,使感知等待時間減少了40%,從而將搜索引擎流量和註冊量提高了15%。. 通過將平均頁面載入時間減少850毫秒,COOK發現他們能夠將轉化率提高7%,將跳出率降低7%,並將每個頁面的頁面數量增加10%。. 如果高性能是一種資產,那麼表現不佳就是一種負擔。以下是一些案例研究,其中表現不佳會對業務目標產生負面影響: BBC發現,他們在網站載入的每一秒鐘內就會損失10%的用戶。. DoubleC ...
Read more

Golang性能優化

Go語言性能優化真的很方便,只要代碼里引入一下pprof的包,然後開啟http server就好了。https://golang.org/pkg/net/http/pprof/?golang.org 安裝工具 安裝 go官方包(https://golang.org/dl),用於執行 go tool pprof go-torch項目(https://github.com/uber/go-torch),用於調用pprof生成火焰圖 Flame(https://github.com/brendangregg/FlameGraph) ,用於繪製火焰圖 graphviz(apt-get install graphviz)用於繪製調用關係 注意都要安裝在Linux$PATH目錄下。 CPU火焰圖 埠為服務開啟http sever 監聽的埠(下同)go-torch -u ...
Read more

性能測試前端調優23大規則(十四)---使用AJAX可緩存

AJAX全稱 Asynchronous JavaScript and XML(非同步的 JavaScript 和 XML)。將A ...
Read more

精讀《手寫 SQL 編譯器 - 性能優化之緩存》

重回 「手寫 SQL 編輯器」 系列。這次介紹如何利用緩存優化編譯器執行性能。可以利用 Frist 集 與 Match 節點緩存 這兩種方式優化。本文會用到一些圖做解釋,下面介紹圖形規則: First 集優化,是指在初始化時,將整體文法的 First 集找到,因此在節點匹配時,如果 Token 不存在於 First 集中,可以快速跳過這個文法,在文法調用鏈很長,或者 「或」 的情況比較多時,可以少走一些彎路: 如圖所示,只要構建好了 First 集,不論這個節點的路徑有多長,都可以以最快速度判斷節點是否不匹配。如果節點匹配,則繼續深度遍歷方式訪問節點。現在節點不匹配時性能已經最優,那下一步就是如何優化匹配時的性能,這時就用到 Match 節點緩存。Match 節點緩存,指在運行時,緩存節點到其第一個終結符的過程。與 First 集相反,First 集可以快速跳過,而 Match ...
Read more

SQL Server如何跟蹤等待

在DMV(Dynamic Management Views,動態管理器)中,有三個函數用於查看等待的相關信息,sys.dm_exec_requests用於查看會話級信息,sys.dm_os_waiting_tasks用於查看任務級信息,sys.dm_os_wait_tasts用於顯示等待時間的聚合。1) sys.dm_exec_requestssys.dm_exec_requests只提供會話級的相關信息,可以顯示SQL Server內執行的每個請求的相關信息,如果需要獲得更多的性能視圖可以通過任務級進行查看,系統進程可以在沒有建立會話的情況下運行任務,但相關信息並不會被顯示,並且並行查詢也很難進行故障診斷,因為在會話級只顯示一個等待。下面的代碼顯示了等待信息以及當前運行在每個會話中的T-SQL。 select ...
Read more

SQL Server之捕獲阻塞事件

在SQL Server 2005之前的版本,分析哪些進程產生阻塞以及哪些進程被阻塞,都需要使用腳本手工執行。現在使用SQL Profiler可以直接監控阻塞的情況,使用SQL Profiler監控哪些進程被阻塞,首先需要確定SQL Trace的事件類,監控阻塞的事件類為Errors and Warnings-Blocked process report,如圖所示。Blocked process report:表示某個任務已被阻塞,導致超過指定的時間,此事件類不包括系統任務和正在等待未發現死鎖(non-deadlock-detectable)的資源任務。若要配置報告的頻率,請使用 sp_configure 命令配置阻塞的進程閾值選項。 通過sp_configure命令可以重新配置「blocked process ...
Read more

Apache監控之編譯時配置

編譯時的配置主要涉及到的設置有:MPM配置、模塊、原子操作、mod_status、多socket性況下串列accept、單socket性況下串列accept、延遲關閉、Scoreboard文件和DYNAMIC_MODULE_LIMIT。1) MPM配置Apache 2.x支持插入式並行處理模塊,稱為多路處理模塊(MPM Multi-Processing Modules),在編譯Apache時必須選擇一個MPM(有且只能選擇一次),針對非UNIX系統的MPM有:beos、 mpm_netware、mpmt_os2、mpm_winnt。對於UNIX系統,有幾個不同的MPM可供選擇,它們都會影響到httpd的速度和可伸縮性:? preforkMPM使用多個子進程,但每個子進程並不包含多線程,每個進程只處理一個鏈接,在許多系統上它的速度和workerMPM一樣快,但是需要更多的內存。? ...
Read more

YSLOW性能測試前端調優23大規則(十五)---AJAX使用Get請求

當AJAX將客戶端請求發送到伺服器時,我們會使用XMLHttpRequest對象的open()和send()方法。open(method,url,async)例:xmlhttp.open("GET","chuansinfo.txt",true) send(string);例:xmlhttp.send();其實中method是指請求類型,通常我們的請求類型有兩種:GET和POST。在我們分析AJAX中到底是使用GET請求還是POST請求之前,我們必須先確定GET與POST的區別,GET與POST請求區別見表。 GET請求會將數據添加到URL中,通過這種方式發送到伺服器,通常會使用「?」代表URL地址的結尾與參數的開端,後面接的參數格式為「名稱=值」,如果有多個參數,那麼參數與參數之間使用「&」來區分。POST請求是將數據放在HTTP ...
Read more

Tomcat之JVM調優

虛擬機中的共劃分為三個代:年輕代(Young Generation)、年老代(Old Generation)和持久代(Permanent ...
Read more

YSLOW性能測試前端調優23大規則(十七)---避免空鏈接

關於空鏈接的通常會有兩種方式,第一種模式是直接的HTML的空鏈接。<img src="" >第二模式是使用JavaScript動態的設置src屬性。 var img = new Image();img.src = "";這兩種模型寫出來的空鏈接的影響是一樣的,但是對於不同的瀏覽器來說會有所不同。1) Internet Explorer向頁面所在的目錄發出請求。例如,如果您運行的頁面http://192.168.40.128:8091/ECShop_V2.7.3_UTF8_release0411/upload/test1.html,由於空鏈接找不到圖片,所以會向http://192.168.40.128:8091/ECShop_V2.7.3_UTF8_release0411/upload發送請求來查找圖片。HTTP請求如圖所示。 2) ...
Read more
1 2 5 Next