歡迎您光臨本站 註冊首頁

Linux通用系統優化

←手機掃碼閱讀     火星人 @ 2014-03-24 , reply:0

針對系統的優化工作需要根據不同的系統採用不同的辦法。本文旨在描述通用的優化 Linux 的一些辦法。

一、編譯選項

「etc/profile」文件含有系統大量的環境和啟動程序的配置信息。你在該文件中進行的配置,可以通過申請全局環境變數來實現。因此,在該文件中設置優化標誌,是一種明智的選擇。要想使x86程序獲得最佳性能,可以在編譯時,使用最佳的優化選項-O9 。許多程序的「Makefile」文件中已經含有-O2選項,而-O9使編譯器採用最高級別的優化。儘管它將增加最終程序的大小,但這樣可以獲得更高的運行速度。編譯時,使用「-fomit-frame-pointer」選項,程序運行時,訪問變數時將使用堆棧。但是,使用這一選項,生產的代碼將無法調試。使用「-mcpu=cpu_type」和「-march=cpu_type」選項,Gcc將針對這種型號CPU進行專門的優化,但生成的代碼只能在所指定的CPU或更高系列的CPU上運行。當我們採用 -O9來編譯程序時,或許文件位元組數是最大的,但是往往其運行速度也是最快的。根據不同的機器架構,你可以把下面的語句加入 /etc/profile 。

對於CPU i686或PentiumPro、Pentium II、Pentium III等:

CFLAGS='-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro

-march=pentiumpro -fomit-frame-pointer -fno-exceptions'

對於CPU i586或Pentium:

CFLAGS='-O3 -march=pentium -mcpu=pentium -ffast-math -funroll-loops

-fomit-frame-pointer -fforce-mem -fforce-addr -malign-double -fno-exceptions'

對於CPU i486:

FLAGS='-O3 -funroll-all-loops -malign-double -mcpu=i486 -march=i486

-fomit-frame-pointer -fno-exceptions'

在進行完以上設置之後,緊接著把「CFLAGS LANG LESSCHARSET」加入到「etc/profile」文件中的「export」行中:

export PATH PS1 HOSTNAME HISTSIZE HISTFILESIZE USER LOGNAME MAIL INPUTRC CFLAGS

LANG LESSCHARSET

然後,重新登錄,這時,環境變數CFLAGS已經被賦值,編譯器和其它配置工具可以使用它。對Pentium(Pro/II/III)的優化必須使用egcs或pgcc編譯器。Linux的預設安裝中,已經裝上了egcs,所以無需擔心。

另外,安裝程序時,使用 tarball 格式總要比 RPM 格式來得好,因為, tarball 需要重新編譯,能針對你的機器架構作優化,得到最好的性能。

二、重新編譯內核

一般的 Linux 發行商發布的 Linux 版本,其內核總是會帶有一些對你來說不是很實用的東西,例如對HAM Radio的支持,對 Token Ring 的支持等。可以查看下面的兩個網站的資料:

Linux Kernel Howto: www.linuxdoc.org/HOWTO/Kernel-HOWTO.html

Linux Kernel : www.kernel.org

編輯/usr/src/linux/Makefile文件,可以根據具體的cpu優化內核編譯。以下的參數設置將得到優化的內核性能。

① vi +18 /usr/src/linux/Makefile ,將HOSTCC =gcc改為 HOSTCC =egcs.

② vi +25 /usr/src/linux/Makefile

將CC =$(CROSS_COMPILE)gcc D__KERNEL__ -I$(HPATH)

改為 CC =$(CROSS_COMPILE)egcs D__KERNEL__ -I$(HPATH).

③ vi +90 /usr/src/linux/Makefile

將CFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer

改為CFLAGS = -Wall -Wstrict-prototypes -O9 -funroll-loops -ffast-math

-malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer

-fno-exceptions

④ vi +19 /usr/src/linux/Makefile

將HOSTCFLAGS =-Wall -Wstrict-prototypes -O2 -fomit-frame-pointer

