當前位置:首頁 » 硬碟大全 » 客戶端緩存優化
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

客戶端緩存優化

發布時間: 2023-04-24 20:11:05

Ⅰ 360 優化加速里 DNS客戶端高速緩存服務

可以在「優化記錄和恢復」的選項卡裡面進行回復啟動

Ⅱ extjs如何優化緩存

1,載入慢

1.1 減少要載入的東西

不要動不動就ext-all.js,extjs是可以定製的,如果你用不到tree,就不要包含這個組件了。ExtJs的官網上有詳細的定製方法和工具。

1.2 給出合適的用戶提示

把Js後置,然後前面做一個載入的提示。如果像Gmail那樣給出進度條,或者像很多網游那樣來點圖片或者Tips啥的就更好了,說不定用戶還會覺得怎麼載入這么快,我還沒看清楚呢,呵呵。

1.3 用的時候再載入

動態載入,參考使用ExtJs開發MIS系統(2):Js的動態載入。

1.4 只載入一次

別用iframe了,如果你的靜態內容過期做的不好,瀏覽器會經常再不厭其煩的從伺服器下載同樣的東西。

1.5 對你的Js添加過期標記

ext-base.js、ext-all.js都可以設置很長的過期時間,甚至永不過期(如果你不換extjs的版本)。這點對所有靜態內容都很有用,如何設置過期標記請垂詢Google。

2,渲染慢

2.1 少載入少解析、晚載入晚解析

1.1,1.3,1.4都對改善渲染慢的情況有效——載入的少了自然渲染的快了。

2.2 別用iframe

iframe不僅僅可能會使瀏覽器載入兩遍,還一定會使瀏覽器解析兩遍,放棄它吧,真的。

2.3 精心設計你的Js代碼

例如緩存getElementByID()的結果、編譯查詢表達式之類的東西,這個純看Js功力。

2.4 可能的話,讓用戶換個瀏覽器吧

Chrome比IE的Js渲染快是數量級上的差異!構造一個40列,50行的復雜GridPanel試試,你就會深有體會了……對於企業內部的MIS系統,換瀏覽器還是具有可能性的。

3,內存泄露
Ext性能調優方案

1. 將JS進行合並壓縮。

使用yahoo的yui-compress.jar進行壓縮JS,去掉過多的空格和注釋,並合並,減少IO的支出。

2. 將前後台傳輸的數據進行GZIP壓縮。

大數據量的數據傳輸,通過GZIP的壓縮方案,可以減少到25%,有些數據可能會更多。

3. 對大量的JS分析依賴關系,進行動態載入。

這個是關鍵,通過分析所有的JS中的依賴關系,減少了JS載入的數量。從很大程度上提高了性能。

4. 另外對部分頁面進行緩存,而非真正的關閉。

還有一個外部的因素,由於系統使用的客戶機環境上的復雜,我們在多個瀏覽器上進行了測試,只有IE是最慢的,尤其是IE6,後來發現不是IE6要比IE7慢,是因為發現MS發布了腳本引擎cscript 5.7, 而大部分的ie6系統都裝的是5.6, 這個版本上的升級,不僅僅是修改了BUG,在JS的執行速度上也有了較大的提升,於是我們在環境因素上又加上了一條,要求客戶安裝cscript5.7,也大大的提升了頁面的打開時間。

Ⅲ 如何利用Nginx的緩沖,緩存優化提升性能

反向代理的一個問題是代理大量用戶時會增加伺服器進程的性能沖擊影響。在大多數情況下,可以很大程度上能通過利用Nginx的緩沖和緩存功能減輕。
當代理到另一台伺服器,兩個不同的連接速度會影響客戶的體驗:
從客戶機到Nginx代理的連接。
從Nginx代理到後端伺服器的連接。
Nginx具有優化這些連接調整其行為的能力。
如果沒有緩沖,數據從代理的伺服器發送並立即開始被發送到客戶。如果假定客戶端很快,緩沖可以關閉而盡快使數據到客戶端,有了緩沖,Nginx 代理將暫時存儲後端的響應,然後按需供給數據給客戶端。如果客戶端是緩慢的,允許Nginx伺服器關閉到後端的連接。然後,它可以處理數據分配到客戶端, 以任何可能的速度。
Nginx默認有緩沖設計,因為客戶端往往有很大的不同的連接速度。我們可以用以下指令調節緩沖行為。可以在HTTP,server或 location位置來設置。重要的是要記住,大小size指令是針對每個請求配置的,所以增加超出你需求會影響你的性能,如果這時有許多客戶端請求:
proxy_buffering:該指令控制緩沖是否啟用。默認情況下,它的值是「on」。
proxy_buffers:該指令控制代理響應緩沖區的數量(第一個參數)和大小(第二個參數)。默認配置是8個緩沖區大小等於一個內存頁(4K或者8K)。增加緩沖區的數目可以讓你緩沖更多信息。
proxy_buffer_size:從後端伺服器的響應頭緩沖區大小,它包含headers,和其他部分響應是分開的。該指令設置響應部分的緩沖區大小。默認情況下,它和proxy_buffers是相同的尺寸,但因為這是用於頭信息,這通常可以設置為一個較低的值。
proxy_busy_buffers_size:此指令設置標注「client-ready」緩沖區的最大尺寸。而客戶端可以一次讀取來自一個緩沖區的數據,緩沖被放置在隊列中,批量發送到客戶端。此指令控制允許是在這種狀態下的緩沖空間的大小。
proxy_max_temp_file_size:這是每個請求能用磁碟上臨時文件最大大小。這些當上游響應太大不能裝配到緩沖區時被創建。
proxy_temp_file_write_size:這是當被代理伺服器的響應過大時Nginx一次性寫入臨時文件的數據量。
proxy_temp_path:當上游伺服器的響應過大不能存儲到配置的緩沖區域時,Nginx存儲臨時文件硬碟路徑。
正如你所看到的,Nginx提供了相當多的不同的指令來調整緩沖行為。大多數時候,你不必擔心太多,但它對於調整一些值可能是有用的。可能最有用的調整是proxy_buffers和proxy_buffer_size指令。

