20個Linux服務器性能調優技巧

Linux是一種開源操做系統,它支持各類硬件平臺,Linux服務器全球知名,它和Windows之間最主要的差別在於,Linux服務器默認狀況下通常不提供GUI(圖形用戶界面),而是命令行界面,它的主要目的是高效處理非交互式進程,響應時間並非那麼重要,相反,可以長時間處理高負載纔是最關鍵的。php

Linux高可用服務器集羣解決方案讓IT系統管理員能夠從容應對許多常見的硬件和軟件故障,容許多臺計算機一塊兒工做,爲關鍵服務正常運行提供保障,系統管理員能夠不中斷服務執行維護和升級。Linux服務器有各類用途,如Web服務器或分支機構內部服務器,CMS或CRS服務器,文件服務器(爲Windows和/或Linux用戶服務),VoIP電話服務器,郵件或域名服務器,數據庫服務器,雲計算配置中的基礎設施節點等。ios

Linux功能豐富、強大、靈活,你能夠用它完成各類任務,在這篇文章中,咱們將討論一些提升Linux服務器性能的技巧。算法

一、爲磁盤I/O調整Linux內核電梯算法數據庫

在選擇文件系統後,有一些內核和掛載選項可能會影響到它的性能表現,其中一個內核設置是電梯算法,經過調整電梯算法,系統能夠平衡低延遲需求,收集足夠的數據,以有效地組織對磁盤的讀和寫請求。apache

二、禁用沒必要要的守護進程,節省內存和CPU資源編程

每臺服務器上都運行着許多守護進程或服務,而具備諷刺意味的是,有不少一般不是必需的,這些服務沒有發揮做用,但卻消耗了寶貴的內存和CPU時間。此外,它們可能將服務器置於危險境地,多運行一個服務就等於多向黑客打開一扇長驅直入的門,所以,你應該將它們從服務器移除,禁用它們最大的好處是能夠加快啓動時間,釋放內存。另外,你能夠減小CPU須要處理的進程數,禁用它們的另外一個好處是加強服務器的安全性,由於越少的守護進程意味着可被攻擊和利用的漏洞越少。瀏覽器

下面是一些應該被禁用的Linux守護進程,默認狀況下,它們都是自動運行的:緩存

 序號安全

 守護進程性能優化

 描述

 1

 Apmd

 高級電源管理守護進程

 2

Nfslock

用於NFS文件鎖定

 3

Isdn

ISDN Moderm支持

 4

Autofs

在後臺自動掛載文件系統(如自動掛載CD-ROM)

 5

Sendmail

郵件傳輸代理

 6

Xfs

X Window的字體服務器

三、關掉GUI

通常說來,Linux服務器是不須要GUI的,全部管理任務均可以在命令行下完成,所以最好關掉GUI,重定向X顯示或經過一個Web瀏覽器界面顯示。爲了禁用GUI,「init level(啓動級別)」應該被設置爲3(命令行登陸),而不是5(圖形登陸),若是須要GUI,能夠隨時運行startx進入圖形用戶界面。

四、清理不須要的模塊或功能

在服務器軟件包中有太多被啓動的功能或模塊其實是不須要的(如Apache中的許多功能模塊),仔細查看Apache配置文件,肯定FrontPage支持或其它額外的模塊是否真的要用到,若是不須要,應該絕不猶豫地從服務器禁用掉,這樣有助於提升系統內存可用量,騰出更多資源給那些真正須要的軟件,讓它們運行得更快。

五、禁用控制面板

在Linux中,有許多流行的控制面板,如Cpanel,Plesk,Webmin和phpMyAdmin等,相信每一個Linux初級用戶都很喜歡這些控制面板,可是,禁用掉這些軟件包能夠釋放出大約120MB內存,所以,我強烈建議禁用掉這些控制面板,除非它們真的須要用到,它們能夠經過PHP腳本(儘管有些不安全),或命令行命令啓用,這樣作後,內存使用量大約能夠降低30-40%。

六、改善Linux Exim服務器性能