改為HOSTCFLAGS =-Wall -Wstrict-prototypes -O9 -funroll-loops -ffast-math

-malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer

-fno-exceptions

根據以上修改後的makefile文件重新編譯內核將得到較優的性能。

三、停止不使用的服務

Sendmail, httpd, crond, kudzu, mysql, portmap, postgresql, smb, snortd, webmin,

inetd (或者 xinetd) 等都是很棒的程序,但是如果你不會使用他們,幹嗎要讓他們佔用您寶貴的資源呢?而且,這些程序都會帶來安全隱患。一般說來,一套「乾淨」的 Linux 系統,只需要gpm, network, syslog, ssh 和 xfs。如果臨時有需要,就手工啟動好了。這些啟動腳本一般都在/etc/rc.d/init.d目錄下。

檢查自己的機器上使用中的服務,可以採用 nmap 工具掃描。

[xyj@freelamp.com]$ nmap -p1-65535 211.94.129.28

Starting nmap V. 2.54BETA30 ( www.insecure.org/nmap/ )

Interesting ports on freelamp.com (211.94.129.28):

(The 65492 ports scanned but not shown below are in state: closed)

---Edited version of the output due to space considerations--

Port State Service

...

514/tcp open shell

1025/tcp open listen

1099/tcp open unknown

1214/tcp open unknown

...

檢查特定埠上正在運行的程序名,可以採用:

[root@freelamp.com /root]# netstat -anp|more

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

....

tcp 0 0 203.199.66.200:8007 203.199.66.197:1060 CLOSE 1005/java

tcp 0 0 203.199.66.200:22 203.199.66.197:3768 ESTABLISHED 1381/sshd

tcp 0 0 203.199.66.200:23 192.168.57.46:1546 ESTABLISHED 1229/in.telnetd: 19

....

最後一列顯示運行的程序及其 PID。

我們還可以採用 ps 命令檢查機器上正在運行的守護程序:

[root@freelamp.com root]# ps xc -u 0

PID TTY STAT TIME COMMAND

...

1475 ? S 0:02 sendmail

1498 ? S 0:04 gpm

16539 ? S 0:01 httpd

...

四、優化磁碟

1、優化分區

在安裝系統之前,您就需要對硬碟做好恰當的規劃。劃分一定的文件系統,不僅僅是系統本身的需要,而且在安全層面上也十分有意義。在Linux系統中,我們可以自由地組織磁碟分區。一個優化的分區策略,可以很好地改進Linux系統的性能,減少磁碟碎片,提高磁碟I/O能力。根據磁碟的特點,我們知道越是靠磁碟外部的柱面,旋轉越快,而且每次旋轉時,磁碟讀寫頭可以覆蓋較多的區域,也就意味著靠外部的柱面可以得到較好的性能。所以在分區時,我們應該考慮將訪問頻率高的,對系統性能影響相對較大的分區置於磁碟的靠外部分。同時,為了減少磁碟碎片,應將內容經常改變的目錄放在單獨的分區。從方便備份數據的角度考慮,因為很多備份工具對整個分區進行備份的效率要高,所以我們應將Linux系統的幾個主要的目錄作為單獨的文件系統,為它們各自分配一個區。推薦的分區策略如:

在上圖中,磁碟還有一部分未分區的空間,為什麼不在安裝系統時,將整個磁碟分區呢?現在的硬碟空間比較大,而在安裝系統時,也許你所安裝的文件加上以後增長所需要的空間用不到整個磁碟存儲空間。保留一部分未分區空間,當以後有新的需要時,就可以用fdisk重新將之分區。在分區時,需要注意的是,根據系統將來運行的需要或過去的經驗來估計各個分區的大小,以免將來空間不夠。

/dev/hda5 swap swap defaults,pri=5 0 0

/dev/hdc5 swap swap defaults,pri=5 0 0