Ⅳ ☆前端優化:瀏覽器緩存技術介紹

在前端開發中,性能一直都是被大家所重視的一點,然而判斷一個網站的性能最直觀的就是看網頁打開的速度。 其中提高網頁反應速度的一個方式就是使用緩存 。緩存技術一直一來在WEB技術體系中扮演非常重要角色,是快速且有效地提升性能的手段。

一個優秀的緩存策略可以縮短網頁請求資源的距離,減少延遲,並且由於緩存文件可以重復利用,還可以減少帶寬,降低網路負荷。

所以,緩存技術是無數WEB開發從業人員在工作過程中不可避免的一大問題。 在產品開發的時候我們總是想辦法避免緩存產生,而在產品發布之時又在想策略管理緩存提升網頁的訪問速度 。了解瀏覽器的緩存命中原理,是開發WEB應用的基礎,本文著眼於此,學習瀏覽器緩存的相關知識,總結緩存避免和緩存管理的方法,結合具體的場景說明緩存的相關問題。希望能對有需要的人有所幫助。

在實際WEB開發過程中,緩存技術會涉及到不同層、不同端,比如:用戶層、系統層、代理層、前端、後端、服務端等, 每一層的緩存目標都是一致的,就是盡快返回請求數據、減少延遲 ,但每層使用的技術實現是各有不同,面對不同層、不同端的優劣,選用不同的技術來提升系統響應效率。所以,我們首先看下各層的緩存都有哪些技術,都緩存哪些數據,從整體上,對WEB的緩存技術進行了解,如下圖所示:

本篇文章重點講的就是上面紅色框部分緩存內容。

當瀏覽器請求一個網站的時候,會載入各種各樣的資源,比如:HTML文檔、圖片、CSS和JS等文件。對於一些不經常變的內容,瀏覽器會將他們保存在本地的文件中,下次訪問相同網站的時候,直接載入這些資源,加速訪問。

那麼如何知曉瀏覽器是讀取了緩存還是直接請求伺服器?如下圖網站來做個示例:

第一次打開該網站後,如果再次刷新頁面。會發現瀏覽器載入的眾多資源中,有一部分size有具體數值,然而還有一部分請求,比如圖片、css和js等文件並沒有顯示文件大小,而是顯示了 from dis cache 或者 from memory cache 字樣。這就說明了,該資源直接從本地硬碟或者瀏覽器內存讀取,而並沒有請求伺服器。

瀏覽器啟用緩存至少有兩點顯而易見的好處: (1)減少頁面載入時間;(2)減少伺服器負載;

瀏覽器是否使用緩存、緩存多久,是由伺服器控制的 。准確來說,當瀏覽器請求一個網頁(或者其他資源)時, 伺服器發回的響應的「響應頭」部分的某些欄位指明了有關緩存的關鍵信息 。下面看下,HTTP報文中與緩存相關的首部欄位:

根據上面四種類型的首部欄位不同使用策略, 瀏覽器中緩存可分為強緩存和協商緩存

當瀏覽器對某個資源的請求命中了強緩存時, 返回的HTTP狀態為200 ,在chrome的開發者工具的network裡面 size會顯示為from cache ,比如:京東的首頁里就有很多靜態資源配置了強緩存,用chrome打開幾次,再用f12查看network,可以看到有不少請求就是從緩存中載入的:

Expires是HTTP 1.0提出的一個表示資源過期時間的header,它描述的是一個絕對時間,由伺服器返回,用GMT格式的字元串表示 ,如:Expires:Thu, 31 Dec 2037 23:55:55 GMT,包含了Expires頭標簽的文件,就說明瀏覽器對於該文件緩存具有非常大的控制權。

例如,一個文件的Expires值是2020年的1月1日,那麼就代表,在2020年1月1日之前,瀏覽器都可以直接使用該文件的本地緩存文件,而不必去伺服器再次請求該文件,哪怕伺服器文件發生了變化。

所以, Expires是優化中最理想的情況,因為它根本不會產生請求 ,所以後端也就無需考慮查詢快慢。它的緩存原理,如下:

Expires是較老的強緩存管理header, 由於它是伺服器返回的一個絕對時間 ,在伺服器時間與客戶端時間相差較大時,緩存管理容易出現問題, 比如:隨意修改下客戶端時間,就能影響緩存命中的結果 。所以在HTTP 1.1的時候,提出了一個新的header, 就是Cache-Control,這是一個相對時間,在配置緩存的時候,以秒為單位,用數值表示 ,如:Cache-Control:max-age=315360000,它的緩存原理是:

Cache-Control描述的是一個相對時間 ,在進行緩存命中的時候, 都是利用客戶端時間進行判斷 ,所以相比較Expires,Cache-Control的緩存管理更有效,安全一些。

這兩個header可以只啟用一個,也可以同時啟用, 當response header中,Expires和Cache-Control同時存在時,Cache-Control優先順序高於Expires

此外,還可以為 Cache-Control 指定 public 或 private 標記。 如果使用 private,則表示該資源僅僅屬於發出請求的最終用戶,這將禁止中間伺服器(如代理伺服器)緩存此類資源 。對於包含用戶個人信息的文件(如一個包含用戶名的 HTML 文檔),可以設置 private,一方面由於這些緩存對其他用戶來說沒有任何意義,另一方面用戶可能不希望相關文件儲存在不受信任的伺服器上。需要指出的是,private 並不會使得緩存更加安全,它同樣會傳給中間伺服器(如果網站對於傳輸的安全性要求很高,應該使用傳輸層安全措施)。 對於 public,則允許所有伺服器緩存該資源 。通常情況下,對於所有人都可以訪問的資源(例如網站的 logo、圖片、腳本等), Cache-Control 默認設為 public 是合理的

當瀏覽器對某個資源的請求沒有命中強緩存, 就會發一個請求到伺服器,驗證協商緩存是否命中,如果協商緩存命中,請求響應返回的http狀態為304並且會顯示一個Not Modified的字元串 ,比如你打開京東的首頁,按f12打開開發者工具,再按f5刷新頁面,查看network,可以看到有不少請求就是命中了協商緩存的:

查看單個請求的Response Header, 也能看到304的狀態碼和Not Modified的字元串,只要看到這個就可說明這個資源是命中了協商緩存,然後從客戶端緩存中載入的 ,而不是伺服器最新的資源:

【Last-Modified,If-Modified-Since】的控制緩存的原理,如下

【Last-Modified,If-Modified-Since】都是根據伺服器時間返回的header,一般來說, 在沒有調整伺服器時間和篡改客戶端緩存的情況下,這兩個header配合起來管理協商緩存是非常可靠的,但是有時候也會伺服器上資源其實有變化,但是最後修改時間卻沒有變化的情況 ,而這種問題又很不容易被定位出來,而當這種情況出現的時候,就會影響協商緩存的可靠性。 所以就有了另外一對header來管理協商緩存,這對header就是【ETag、If-None-Match】 。它們的緩存管理的方式是:

Etag和Last-Modified非常相似,都是用來判斷一個參數,從而決定是否啟用緩存。 但是ETag相對於Last-Modified也有其優勢,可以更加准確的判斷文件內容是否被修改 ,從而在實際操作中實用程度也更高。

協商緩存跟強緩存不一樣,強緩存不發請求到伺服器, 所以有時候資源更新了瀏覽器還不知道,但是協商緩存會發請求到伺服器 ,所以資源是否更新,伺服器肯定知道。大部分web伺服器都默認開啟協商緩存,而且是同時啟用【Last-Modified,If-Modified-Since】和【ETag、If-None-Match】,比如apache:

如果沒有協商緩存,每個到伺服器的請求,就都得返回資源內容,這樣伺服器的性能會極差。

【Last-Modified,If-Modified-Since】和【ETag、If-None-Match】一般都是同時啟用,這是為了處理Last-Modified不可靠的情況。有一種場景需要注意:

比如,京東頁面的資源請求,返回的repsonse header就只有Last-Modified,沒有ETag:

協商緩存需要配合強緩存使用,上面這個截圖中,除了Last-Modified這個header,還有強緩存的相關header, 因為如果不啟用強緩存的話,協商緩存根本沒有意義

如果資源已經被瀏覽器緩存下來,在緩存失效之前,再次請求時,默認會先檢查是否命中強緩存,如果強緩存命中則直接讀取緩存,如果強緩存沒有命中則發請求到伺服器檢查是否命中協商緩存,如果協商緩存命中,則告訴瀏覽器還是可以從緩存讀取,否則才從伺服器返回最新的資源。其瀏覽器判斷緩存的詳細流程圖,如下:

Ⅳ HBase寫數據的異常問題以及優化

本篇文章來說道說道如何診斷HBase寫數據的異常問題以及優化寫性能。和讀相比,HBase寫數據流程倒是顯得很簡單:數據先順序寫入HLog,再寫入對應的緩存Memstore,當Memstore中數據大小達到一定閾值(128M)之後,系統會非同步將Memstore中數據flush到HDFS形成小文件。

HBase數據寫入通常會遇到兩類問題,一類是寫性能較差,另一類是數據根本寫不進去。這兩類問題的切入點也不盡相同,如下圖所示:

寫性能優化切入點

1. 是否需要寫WAL?WAL是否需要同步寫入?

優化原理:數據寫入流程可以理解為一次順序寫WAL+一次寫緩存,通常情況下寫緩存延遲很低,因此提升寫性能就只能從WAL入手。WAL機制一方面是為了確保數據即使寫入緩存丟失也可以恢復,另一方面是為了集群之間非同步復制。默認WAL機制開啟且使用同步機制寫入WAL。首先考慮業務是否需要寫WAL,通常情況下大多數業務都會開啟WAL機制(默認),但是對於部分業務可能並不特別關心異常情況下部分數據的丟失,而更關心數據寫入吞吐量,比如某些推薦業務,這類業務即使丟失一部分用戶行為數據可能對推薦結果並不構成很大影響,但是對於寫入吞吐量要求很高,不能造成數據隊列阻塞。這種場景下可以考慮關閉WAL寫入,寫入吞吐量可以提升2x~3x。退而求其次,有些業務不能接受不寫WAL,但可以接受WAL非同步寫入,也是可以考慮優化的,通常也會帶來1x~2x的性能提升。

優化推薦:根據業務關注點在WAL機制與寫入吞吐量之間做出選擇

其他注意點:對於使用Increment操作的業務,WAL可以設置關閉,也可以設置非同步寫入,方法同Put類似。相信大多數Increment操作業務對WAL可能都不是那麼敏感~

2. Put是否可以同步批量提交?

優化原理:HBase分別提供了單條put以及批量put的API介面,使用批量put介面可以減少客戶端到RegionServer之間的RPC連接數,提高寫入性能。另外需要注意的是,批量put請求要麼全部成功返回,要麼拋出異常。

優化建議:使用批量put進行寫入請求

3. Put是否可以非同步批量提交?

優化原理:業務如果可以接受異常情況下少量數據丟失的話,還可以使用非同步批量提交的方式提交請求。提交分為兩階段執行:用戶提交寫請求之後,數據會寫入客戶端緩存,並返回用戶寫入成功;當客戶端緩存達到閾值(默認2M)之後批量提交給RegionServer。需要注意的是,在某些情況下客戶端異常的情況下緩存數據有可能丟失。

優化建議:在業務可以接受的情況下開啟非同步批量提交

使用方式:setAutoFlush(false)

4. Region是否太少?

優化原理:當前集群中表的Region個數如果小於RegionServer個數,即Num(Region of Table) < Num(RegionServer),可以考慮切分Region並盡可能分布到不同RegionServer來提高系統請求並發度,如果Num(Region of Table) > Num(RegionServer),再增加Region個數效果並不明顯。

優化建議:在Num(Region of Table) < Num(RegionServer)的場景下切分部分請求負載高的Region並遷移到其他RegionServer;

5. 寫入請求是否不均衡?

優化原理:另一個需要考慮的問題是寫入請求是否均衡,如果不均衡,一方面會導致系統並發度較低,另一方面也有可能造成部分節點負載很高,進而影響其他業務。分布式系統中特別害怕一個節點負載很高的情況,一個節點負載很高可能會拖慢整個集群,這是因為很多業務會使用Mutli批量提交讀寫請求,一旦其中一部分請求落到該節點無法得到及時響應,就會導致整個批量請求超時。因此不怕節點宕掉,就怕節點奄奄一息!

優化建議:檢查RowKey設計以及預分區策略,保證寫入請求均衡。

6. 寫入KeyValue數據是否太大?

KeyValue大小對寫入性能的影響巨大,一旦遇到寫入性能比較差的情況,需要考慮是否由於寫入KeyValue數據太大導致。KeyValue大小對寫入性能影響曲線圖如下:

圖中橫坐標是寫入的一行數據(每行數據10列)大小,左縱坐標是寫入吞吐量,右坐標是寫入平均延遲(ms)。可以看出隨著單行數據大小不斷變大,寫入吞吐量急劇下降,寫入延遲在100K之後急劇增大。

說到這里,有必要和大家分享兩起在生產線環境因為業務KeyValue較大導致的嚴重問題,一起是因為大欄位業務寫入導致其他業務吞吐量急劇下降,另一起是因為大欄位業務scan導致RegionServer宕機。

案件一:大欄位寫入導致其他業務吞吐量急劇下降

部分業務反饋集群寫入忽然變慢、數據開始堆積的情況,查看集群表級別的數據讀寫QPS監控,發現問題的第一個關鍵點:業務A開始寫入之後整個集群其他部分業務寫入QPS都幾乎斷崖式下跌,初步懷疑黑手就是業務A。

下圖是當時業務A的寫入QPS(事後發現腦殘忘了截取其他表QPS斷崖式下跌的慘象),但是第一感覺是QPS並不高啊,憑什麼去影響別人!

於是就繼續查看其他監控信息,首先確認系統資源(主要是IO)並沒有到達瓶頸,其次確認了寫入的均衡性,直至看到下圖,才追蹤到影響其他業務寫入的第二個關鍵點:RegionServer的handler(配置150)被殘暴耗盡:

對比上面兩張圖,是不是發現出奇的一致,那就可以基本確認是由於該業務寫入導致這台RegionServer的handler被耗盡,進而其他業務拿不到handler,自然寫不進去。那問題來了,為什麼會這樣?正常情況下handler在處理完客戶端請求之後會立馬釋放,唯一的解釋是這些請求的延遲實在太大。

試想,我們去漢堡店排隊買漢堡,有150個窗口服務,正常情況下大家買一個很快,這樣150個窗口可能只需要50個服務。假設忽然來了一批大漢,要定製超大漢堡,好了,所有的窗口都工作起來,而且因為大漢堡不好製作導致服務很慢,這樣必然會導致其他排隊的用戶長時間等待,直至超時。

可回頭一想這可是寫請求啊,怎麼會有這么大的請求延遲!和業務方溝通之後確認該表主要存儲語料庫文檔信息,都是平均100K左右的數據,是不是已經猜到了結果,沒錯,就是因為這個業務KeyValue太大導致。KeyValue太大會導致HLog文件寫入頻繁切換、flush以及compaction頻繁觸發,寫入性能急劇下降。

目前針對這種較大KeyValue寫入性能較差的問題還沒有直接的解決方案,好在社區已經意識到這個問題,在接下來即將發布的下一個大版本HBase 2.0.0版本會針對該問題進行深入優化,詳見 HBase MOB ,優化後用戶使用HBase存儲文檔、圖片等二進制數據都會有極佳的性能體驗。

案件二:大欄位scan導致RegionServer宕機

案件現場:有段時間有個0.98集群的RegionServer經常頻繁宕機,查看日誌是由於」java.lang.OutOfMemoryError: Requested array size exceeds VM limit」,如下圖所示:

原因分析:通過查看源碼以及相關文檔,確認該異常發生在scan結果數據回傳給客戶端時由於數據量太大導致申請的array大小超過JVM規定的最大值( Interge.Max_Value-2)。造成該異常的兩種最常見原因分別是:

表列太寬(幾十萬列或者上百萬列),並且scan返回沒有對列數量做任何限制,導致一行數據就可能因為包含大量列而數據超過array大小閾值

KeyValue太大,並且scan返回沒有對返回結果大小做任何限制,導致返回數據結果大小超過array大小閾值

有的童鞋就要提問啦,說如果已經對返回結果大小做了限制,在表列太寬的情況下是不是就可以不對列數量做限制呢。這里需要澄清一下,如果不對列數據做限制,數據總是一行一行返回的,即使一行數據大小大於設置的返回結果限制大小,也會返回完整的一行數據。在這種情況下,如果這一行數據已經超過array大小閾值,也會觸發OOM異常。

解決方案:目前針對該異常有兩種解決方案,其一是升級集群到1.0,問題都解決了。其二是要求客戶端訪問的時候對返回結果大小做限制(scan.setMaxResultSize(2*1024*1024))、並且對列數量做限制(scan.setBatch(100)),當然,0.98.13版本以後也可以對返回結果大小在伺服器端進行限制,設置參數hbase.server.scanner.max.result.size即可

寫異常問題檢查點

上述幾點主要針對寫性能優化進行了介紹,除此之外,在一些情況下還會出現寫異常,一旦發生需要考慮下面兩種情況(GC引起的不做介紹):

