Centos5.5最小化安裝後的優化

購買了服務器(現在主流配置都是雙四核),下一步就要安裝系統了。這裏推薦用64位的CentOS 5.5,安裝系統時我們要選擇最小化安裝(不要圖形)。大家在用服務器時要記得一個原則,系統的安裝包越少越好,這樣機器纔會更穩定。前面已經介紹過線上服務器的分區流程,如果遇到對磁盤I/O調用頻繁的服務(例如MySQL),我們可以單獨拿一個分區(如/data)出來,不要跟/裝在一起,避免/分區被頻繁調用,出現I/O瓶頸。至於單服務器的性能調優,本着穩定安全的原則,儘量不要改動系統原有的配置(CentOS自身的文件和內存機制就很優秀),尤其是線上環境,穩定性要放在第一位來考慮。
1?關閉不需要的服務
衆所周知,服務越少,系統佔用的資源也會越少,所以應關閉不需要的服務。這樣做的好處是減少內存和CPU時間的佔用。命令如下所示:
 
# ntsysv
下面列出需要啓動的服務,未列出的服務一律關閉。
crond
 
Linux下的時間計劃任務服務。
irqbalance
 
啓用irqbalance服務,既可以提升性能,又可以降低能耗。irqbalance用於優化中斷分配,它會自動收集系統數據以分析使用模式,並依據系統負載狀況將工作置於Performance mode或Power?save mode狀態。處於Performance mode時,irqbalance會將中斷儘可能均勻地分發給各個CPU core,以充分利用CPU的多核,提升性能。處於Power?save mode時,irqbalance會將中斷集中分配給第一個CPU,以保證其他空閒CPU的睡眠時間,降低能耗。現在的主流服務器都是雙四核,所以這項我建議保留。
network
sshd
syslog
 
這是Linux的日誌系統,必須要啓動,否則機器出現問題時會找不到原因。
再說一下兩個比較特殊的服務,它們是iptables和SELinux。因爲網站和系統之前均有硬件防火牆,如果沒有特殊需求的話,均可選擇關閉。要關閉它們可以在命令setup下操作,也可以使用命令行操作。
關閉iptables的代碼如下:
 
service iptables stop && chkconfig iptables off
關閉SELinux的方法如下:
 
vim /etc/selinux/config
然後將文件中的selinux=""改爲disabled,並重啓。如果不想重啓系統,使用命令setenforce 0,此命令可以暫時關閉SELinux,重啓後失效。
 
 
 
說明setenforce 1將SELinux設置成爲enforcing模式;setenforce 0將SELinux設置成爲permissive模式。
 
 
另外,在lilo或grub的啓動參數中增加:selinux=0,這樣也可以關閉SELinux。
2?關閉不需要的tty
先編輯/etc/inittab,找到如下一段命令:
 
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
這段命令會使init爲你打開了6個控制檯,分別可以用[Alt+F1]到[Alt+F6]進行訪問。此6個控制檯默認都駐留在內存中,用ps ?aux這個命令就可以看到,這是6個進程,如下所示:
 
 [root@localhost ~]# ps -aux| grep tty
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ
root32190.00.0 3792 488 tty1 Ss+Mar16 0:00 /sbin/mingetty tty1
root32200.00.0 3792 484 tty2 Ss+Mar16 0:00 /sbin/mingetty tty2
root32210.00.0 3792 488 tty3 Ss+Mar16 0:00 /sbin/mingetty tty3
root32220.00.0 3792 488 tty4 Ss+Mar16 0:00 /sbin/mingetty tty4
root32240.00.0 3792 488 tty5 Ss+Mar16 0:00 /sbin/mingetty tty5
root32260.00.0 3792 488 tty6 Ss+Mar16 0:00 /sbin/mingetty tty6
root33250.00.1905486264 tty7 Ss+Mar16 0:01 /usr/bin/Xorg :0 -br -audit 0 -auth /var/gdm/:0.Xauth -nolisten tcp vt7
root67670.00.0682841564 tty8 Ss+Mar17 0:00 /bin/bash
root 311790.00.063372 756 pts/2S+ 17:03 0:00 grep tty
事實上沒有必要使用這麼多。應如何關閉不需要的進程呢?通常我們保留前兩個控制檯就可以了,把後面4個用#註釋掉,並且無需重啓,只需要執行init q這個命令即可,如下所示:
 