當然,如果你的系統內存足夠大,而你的系統又遠遠用不了那麼多的內存,那也就用不到什麼虛存了。分區時你就可以考慮去掉交換分區。不過作為一個Linux伺服器,即使你的內存足夠大,還是應該設置交換分區。如果有多個硬碟的話,可以在每個硬碟上各開 swap 分區,另外,建議 swap 分區的大小為物理內存的兩倍。

2、使用hdparm改善Linux系統性能

如果你的Linux系統運行於IDE硬碟,可以使用hdparm工具來提高磁碟I/O的性能。不過使用hdparm要小心,因為可能破壞硬碟上的數據。所以在使用hdparm之前,仔細閱讀你的硬碟手冊。根據你具體的硬碟規格來使用相應的hdparm開關參數。對一塊UltraATA/66

EIDE 硬碟,其控制晶元支持多 PIO 模式和DMA,我們使用以下命令來調諧磁碟性能:

# /sbin/hdparm -x66 -d1 -u1 -m16 -c3 /dev/hda

選項說明:

① c3 :就是把硬碟的16位格式轉換為32位模式(32-bit mode w/sync)。控制數據如何從pci匯流排傳遞到控制器。

② m16 :改變硬碟的多路扇區的讀功能,-m16可以使得硬碟在一次i/o中斷中讀入16個扇區的數據(據具體硬碟而定)。

③ d1:打開DMA模式。

④ x66 :在支持UDMA-capable的硬碟中,這個參數可以支持雙DMA通道的數據傳輸模式。

⑤ u1 :Linux在處理磁碟中斷時,可以unmask其他的中斷或者響應其他中斷相關的任務。

查看以上的更改情況可以使用命令:

# /sbin/hdparm /dev/hda

測試磁碟I/O性能可以使用命令:

# /sbin/hdparm -tT /dev/hda

如果磁碟的性能有改進的話,可以使用以下命令來保存設置:

# /sbin/hdparm -k1 /dev/hda

3、Linux下使用軟RAID

RAID(磁碟冗餘陣列)是通過將數據分佈在多個磁碟上來增強磁碟性能和可靠性的技術。如果你的系統沒有硬體RAID控制器的話,在Linux下可以通過軟體來實現RAID。RAID有很多的級別,不同的級別對硬體有不同的要求,相應也會得到不同的性能和可靠性。RAID0為數據分割,數據塊被交替寫到磁碟,可以得到最好的讀寫性能,但是不提供數據冗餘。RAID1為磁碟鏡像,寫到磁碟1中的一切也寫到磁碟2中,從任何一個磁碟都可以讀取。RAID3除了數據分割之外,還指定一個磁碟驅動器來存儲奇偶信息。

在LINUX下通過軟體來實現RAID, 需要LINUX的內核支持,可以通過編譯新內核來添加對RAID的支持。然後還需編譯並安裝 raidtools

軟體包。raidtools 是可以初始化、啟動、停止及控制 RAID 陣列的用戶級工具。下面是我們用兩塊IDE硬碟在LINUX內核2.4上實現RAID0的方法。

設置分區 使用RAID0至少需要兩個分區,它們位於不同的磁碟。最好做RAID0的兩個分區有相同的大小。創建分區時,將分區類型指定為 "FD"。以使 Linux 內核能將它們識別為 RAID 分區,這樣,這些分區就可在每次引導時自動被檢測並啟動。如果您沒有以這種方式標記 RAID 分區,則在每次引導之後,必須首先輸入 "raidstart --all" 才能掛載 RAID 陣列。我們做成RAID0的兩個分區為hda5和hdc5。

編輯/etc/raidtab文件 創建/etc/raidtab文件以描述RAID陣列的配置信息。Linux 內核使用這些信息在引導時自動檢測並啟動 RAID 陣列,因此必須對創建的每個 RAID 陣列進行這種配置。將分區hda5和hdc5組成md0 RAID0陣列的配置文件如下:

raiddev /dev/md0

raid-level 0

nr-raid-disks 2

persistent-superblock 1

chunk-size 32

device /dev/hda5

raid-disk 0

device /dev/hdc5

raid-disk 1