Memstore設置是否會觸發Region級別或者RegionServer級別flush操作?

問題解析:以RegionServer級別flush進行解析,HBase設定一旦整個RegionServer上所有Memstore佔用內存大小總和大於配置文件中upperlimit時,系統就會執行RegionServer級別flush,flush演算法會首先按照Region大小進行排序,再按照該順序依次進行flush,直至總Memstore大小低至lowerlimit。這種flush通常會block較長時間,在日誌中會發現「 Memstore is above high water mark and block 7452 ms」,表示這次flush將會阻塞7s左右。

問題檢查點:

Region規模與Memstore總大小設置是否合理?如果RegionServer上Region較多,而Memstore總大小設置的很小(JVM設置較小或者upper.limit設置較小),就會觸發RegionServer級別flush。集群規劃相關內容可以參考文章《》

列族是否設置過多,通常情況下表列族建議設置在1~3個之間,最好一個。如果設置過多,會導致一個Region中包含很多Memstore,導致更容易觸到高水位upperlimit

Store中HFile數量是否大於配置參數blockingStoreFile?

問題解析:對於數據寫入很快的集群,還需要特別關注一個參數:hbase.hstore.blockingStoreFiles,此參數表示如果當前hstore中文件數大於該值,系統將會強制執行compaction操作進行文件合並,合並的過程會阻塞整個hstore的寫入。通常情況下該場景發生在數據寫入很快的情況下,在日誌中可以發現」 Waited 3722ms on a compaction to clean up 『too many store files 「

問題檢查點:

參數設置是否合理? hbase.hstore.compactionThreshold表示啟動compaction的最低閾值,該值不能太大,否則會積累太多文件,一般建議設置為5~8左右。 hbase.hstore.blockingStoreFiles默認設置為7,可以適當調大一些。

寫性能還能再提高么?

上文已經從寫性能優化以及寫異常診斷兩個方面對HBase中數據寫入可能的問題進行了詳細的解釋,相信在0.98版本的基礎上對寫入來說已經是最好的解決方案了。但是有些業務可能依然覺得不夠快,畢竟」更快」是所有存儲系統活著的動力,那還有提高空間嗎?當然,接下來簡單介紹HBase之後版本對寫性能優化的兩點核心改進:

Utilize Flash storage for WAL(HBASE-12848)

這個特性意味著可以將WAL單獨置於SSD上,這樣即使在默認情況下(WALSync),寫性能也會有很大的提升。需要注意的是,該特性建立在HDFS 2.6.0+的基礎上,HDFS以前版本不支持該特性。具體可以參考官方jira: https://issues.apache.org/jira/browse/HBASE-12848

Multiple WALs(HBASE-14457)

該特性也是對WAL進行改造,當前WAL設計為一個RegionServer上所有Region共享一個WAL,可以想像在寫入吞吐量較高的時候必然存在資源競爭,降低整體性能。針對這個問題,社區小夥伴(阿里巴巴大神)提出Multiple WALs機制,管理員可以為每個Namespace下的所有表設置一個共享WAL,通過這種方式,寫性能大約可以提升20%~40%左右。

Ⅵ 怎樣提高緩存速度

在電腦系統中,硬體運行速度的快慢基本由緩存決定,緩存的容量越大,相應的硬體運行速度也就越快。緩存的應用幾乎遍及所有的硬體,比如CPU、硬碟、刻錄機等,甚至是軟體也有緩存。什麼是緩存?簡單來說緩存就是數據交換的緩沖區(稱作Cache),當某一硬體要讀取數據時,會首先從緩存中查找需要的數據,如果找到了則直接執行,找不到的話則從內存中找。由於緩存的運行速度比內存快得多,故緩存的作用就是幫助硬體更快地運行,因此,我們要不惜使出一切手段來增加硬體的緩存,讓機器「飛」起來,以下就介紹幾種增加緩存的方法。

CPU的緩存

CPU的緩存分二級:L1(一級緩存)和L2(二級緩存),當處理器要讀取數據時,首先要在L1緩存中查找,其次才是L2緩存,最後才是系統內存。如果有一天你發覺自己的電腦慢了很多,進入到Windows桌面也要幾分鍾,這時候就要檢查一下CPU的一、二級緩存有沒有打開。在BIOS設置中的Standard CMOS Setup(標准CMOS設定)有兩項是用來打開或關閉緩存的:CPUInternal Cache設為Enable時開啟CPU內部的一級緩沖區,若設置為Disabl則為關閉,這時系統性能將大大降低;ExternalCache選項是控制主板上二級緩沖區,如果主板上有二級緩存則應設成Enable。

硬碟的緩存

