1、如何提高Linux伺服器磁碟io性能
您好,很高興為您解答。
在現有文件系統下進行優化:
linux內核和各個文件系統採用了幾個優化方案來提升磁碟訪問速度。但這些優化方案需要在我們的伺服器設計中進行配合才能得到充分發揮。
文件系統緩存
linux內核會將大部分空閑內存交給虛擬文件系統,來作為文件緩存,叫做page cache。在內存不足時,這部分內存會採用lru演算法進行淘汰。通過free命令查看內存,顯示為cached的部分就是文件緩存了。
如何針對性優化:
lru並不是一個優秀淘汰演算法,lru最大的優勢是普適性好,在各種使用場景下都能起到一定的效果。如果能找到當前使用場景下,文件被訪問的統計特徵,針 對性的寫一個淘汰演算法,可以大幅提升文件緩存的命中率。對於http正向代理來說,一個好的淘汰演算法可以用1GB內存達到lru演算法100GB內存的緩存 效果。如果不打算寫一個新的淘汰演算法,一般不需要在應用層再搭一個文件cache程序來做緩存。
最小分配:
當文件擴大,需要分配磁碟空間時,大部分文件系統不會僅僅只分配當前需要的磁碟空間,而是會多分配一些磁碟空間。這樣下次文件擴大時就可以使用已經分配好的空間,而不會頻繁的去分配新空間。
例如ext3下,每次分配磁碟空間時,最小是分配8KB。
最小分配的副作用是會浪費一些磁碟空間(分配了但是又沒有使用)
如何針對性優化:
我們在reiserfs下將最小分配空間從8KB改大到128K後提升了30%的磁碟io性能。如果當前使用場景下小文件很多,把預分配改大就會浪費很多 磁碟空間,所以這個數值要根據當前使用場景來設定。似乎要直接改源代碼才能生效,不太記得了,09年的時候改的,有興趣的同學自己google吧。
io訪問調度:
在同時有多個io訪問時,linux內核可以對這些io訪問按LBA進行合並和排序,這樣磁頭在移動時,可以「順便」讀出移動過程中的數據。
SATA等磁碟甚至在磁碟中內置了io排序來進一步提升性能,一般需要在主板中進行配置才能啟動磁碟內置io排序。linux的io排序是根據LBA進行的,但LBA是一個一維線性地址,無法完全反應出二維的圓形磁碟,所以磁碟的內置io排序能達到更好的效果。
如何針對性優化:
io訪問調度能大幅提升io性能,前提是應用層同時發起了足夠的io訪問供linux去調度。
怎樣才能從應用層同時向內核發起多個io訪問呢?
方案一是用aio_read非同步發起多個文件讀寫請求。
方案二是使用磁碟線程池同時發起多個文件讀寫請求。
對我們的http正向代理來說,採用16個線程讀寫磁碟可以將性能提升到2.5倍左右。具體開多少個線程/進程,可以根據具體使用場景來決定。
小提示:
將文件句柄設置為非阻塞時,進程還是會睡眠等待磁碟io,非阻塞對於文件讀寫是不生效的。在正常情況下,讀文件只會引入十幾毫秒睡眠,所以不太明顯;而在磁碟io極大時,讀文件會引起十秒以上的進程睡眠。
預讀取:
linux內核可以預測我們「將來的讀請求」並提前將數據讀取出來。通過預讀取可以減少讀io的次數,並且減小讀請求的延時。
如何針對性優化:
預讀取的預測准確率是有限的,與其依賴預讀取,不如我們直接開一個較大的緩沖區,一次性將文件讀出來再慢慢處理;盡量不要開一個較小的緩沖區,循環讀文件/處理文件。
雖然說「預讀取」和「延遲分配」能起到類似的作用,但是我們自己擴大讀寫緩沖區效果要更好。
延遲分配:
當文件擴大,需要分配磁碟空間時,可以不立即進行分配,而是暫存在內存中,將多次分配磁碟空間的請求聚合在一起後,再進行一次性分配。
延遲分配的目的也是減少分配次數,從而減少文件不連續。
延遲分配的副作用有幾個:
1、如果應用程序每次寫數據後都通過fsync等介面進行強制刷新,延遲分配將不起作用
2、延遲分配有可能間歇性引入一個較大的磁碟IO延時(因為要一次性向磁碟寫入較多數據)
只有少數新文件系統支持這個特性
如何針對性優化:
如果不是對安全性(是否允許丟失)要求極高的數據,可以直接在應用程序里緩存起來,積累到一定大小再寫入,效果比文件系統的延遲分配更好。如果對安全性要求極高,建議經常用fsync強制刷新。
在線磁碟碎片整理:
Ext4提供了一款碎片整理工具,叫e4defrag,主要包含三個功能:
1、讓每個文件連續存儲
2、盡量讓每個目錄下的文件連續存儲
3、通過整理空閑磁碟空間,讓接下來的分配更不容易產生碎片
如何針對性優化:
「讓每個目錄下的文件連續存儲」是一個極有價值的功能。
傳統的做法是通過拼接圖片來將這10張圖片合並到一張大圖中,再由前端將大圖切成10張小圖。
有了e4defrag後,可以將需連續訪問的文件放在同一個文件夾下,再定期使用e4defrag進行磁碟整理。
實現自己的文件系統:
在大部分伺服器上,不需要支持「修改文件」這個功能。一旦文件創建好,就不能再做修改操作,只支持讀取和刪除。在這個前提下,我們可以消滅所有文件碎片,把磁碟io效率提升到理論極限。
有一個公式可以衡量磁碟io的效率:
磁碟利用率 = 傳輸時間/(平均尋道時間+傳輸時間)
如若滿意,請點擊回答右側【採納答案】,如若還有問題,請點擊【追問】
~ O(∩_∩)O~
2、伺服器linux性能比windows更好嗎
從需求性、穩定性、操作性、安全性、性價比來分析一番,然後您就知道該選哪款空間了。
需求性:
這個要看您網站選取的語言,如果是asp建設的網站,毫不猶豫應該選擇Windows主機,Linux不支持asp系列的語言;如果是PHP語言建設的網站,建議選擇Liunx主機,因為在liunx平台中,Linux+Apche+Mysql構架運行PHP網頁可以更高效,更穩定。Linux空間還支持zend加速等,讓你的網站跑的更順暢!
穩定性:
主機的穩定性是至關重要的,關系著網站的生存發展,如果穩定性不夠好的話,就會影響用戶的訪問,也會影響網站的優化,導致沒有排名,這對於用戶體驗度的影響是非常大的。通常來說,Linux穩定性要比Windows好些,因為Linux開源,一般很少有漏洞,就很少會招到網路攻擊。再就是Windows的圖形界面需要佔很多資源,而Linux系統去掉圖形界面的包袱,系統運行得更快。
Windows配置變化的時候,通常需要重新啟動,這導致不可避免的停機,而Linux通常不需要重新啟動。幾乎所有的Linux系統配置的改變都能在系統運行中操作,而且還不會影響其他無關的服務。
所以,Liunx要更穩定。
操作性:
Windows系統的普及和它的圖形化界面讓我們每個懂電腦的人都不會陌生了,而Linux伺服器一般是純命令行模式,每完成一個操作,比如新建一個文件夾,都要用一串命令來完成。所以從操作性來講,Liunx操作性要困難些。
安全性:
從安全漏洞的數量上來說,Linux的開源開發方式有助於發現錯誤,集眾人智慧解決問題,各種補丁更新得很快,這是Windows主機不具備的優勢。Linux系統也有自己的缺點,就是廠商開發的硬體和相關驅動一般針對的是Windows系統,使得Linux的硬體兼容相對延後。Linux主要用作支持網路功能的操作系統,默認安裝時啟動了很多不必要的網路應用程序,這就可能造成安全漏洞。
還有Linux裡面的許可權分配的很細致、嚴格,各個用戶之間也相互獨立,所以安全性較好。
性價比:
從這點來講,我想Linux的優勢是顯而易見的,因為Linux作為資源管理和操作系統來說,是開源、免費的。而Windows伺服器系統是要收費的,相應,Windows裡面的某些軟體也是收費的。因此,Windows主機的成本就要比Linux高很多,自然Windows空間要貴一些。
那麼現在很明顯,Linux空間是比較有優勢的,只不過它只能跑純靜態html或php建設的網站。所以如果網站只用到了php語言,那麼選Linux空間是很不錯的,無論從安全還是性能,都比windows有優勢。反正,如果是asp或.net系列的網站,就選windows主機吧。
3、優化Linux伺服器硬碟性能有什麼竅門
優化都是沒有竅門存在的,建議樓主還是踏踏實實做好優化工作,給您推薦兩個常見的優回化技能:
一、清答理磁碟
這種方法看上去很簡單:清理磁碟驅動器,刪除不需要的文件,清除所有需要被保存但將不被使用的文件。如果可能的話,清除多餘的目錄,並減少子目錄的數目。這些建議似乎顯而易見,但是你會驚訝地發現,每個磁碟上確實積累了非常多的垃圾。釋放磁碟空間可以幫助系統更好地工作。
二、使用軟體RAID
RAID廉價驅動器的冗餘陣列,也可以改善磁碟驅動器性能和容量。Linux支持軟體RAID和硬體RAID.軟體RAID嵌入在Linux 內核中,比硬體RAID花費要少得多。
4、怎麼提高linux伺服器性能,讓速度更快更穩定
1、我們平時登陸Linux伺服器的時候,都需要在輸入用戶名之後再等待專一下,這個時間因屬不同而等的時間不一樣。
2、其實這個問題是由ssh里邊的配置造成的,只需要我們改一下即可正常快速登陸。
3、我們編輯sshd_config 這個文件:vi /etc/ssh/sshd_config。
4、然後在里邊打開 需要修改的行。
5、我們把前面的#號去了,然後把yes 改變為no,UseDNS no。
6、然後保存退出,再重啟下ssh服務測試下就可以了,service sshd restart。
5、請大家幫忙推薦一本LINux伺服器性能調優的書籍
我就是這本書。。。這是一個很復雜的問題。本人前些時候剛剛給一個網商網站做過審計。項目那是很多的,而且很多跟具體的服務相關,譬如資料庫。沒有這么一本全面解釋的書。
我做這個審計,也是在公司幾年的技術積累的基礎上做的,有一個資料庫做支撐,還有各方面資深的工程師討論。這是一個很復雜,相當靠經驗的活兒。
6、如何用命令檢查Linux伺服器性能
Linux查詢資源的使用情況,通長會用到如下命令:
1、top, 其會實時的顯示當前系統中的回資源佔用情況;
2、vmstat ,顯示內答存和進程關聯資源的相關信息;
3、iostat,評估磁碟的性能情況;
4、netstat,查看當前的網路連接情況;
5、ps,查看相關的進程信息。
還有很多開源的組件,需要你自己去發掘。
7、怎麼優化linux伺服器,現在很卡
慢只是感覺,需要你去作性能測試簡單的是top看看誰佔了資源,類似windows下的任務管理器看內存free-m情況另外還有測試命令如iostat之類的
8、如何讓linux伺服器磁碟io性能翻倍
如何讓CentOS伺服器磁碟io性能翻倍
這一期我們來看一下有哪些辦法可以減少linux下的文件碎片。主要是針對磁碟長期滿負荷運轉的使用場景(例如http代理伺服器);另外有一個小技巧,針對互聯網圖片伺服器,可以將io性能提升數倍。如果為伺服器訂制一個專用文件系統,可以完全解決文件碎片的問題,將磁碟io的性能發揮至極限。對於我們的代理伺服器,相當於把io性能提升到3-5倍。
在現有文件系統下進行優化linux內核和各個文件系統採用了幾個優化方案來提升磁碟訪問速度。但這些優化方案需要在我們的伺服器設計中進行配合才能得到充分發揮。
文件系統緩存linux內核會將大部分空閑內存交給虛擬文件系統,來作為文件緩存,叫做page cache。在內存不足時,這部分內存會採用lru演算法進行淘汰。通過free命令查看內存,顯示為cached的部分就是文件緩存了。
如果能找到當前使用場景下,文件被訪問的統計特徵,針對性的寫一個淘汰演算法,可以大幅提升文件緩存的命中率。對於http正向代理來說,一個好的淘汰演算法可以用1GB內存達到lru演算法100GB內存的緩存效果。如果不打算寫一個新的淘汰演算法,一般不需要在應用層再搭一個文件cache程序來做緩存。