在raidtab文件中,"raiddev" 條目指明要創建的 RAID 陣列;"nr-raid-disks"

指定陣列中的磁碟數目;"persistent-superblock" 設置為 1,告訴 raid 工具何時創建該卷;

"chunk-size" 以K位元組指定 RAID0 使用的塊大小;

最後,要指定的是組成該陣列的設備即分區。

創建文件系統使用命令"# mkraid /dev/md0" 命令初始化/dev/md0分區,同時將啟動md0 RAID0陣列。接下來,即可在md0上創建你想要得文件系統。我們在Linux伺服器上使用的是Reiserfs日誌文件系統,創建的命令為"# mkreiserfs /dev/md0"。

這樣,就可以像其它文件系統那樣來載入新創建的基於RAID0的文件系統了。

4 使用elvtune調諧磁碟I/O

在Linux內核2.4以後的版本中,可以通過磁碟I/O的調度操作,來控制磁碟I/O的響應時間和吞吐量。通過調整I/O請求在隊列中的最大等待時間,可以在響應時間和吞吐量之間調諧。如果要求較少的響應時間,那麼吞吐量將降低,反之,較長的響應時間則可以得到較大的吞吐量。可以使用工具"/sbin/elvtune"來改變最大的響應時間值。使用方法如下:

查看當前的設置

# /sbin/elvtune /dev/hda1

修改當前的配置

# /sbin/elvtune -r 2000 -w 4000 /dev/hda1

其中-r參數針對讀操作,-w參數針對寫操作.

可以通過命令"iostat -d -x

/dev/hda1"得到的平均信息(包括平均請求大小和平均隊列長度)來監視以上I/O配置的效果,並調整配置,以得到最佳的性能。一般來講,對於讀寫頻繁,但操作的數據量較少的Linux伺服器,且對實時性要求較高,那麼可以將參數調小。反之如果對於讀寫不頻繁,但要求具有較大的吞吐量的Linux伺服器,可以將參數調大,以獲得較大的吞吐量。

五、文件及文件系統調諧

1、塊大小

創建文件系統時,可以指定塊的大小。如果將來在你的文件系統中是一些比較大的文件的話,使用較大的塊大小將得到較好的性能。將ext2文件系統的塊大小調整為4096byte而不是預設的1024byte,可以減少文件碎片,加快fsck掃描的速度和文件刪除以及讀操作的速度。另外,在ext2的文件系統中,為根目錄保留了5%的空間,對一個大的文件系統,除非用作日誌文件,5%的比例有些過多。可以使用命令

# mke2fs -b 4096 -m 1 /dev/hda6

將它改為1%並以塊大小4096byte創建文件系統。

使用多大的塊大小,需要根據你的系統綜合考慮,如果系統用作郵件或者新聞伺服器,使用較大的塊大小,雖然性能有所提高,但會造成磁碟空間較大的浪費。比如文件系統中的文件平均大小為2145byte,如果使用4096byte的塊大小,平均每一個文件就會浪費1951byte空間。如果使用1024byte的塊大小,平均每一個文件會浪費927byte空間。在性能和磁碟的代價上如何平衡,要看具體應用的需要。

2 不使用atime屬性

當文件被創建,修改和訪問時,Linux系統會記錄這些時間信息。記錄文件最近一次被讀取的時間信息,當系統的讀文件操作頻繁時,將是一筆不少的開銷。所以,為了提高系統的性能,我們可以在讀取文件時不修改文件的atime屬性。可以通過在載入文件系統時使用notime選項來做到這一點。當以noatime選項載入(mount)文件系統時,對文件的讀取不會更新文件屬性中的atime信息。設置noatime的重要性是消除了文件系統對文件的寫操作,文件只是簡單地被系統讀取。由於寫操作相對讀來說要更消耗系統資源,所以這樣設置可以明顯提高伺服器的性能。注意wtime信息仍然有效,任何時候文件被寫,該信息仍被更新。