有許多種方法改善服務器的Exim性能,其中一個辦法是使用DNS緩存守護進程,它能夠下降解析DNS記錄須要的帶寬和CPU時間,DNS緩存經過消除每次都從根節點開始查找DNS記錄的需求,從而改善網絡性能,Djbdns是一個很是強大的DNS服務器,它具備DNS緩存功能,Djbdns比BIND DNS服務器更安全,性能更好,能夠直接經過http://cr.yp.to/下載,或經過Red Hat提供的軟件包得到。

七、使用AES256加強gpg文件加密安全

爲了提升備份文件或敏感信息的安全,許多Linux系統管理員都會使用gpg進行加密,在使用gpg時,最好指定gpg使用AES256加密算法,AES256使用256位密鑰,它是一個開放的加密算法,美國國家安全局(NSA)都使用它保護絕密信息,沒有什麼比它更安全的了。

八、遠程備份服務安全

安全是選擇遠程備份服務最重要的因素,大多數系統管理員都懼怕兩件事:(黑客)能夠刪除備份文件,不能從備份恢復系統。

爲了保證備份文件100%的安全,備份服務公司提供遠程備份服務器,使用scp腳本或RSYNC經過SSH傳輸數據,這樣,沒有人能夠直接進入和訪問遠程系統,所以,也沒有人能夠從備份服務刪除數據。在選擇遠程備份服務提供商時,最好從多個方面瞭解其服務強壯性,若是能夠,能夠親自測試一下。

九、更新默認內核參數設置

爲了順利和成功運行企業應用程序,如數據庫服務器,可能須要更新一些默認的內核參數設置,例如,2.4.x系列內核消息隊列參數msgmni有一個默認值(例如,共享內存,或shmmax在Red Hat系統上默認只有33554432字節),它只容許有限的數據庫併發鏈接,下面爲數據庫服務器更好地運行提供了一些建議值(來自IBM DB2支持網站):

kernel.shmmax=268435456 (32位) kernel.shmmax=1073741824 (64位) kernel.msgmni=1024 fs.file-max=8192 kernel.sem=」250 32000 32 1024″

十、優化TCP

優化TCP協議有助於提升網絡吞吐量,跨廣域網的通訊使用的帶寬越大,延遲時間越長時,建議使用越大的TCP Linux大小,以提升數據傳輸速率,TCP Linux大小決定了發送主機在沒有收到數據傳輸確認時,能夠向接收主機發送多少數據。

十一、選擇正確的文件系統

使用ext4文件系統取代ext3

● Ext4是ext3文件系統的加強版,擴展了存儲限制

●它具備日誌功能,保證高水平的數據完整性(在非正常關閉事件中)

●在非正常關閉和重啓時,它不須要檢查磁盤(這是一個很是耗時的動做)

●更快的寫入速度,ext4日誌優化了硬盤磁頭動做

十二、使用noatime文件系統掛載選項

在文件系統啓動配置文件fstab中使用noatime選項,若是使用了外部存儲,這個掛載選項能夠有效改善性能。

1三、調整Linux文件描述符限制

Linux限制了任何進程能夠打開的文件描述符數量,默認限制是每進程1024,這些限制可能會阻礙基準測試客戶端(如httperf和apachebench)和Web服務器自己得到最佳性能,Apache每一個鏈接使用一個進程,所以不會受到影響,但單進程Web服務器,如Zeus是每鏈接使用一個文件描述符,所以很容易受默認限制的影響。

打開文件限制是一個能夠用ulimit命令調整的限制,ulimit -aS命令顯示當前的限制,ulimit -aH命令顯示硬限制(在未調整/proc中的內核參數前,你不能增長限制)。

Linux第三方應用程序性能技巧

對於運行在Linux上的第三方應用程序,同樣有許多性能優化技巧,這些技巧能夠幫助你提升Linux服務器的性能,下降運行成本。

1四、正確配置MySQL

爲了給MySQL分配更多的內存,可設置MySQL緩存大小,要是MySQL服務器實例使用了更多內存,就減小緩存大小,若是MySQL在請求增多時停滯不動,就增長MySQL緩存。

1五、正確配置Apache

檢查Apache使用了多少內存,再調整StartServers和MinSpareServers參數,以釋放更多的內存,將有助於你節省30-40%的內存。