點擊電腦桌面上的「開始」/「運行」,鍵入「Msconfig」啟動「系統配置實用程序」,跟著選中「system.ini」標簽下的「Vcache」項,就可以根據系統的實際情況來調節硬碟的緩存了。在該選項中一般會有三行內容:ChunkSize=1024、MaxFileCache=10240和MinFileCache=10240;其中第一行是緩沖區讀寫單元值,第二、三行是硬碟的最大和最小緩沖值,等號後的數值都是可以修改的,只要右鍵單擊選中任一行就可以進行修改了。如果你的內存是128MB的話,上面這三行的取值就比較合理了,當然也可以自定。如果不知道該如何設置合適的緩沖值,請「Windows優化大師」幫忙吧,這個軟體中有一個「磁碟緩存優化」項,用滑鼠就可以方便地設置好緩存;又或者讓「Windows優化大師」自動幫你進行優化設置。當硬碟的緩存值足夠大時,硬碟就不用頻繁地讀寫磁碟,一來可以延長硬碟的壽命,二來也可以提高數據的傳輸速度。

另外,將硬碟的「文件系統緩存」設置為「網路伺服器」,可以加快系統對硬碟的訪問速度,因為文件系統緩存里存放了硬碟最近被訪問過的文件名和路徑,緩存越大所能儲存的內容也就越多。如果點擊「控制面板」/「系統」/「性能」/「文件系統」/「硬碟」,將「此計算機的主要用途」由「台式機」改為「網路伺服器」,可以將原來10K左右的緩存增加至近50K左右。

軟碟機和光碟機的緩存

一般來說,軟碟機讀寫數據的速度都比較慢,這是因為碟片的轉速不能太高,但是,我們可以提高軟碟機的讀寫緩存,讓軟碟機一次讀寫更多的數據。方法是:在桌面上的「開始」/「運行」框中鍵入「Regedit」運行注冊表編輯器,依次進入HKEY-LOCAL-MACHINE\System\CurrentControlSet\Services\Class\FDC\0000,新建一個為ForeFifo的「DWORD值」,將其值設為「0」,這樣就對軟碟機進行了軟提速。

很多人都知道右鍵單擊桌面「我的電腦」圖標,選「屬性」/「性能」/「文件系統」/「CD-ROM」,將最佳的訪問方式設為「四倍速或更高速」,將追加的高速緩存大小滑塊拖到最大處,可以明顯提高光碟機的讀盤速度。除了這種方式,我們還可以在注冊表中設置緩沖值,方法是:進入到注冊表,在HKEY-LOCAL-MACHINE\System\CurrentControlSet\Control\FileSystem\CDFS下,將CacheSize(緩存值的大小)和Prefetch(預讀文件大小)兩項進行手工調整,只要右鍵單擊要選的項就可以進行修改了。

IE瀏覽器的緩存

IE的緩存默認存放位置在c:\windows\Temporary InternetFiles,調節緩存的大小辦法是:依次點擊IE中的「工具」/「Internet選項」/「Internet臨時文件」中的「設置」選項,將「使用磁碟的空間」滑塊向右拖動來調節緩存的大小。應該說明的是,加大IE的緩存對提高上網速度並無幫助,它只可以將用來存放臨時網頁文件的硬碟空間增大,使IE出錯的機會相對減少。
請採納答案,支持我一下。

Ⅶ 電腦緩存怎樣能夠優化呢拜託了各位 謝謝