比如在你的系統中,要為/home文件系統設置notime選項,可以修改/etc/fstab文件相應的行如下:

LABEL=/home /home ext2 noatime 1 2

要使該設置立即生效,可運行命令"#mount -oremount /home"。這樣以後系統讀取/home下的文 件時將不會再修改atime屬性。

3 調整緩衝區刷新參數

Linux內核中,包含了一些對於系統運行態的可設置參數。緩衝刷新的參數可以通過調整 /proc/sys/vm/bdflush文件來完成,這個文件的格式是這樣的:

# cat /proc/sys/vm/bdflush

30 64 64 256 500 3000 60 0 0

每一欄是一個參數,其中最重要的是前面幾個參數。第一個數字是在"dirty"緩衝區達到多少的時候強制喚醒bdflush進程刷新硬碟,第二個數字是每次讓bdflush進程刷新多少個dirty塊。所謂dirty塊是必須寫到磁碟中的緩存塊。接下來的參數是每次允許bd flush將多少個內存塊排入空閑的緩衝塊列表。 以上值為RedHat Linux 7.1中的預設值。如何修改它們呢?對不同的系統有以下兩種方法

(1)# echo "100 128 128 512 5000 3000 60 0 0">/proc/sys/vm/bdflush

並將這條命令加到/etc/rc.d/rc.local文件中去。

(2)在/etc/sysctl.conf 文件中加入如下行: vm.bdflush = 100 128 128 512 5000 3000 60 0 0

以上的設置加大了緩衝區大小,降低了bdflush被啟動的頻度,同時也增加了萬一系統崩潰丟失數據的危險性。VFS的緩衝刷新是Linux文件系統高效的重要原因之一,如果性能對你真的很重要,應該考慮調整這個參數。

4 調整文件句柄數和i-節點數

在一個大型的網站伺服器其中,可能Linux默認的同時可打開最大文件數不能滿足系統需要,我們可以通過調整文件句柄數和i-節點數來增加系統的預設的限制。不同的Linux內核版本有不同的調整方法。

在Linux內核2.2.x中可以用如下命令修改:

# echo '8192' > /proc/sys/fs/file-max

# echo '32768' > /proc/sys/fs/inode-max

並將以上命令加到/etc/rc.c/rc.local文件中,以使系統每次重新啟動時配置以上值。

在Linux內核2.4.x中需要修改源代碼,然後重新編譯內核才生效。編輯Linux內核源代碼中的 include/linux/fs.h文件,將 NR_FILE

由8192改為 65536,將NR_RESERVED_FILES 由10 改為 128。編輯fs/inode.c 文件將 MAX_INODE

由16384改為262144。

一般情況下,最大打開文件數比較合理的設置為每4M物理內存256,比如256M內存可以設為16384,而最大的使用的i節點的數目應該是最大打開文件數目的3倍到4倍。

5 使用內存文件系統

在Linux中可以將一部分內存當作分區來使用,我們稱之為RamDisk。對於一些經常被訪問的文件,而它們又不會被更改,可以將它們通過RamDisk放在內存中,即可明顯地提高系統的性能。當然你的內存可要足夠大了。RamDisk有兩種,一種可以格式化,載入,在Linux內核2.0/2.2就已經支持,其不足之處是大小固定。另一種是內核2.4才支持的,通過Ramfs或者tmpfs來實現,它們不能被格式化,但是用起來靈活,其大小隨所需要的空間而增加或減少。這裡主要介紹一下Ramfs和Tmpfs。

Ramfs顧名思義是內存文件系統,它工作於虛擬文件系統(VFS)層。不能格式化,可以創建多個,在創建時可以指定其最大能使用的內存大小。如果你的Linux已經將Ramfs編譯進內核,你就可以很容易地使用Ramfs了。創建一個目錄,載入Ramfs到該目錄即可。

# mkdir -p /RAM1

# mount -t ramfs none /RAM1

預設情況下,Ramfs被限制最多可使用內存大小的一半。可以通過maxsize(以kbyte為單位)選項來改變。