提升監控/故障排除能力的技巧

下面是一些提升Linux服務器監控和故障排除的技巧:

1六、分析Linux服務器性能

提升系統效率最好的辦法是找出致使總體速度降低的瓶頸並解決掉,下面是找出系統關鍵瓶頸的一些基本技巧:

● 當大型應用程序,如OpenOffice和Firefox同時運行時,計算機可能會開始變慢,內存不足的出現概率更高。

● 若是啓動時真的很慢,多是應用程序初次啓動須要較長的加載時間,一旦啓動好後運行就正常了,不然極可能是硬盤太慢了。

●CPU負載持續很高,內存也夠用,但CPU利用率很低,可使用CPU負載分析工具監控負載時間。

1七、學習5個Linux性能命令

使用幾個命令就能夠管理Linux系統的性能了,下面列出了5個最經常使用的Linux性能命令,包括top、vmstat、iostat、free和sar,它們有助於系統管理員快速解決性能問題。

(1)top

Top命令不只顯示了當前內核服務的任務,還顯示了許多關於主機狀態的統計數據,默認狀況下,它每隔5秒自動更新一次顯示的數據(這個時間間隔是能夠配置的),經過top命令,咱們能夠得知幾個結果,如:當前正常運行時間,系統負載,進程數量和內存使用率,此外,這個命令也顯示了那些使用最多CPU時間的進程(包括每一個進程的各類信息,如運行用戶,執行的命令等)。

(2)vmstat

Vmstat命令提供當前CPU、IO、進程和內存使用率的快照,它和top命令相似,自動更新數據,如:

 

$ vmstat 10

(3)iostat

Iostat命令(在Ubuntu,Red Hat/Fedora上包含在sysstat軟件包中)提供三個報告:CPU利用率、設備利用率和網絡文件系統利用率,不加任何參數運行時,iostat將顯示這三個報告,使用-c,-d和-h參數能夠分別獨立顯示這三個報告。

(4)free

Free命令顯示主內存和交換空間的內存統計數據,指定-t參數能夠顯示總內存數量,指定-b參數能夠按字節爲單位進行顯示,使用-m則以兆爲單位顯示,默認狀況下是以千字節爲單位的。

 

Free命令也可使用-s參數加一個延遲時間(單位:秒)連續運行,如:

 

$ free -s 5

(5)sar

Sar命令收集,查看和記錄性能數據,這個命令比前面幾個命令歷史更悠久,它能夠收集和顯示較長週期的數據。

1八、將日誌文件轉移到內存中

當一臺機器處於運行中時,最好是將系統日誌放在內存中,當系統關閉時再將其複製到硬盤,當你運行一臺開啓了syslog功能的筆記本電腦或移動設備時,ramlog能夠幫助你提升系統電池或移動設備閃存驅動器的壽命,使用ramlog的一個好處是,不用再擔憂某個守護進程每隔30秒向syslog發送一條消息,放在之前,硬盤必須隨時保持運轉,這樣對硬盤和電池都很差。

1九、先打包,後寫入

在內存中劃分出固定大小的空間保存日誌文件,這意味着筆記本電腦硬盤不用一直保持運轉,只有當某個守護進程須要寫入日誌時才運轉,注意ramlog使用的內存空間大小是固定的,不然系統內存會很快被用光,若是筆記本使用固態硬盤,能夠分配50-80MB內存給ramlog使用,ramlog能夠減小許多寫入週期,極大地提升固態硬盤的使用壽命。

20、通常調優技巧

儘量使用靜態內容替代動態內容,若是你在生整天氣預告,或其它每隔1小時就必須更新的數據,最好是寫一個程序,每隔1小時生成一個靜態的文件,而不是讓用戶運行一個CGI動態地生成報告。

爲動態應用程序選擇最快最合適的API,CGI可能最容易編程,但它會爲每一個請求產生一個進程,一般,這是一個成本很高,且沒必要要的過程,FastCGI是更好的選擇,和Apache的mod_perl同樣,均可以極大地提升應用程序的性能。

相關文章
相關標籤/搜索