init q
3?對TCP/IP網絡參數進行調整
調整TCP/IP網絡參數,可以增強抗SYN Flood的能力,命令如下所示:
 
# echo 'net.ipv4.tcp_syncookies = 1' >> /etc/sysctl.conf
# sysctl -p
操作前建議用sysctl ?a>sysctl ?file保存下當前配置。
 
4?修改shell命令的history記錄個數
修改history記錄的命令如下所示:
 
# vi /etc/profile
找到histsize=1000,將其改爲histsize=100(這條可根據實際情況而定)。
不重啓系統就可讓其生效,如下所示:
 
source /etc/profile
5?定時校正服務器的時間
我們可以定時校正服務器的時間,命令如下所示:
 
# yum install ntp
# crontab -e
加入如下一行:
 
*/5 * * * * ntpdate ntp.api.bz
#ntp?api?bz是一組NTP服務器集羣,目前有6臺服務器。這項服務是api?bz繼http://sms?api?bz移動飛信免費短信發送接口之後的第二項免費API服務。
6?停止打印服務
如果不準備提供打印服務,可停止默認設置爲自動啓動的打印服務,命令如下所示:
 
[root@sample ~]#/etc/rc.d/init.d/cups stop← 停止打印服務Stopping cups:  [OK] ← 停止服務成功,出現“OK”
[root@sample ~]#chkconfig cups off← 禁止打印服務自動啓動
[root@sample ~]#chkconfig -list cups← 確認打印服務自啓動設置狀態
cups0:off 1:off 2:off 3:off 4:off 5:off 6:off←0~6都爲off的狀態就OK(當前打印服務自啓動被禁止)
7?調整Linux的最大文件打開數
要調整一下Linux的最大文件打開數,否則squid在高負載時執行性能將會很低。另外,在Linux下面部署應用時,有時候會遇上Socket/File:Can’t open so many files這樣的問題,這個值也會影響服務器的最大併發數。其實Linux是有文件句柄限制的,但默認不是很高,一般是1024,生產服務器很容易就會達到這個值,所以需要改動此值。剛開始我採用vim /etc/security/limit?conf命令,在最後一行添加如下代碼:
 
* soft nofile 60000
* hard nofile 65535
但重啓後一切都還原了。
正解做法應該爲在CentOS 5.5的/etc/rc?local文件裏添加如下命令行:
 
ulimit -SHn 65535
當然了,我們也可以在Nginx的一些監控腳本里實時添加此命令行,達到重啓也能生效的目的。
另外,ulimit ?n命令並不能真正看到文件的最大文件打開數,大家可用如下腳本查看:
 
#!/bin/bash
for pid in 'ps aux |grep nginx |grep -v grep|awk '{print$2}''
do
cat /proc/${pid}/limits |grep 'Max open files'
done
8?啓動網卡
大家配置CentOS 5.5的網卡時,容易忽略的一項就是Linux啓動時未啓動網卡,其後果很明顯,那就是你的Linux機器永遠也沒有IP地址,下面是一臺線上服務器的配置:
 
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
# Intel Corporation 82541GI Gigabit Ethernet Controller
DEVICE=eth0
BOOTPROTO=none
HWADDR=00:14:22:1B:71:20
IPV6INIT=yes
IPV6_AUTOCONF=yes
ONBOOT=yes→此項一定要記得爲yes,它會在系統引導就啓動你的網卡設備
NETMASK=255.255.255.192
IPADDR=203.93.236.146
GATEWAY=203.93.236.129
TYPE=Ethernet
PEERDNS=yes→允許從DHCP處獲得的DNS覆蓋本地的DNS
USERCTL=no~→不允許普通用戶修改網卡
9?關閉CentOS 5.5的寫磁盤I/O功能
一個Linux文件默認有3個時間。
atime:對此文件的訪問時間。
ctime:此文件inode發生變化的時間。
mtime:此文件的修改時間。
如果有多個小文件(比如Web服務器的頁面上有多個小圖片),通常就沒有必要記錄文件的訪問時間了,這樣可以減少寫磁盤的I/O。這要如何配置呢?
首先,修改文件系統的配置文件:vim/etc/fstab。然後,在包含大量小文件的分區中使用noatime和nodiratime這兩個命令。例如:
 
/dev/sda5 /data/pics ext3 noatime,nodiratime 0 0
這樣文件被訪問時就不會再產生寫磁盤的I/O了,此方法尤其適合讀寫頻繁的數據庫系統
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章