# mkdir -p /RAM1

# mount -t ramfs none /RAM1 -o maxsize=10000

以上即創建了一個限定了最大使用內存大小為10M的ramdisk。

Tmpfs是一個虛擬內存文件系統,它不同於傳統的用塊設備形式來實現的ramdisk,也不同於針對物理內存的Ramfs。Tmpfs可以使用物理內存,也可以使用交換分區。在Linux內核中,虛擬內存資源由物理內存(RAM)和交換分區組成,這些資源是由內核中的虛擬內存子系統來負責分配和管理。Tmpfs就是和虛擬內存子系統來"打交道"的,它向虛擬內存子系統請求頁來存儲文件,它同Linux的其它請求頁的部分一樣,不知道分配給自己的頁是在內存中還是在交換分區中。Tmpfs同Ramfs一樣,其大小也不是固定的,而是隨著所需要的空間而動態的增減。使用tmpfs,首先你編譯內核時得選擇"虛擬內存文件系統支持(Virtual

memory filesystem support)" ,然後就可以載入tmpfs文件系統了。

# mkdir -p /mnt/tmpfs

# mount tmpfs /mnt/tmpfs -t tmpfs

為了防止tmpfs使用過多的內存資源而造成系統的性能下降或死機,可以在載入時指定tmpfs文件系統大小的最大限制。

# mount tmpfs /mnt/tmpfs -t tmpfs -o size=32m

以上創建的tmpfs文件系統就規定了其最大的大小為32M。不管是使用ramfs還是tmpfs,必須明白的是,一旦系統重啟,它們中的內容將會丟失。所以那些東西可以放在內存文件系統中得根據系統的具體情況而定。

6 使用日誌文件系統

如果Linux系統由於意外情況而沒有正常關機,則可能引起文件系統中某些文件的元數據(meta-data即和文件有關的信息,例如:許可權、所有者以及創建和訪問時間)遭到破壞。文件系統需要維護文件的元數據來保證文件的可組織和可存取,如果元數據處於不合理或不一致的狀態,那麼就不能訪問和存取文件。當系統重新啟動時,fsck將掃描/etc/fstab文件中所列出的所有文件系統,確保它們的元數據處於可用的狀態。如果發現元數據不一致,fsck將掃描和檢測元數據,並糾正錯誤。如果文件系統很大,這個過程將需要很長的時間。為解決這個問題,可以使用日誌文件系統。日誌文件系統用獨立的日誌文件跟蹤磁碟內容的變化,在寫入文件內容的同時寫入文件的元數據。每次修改文件的元數據時,都要先向稱為"日誌"的數據結構登記相應的條目。這樣,日誌文件系統就維護了最近更改的元數據的記錄。當載入日誌文件系統時,如果發現了錯誤,不會掃描整個文件系統的元數據,而是根據日誌檢查最近被更改的元數據。所以相對於傳統的文件系統(如ext2),日誌文件系統大大地加快了掃描和檢測的時間。

Linux下可用的日誌文件系統很多,如XFS,JFS,Reiserfs,ext3等等。日誌文件系統主要被設計為伺服器環境提供出色性能和高可用性。當然,

Linux 工作站和家用機器也可從具有高性能的可靠日誌文件系統中獲益。安裝日誌文件系統,一般需要下載相應的壓縮包、為內核打補丁、重新配置和重新編譯內核。

詳細的安裝過程可訪問相應文件系統的官方網站。

新版本的 Linux 都支持日誌文件系統,這類文件系統不僅提供文件完整性上快速恢復,在讀寫速度上也較普通的 ext2 文件系統有很大提升。

文件的最後存取時間,對很多人來說沒有任何用處,因此,我們可以關閉操作系統記錄文件最後存取時間的功能,修改: /etc/fstab :

把 dev/hda6 /home ext2 defaults 1 2

改為:

/dev/hda6 /home ext2 defaults,noatime 1 2

六、關閉多餘的虛擬控制台