虛擬硬碟的概念和虛擬內存剛好相反,虛擬內存是將硬碟虛擬成內存用,而虛擬硬碟則是將內存虛擬成硬碟來使用,可以將硬碟里讀取較頻繁的數據放入內存中,以此來解決硬碟傳輸速率慢成為瓶頸的問題。對於小內存系統而言,由於本身物理內存已經十分緊張,根本不可能再分出多於的空間來做硬碟,而如今擁有2G容量以上大內存的朋友就可以拿出幾百兆的空間出來作為虛擬硬碟使用。如何創建虛擬硬碟?我們可以使用一款軟體-RAMDISK,下載地址 RAMDISK的安裝和設置非常簡單,安裝如圖安裝,運行RAMDISK,如果RAMDISK還沒有安裝,那麼僅僅是安裝RAMDISK按鈕可用,單擊按鈕,開始安裝,windows 可能會警告驅動程序沒有數字簽名,不去理睬它,按yes就可以了,好了,安裝完畢,這時除了 安裝ramdisk 按鈕以外的其他按鈕都可用了。 設置也很簡單,僅僅包括盤符,內存檔大小,內存檔的類型,這3個選項。還有一些高級設置需要修改注冊表,一般情況下不需要,具體看RAMDISK的說明。 內存檔大小,單位是千位元組,這個數值完全取決於你的電腦的內存多少。如果你有2G內存以上,甚至可以把內存檔的大小設置為800-1000兆。盤符的設置,沒什麼好說的,預設是R,只要是沒有使用的盤符都行。內存檔的類型,預設是固定硬碟,還可以設置為RAM驅動器,可移動磁碟等等。選擇好需要的設置後,按應用按鈕或者好的按鈕就可以了,打開資源管理器,你就會發現多了一個 盤符R(假定你設置的盤符是R,以後都直接用盤符R來代表內存檔)。虛擬硬碟設置:1、首先設置系統的臨時文件夾目錄,告訴系統和應用程序把臨時文件都寫到內存檔上,這樣可以提高系統的運行效率,又不需要擔心死機導致的臨時文件夾目錄逐漸增大的問題。右鍵點擊桌面上面的「我的電腦」,高級=》環境變數,設置包括「用戶環境變數」和「系統環境變數」都改成R:\TEMP,記住,最好不要用R:的根目錄作為臨時目錄。 2、更改IE的緩存目錄,告訴IE把瀏覽網頁時產生的臨時文件都寫到內存檔上,可以加快ie的瀏覽速度,選擇 控制面板=》intetnet選項=》常規=》設置,修改IE的緩存目錄,如果是寬頻,這個目錄大小設置100-300M即可3、其他應用程序,如winrar,需要單獨設置,一般都比較容易找到修改設置的位置。但是如果是在設置系統的臨時文件夾目錄以後,安裝這些軟體,一般會根據系統設置自動調整,不需要修改了。 4、現在很多朋友使用P2P軟體下載,如edonkey,emule,BT,迅雷等等,這些軟體的一個缺陷是由於是多線程訪問硬碟,使得硬碟的磁頭大量的無規律的移動,可能導致硬碟磁頭的磨損,但是這個缺點對於內存檔來說,卻根本不是缺點,因為內存檔根本沒有磁頭的機械運動,不過要記住下載完成後,要及時把文件拷貝到硬碟上,以免重啟動後文件丟失。 5.多數軟體都主要是通過系統的緩存來運行,與軟體的安裝位置無關的,將它們安裝在虛擬硬碟內效果並不明顯。只有自身帶有緩存設置的軟體如Photoshop,Office,游戲如Football manager系列等,把軟體的緩存設置在Ramdisk里效果才最明顯。

滿意請採納

Ⅷ 前端性能優化有哪些方法

前端性能優化的方法有:

一、減少http請求數

常用的減少http請求數有以下幾種:

1、合並圖片。當圖片較多時,可以合並為一張大圖,從而減少http請求數。經常變化的圖片可能不太合適,變化相對穩定的就可以考慮。合並大圖除了能減少http請求數外,還可以充分利用緩存來提升性能。

2、合並壓縮css樣式表和js腳本,他們的共同目的都是為了減少http連接數。

3、去掉不哪念虧必要的請求。開發寫代碼或者系統升級之後殘留的無效請求連接。

4、充分利用緩存。這里說高卜的緩存是客戶端側緩存或者說瀏覽器緩存。Expires頭信息是客戶端側緩存的重要依據,格式類似於Expires:sun ,20 Dec 2017 23:00:00 GMT。

如果當前時間小於Expires指定的時間,瀏覽器就會從緩存中直接獲取相關的數據信息或html文件,如果當前時間大於Expires指定的時間,瀏覽器會向伺服器發送請求來獲取相關數據信息。

以Apache為例,可在Apache的配置文件httpd.conf中設置Expires。

二、圖片優化

優化方法:

1、盡可能的使用PNG格式的圖片,它相對來說體積較小。

2、對於不同格式的圖片,在上線之前最好進行一定的優化。

3、圖片的延遲載入,也叫做賴載入。

三、使用CDN

CDN即內容分發網路,可以使用戶就近取得所需內容,解決網路李神擁擠的狀況,提高用戶訪問網站的響應速度。

四、開啟GZIP

GZIP即數據壓縮,用於壓縮使用Internet傳輸的所有文本資源。開啟GZIP的方法很簡單,到對應的web服務配置文件中設置一下即可。以Apache為例,在配置文件httpd.conf中添加。

五、樣式表和JS文件的優化

一般我們會把css樣式表文件放到文件的頭部。比如,放到<head>標簽中,這樣可以讓CSS樣式表盡早地完成下載。對應js腳本文件,一般我們把他放到頁面的尾部。

六、使用無cookie域名

無cookie域名的概念:當發送一個請求時,同時還要請求一張靜態的圖片和發送cookie時,伺服器對於這些cookie不會做任何使用,也就是說這些cookie沒什麼用,沒不要隨請求一同發送。

Ⅸ warframe正在優化下載緩存

warframe正在優化下載緩存作用。在游戲warframe中,緩存優叢判森化的作用是可以精簡玩家客戶端文件沖消,提升玩家客滲畝戶端響應速度,加快游戲載入時間。