我們知道從控制台切換到 X 窗口,一般採用 Alt-F7 ,為什麼呢?因為系統默認定義了 6 個虛擬控制台,所以 X

就成了第7個。實際上,很多人一般不會需要這麼多虛擬控制台的,修改

/etc/inittab ,註釋掉那些你不需要的。

# Run gettys in standard runlevels

1:2345:respawn:/sbin/mingetty tty1

2:2345:respawn:/sbin/mingetty tty2

3:2345:respawn:/sbin/mingetty tty3

#4:2345:respawn:/sbin/mingetty tty4

#5:2345:respawn:/sbin/mingetty tty5

#6:2345:respawn:/sbin/mingetty tty6

七、進程限制「ulimit」參數

Linux對於每個用戶,系統限制其最大進程數。可以在用戶根目錄下的「.bashrc」文件或者實際使用與「.bashrc」功能相當的shell的腳本中加入這種限制。為提高性能,可以設置超級用戶root的最大進程數為無限。編輯「.bashrc」文件(例如:vi

/root/.bashrc)並加入下面一行:

ulimit -u unlimited

然後退出,重新登錄。為了驗證,可以以root身份登錄,然後鍵入: 「ulimit ?a」,在最大用戶進程數一項中應該顯示「unlimited」,例如:

[root@deep]# ulimit -a

core file size (blocks) 1000000

data seg size (kbytes) unlimited

file size (blocks) unlimited

max memory size (kbytes) unlimited

stack size (kbytes) 8192

cpu time (seconds) unlimited

max user processes unlimited * this line.

pipe size (512 bytes) 8

open files 1024

virtual memory (kbytes) 2105343

注意:你可能更傾向於在命令行鍵入「unlimit

?u」而不是把它加入到文件「/root/.bashrc」中。但為保險起見,建議還是把它加入文件「/root/.bashrc」中。

一些更改用戶限制的例子如下:

ulimit -n 4096 將每個進程可以打開的文件數目加大到4096,預設為1024

ulimit -m 4096 限制每個進程使用的內存數。

八、其它方面的優化

1 調諧buffermem

文件buffermen和內核虛擬內存子系統密切相關。文件/proc/sys/vm/buffermem控制多大內存被用於緩衝區(百分數表示)。內核2.4的預設值為::

"2 10 60"。可以按如下方法修改:

# echo "70 10 60" >/proc/sys/vm/buffermem

並將之加到腳本文件/etc/rc.d/rc.local 中。或者在/etc/sysctl.conf文件中加入

vm.buffermem = 70 10 60

第一個參數

70意味著至少分配70%的內存用作緩衝區。后兩個參數保持系統的默認值。第一個參數設置為多大合適,依賴於系統的內存大小和系統高負載時內存的使用情況(可用free監視)。

2 關閉X 相關的軟體

除非有必要否則不要安裝圖形界面,如果安裝了把機器啟動后的預設界面為 Console :

修改: /etc/inittab 把

id:5:initdefault:

修改為:

id:3:initdefault:

結論:

系統優化的哲學可以簡單的歸結為四個字:「少就是多」;只運行那些你需要的服務,使用正確的應用來完成任務,使用命令行方式,只有充分精簡了你的系統后,你的系統性能才能充分發揮。Linux是一個靈活而又開放的系統。用戶可以針對具體的應用環境,從系統的外圍到系統的

內核進行調諧。系統的外圍的調諧包括系統硬體的配置到系統安裝和系統服務的優化等。系統內核的調諧包括參數的修改和改進系統的源代碼。我們除了針對系統內外的調諧之外,還應該針對不同的應用進行調諧,比如我們在針對用作mysql資料庫伺服器的Linux系統的調諧中,針對mysql資料庫的特點,按照本文的各個調諧方面外,另外還包括網路的調諧,對應用系統性能進行了綜合調諧等。同樣針對不同應用要做不同的調整,比如apache,oracle,mysql,informix等等。

[火星人 ] Linux通用系統優化已經有701次圍觀

http://coctec.com/docs/linux/show-post-133525.html