官术网_书友最值得收藏!

1.4.1 系統的基礎優化

1.更新yum官方源

CentOS 6.4系統自帶的更新源速度比較慢,想必各位都有所感受,國內的速度慢得讓人受不了。為了讓CentOS 6.4系統使用速度更快的yum更新源,一般做運維的都會選擇更換源,筆者一般會選擇網易的更新源,詳細步驟如下所示。

1)下載repo文件,命令如下:

wget http://mirrors.163.com/.help/CentOS6-Base-163.repo

2)備份并替換系統的repo文件,命令如下:

cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak
mv CentOS6-Base-163.repo CentOS-Base.repo

3)執行yum源更新,命令如下:

yum clean all #清除yum緩存
yum makecache #重建緩存
yum update #升級Linux系統

增加epel源,詳細步驟如下所示。

1)下載rpm文件并進行安裝,命令如下:

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm

2)安裝yum-priorities源優先級工具,命令如下:

yum install yum-priorities

yum-priorities源優先級工具是yum-plugin-priroites插件,用于給yum源劃分優先級。比如說系統存在官方源、epel、puppetlabs3個yum源,這3個yum源中可能含有相同的軟件,yum管理器會應用該工具來分辨安裝軟件時采用哪個yum源的軟件。

如果說,設置官方的yum源優先級最高,epel yum源第二,puppetlabs第三(用1到99來表示,1最高),那么在安裝程序的時候,就會先尋找官方的yum源。如果該源里面有所要的程序,那就停止尋找,直接安裝找到的;如果沒有找到,則依次尋找epel和puppetlabs的源。如果說3個yum源都含有同一個軟件,那就安裝優先級最高的官方yum源的。添加優先級的過程比較簡單,只需要編輯對應的repo文件,在文件最后添加如下內容即可:

priority=對應優先級數字

注意,要想開啟yum源的優先級功能,就要先確保priorities.conf文件里面有如下內容,需要先打開此文件,打開文件的命令如下:

vim /etc/yum/pluginconf.d/priorities.conf

確保文件里面包含如下內容:

[main]
enabled=1

2.關閉不需要的服務

眾所周知,服務越少,系統占用的資源就會越少,所以應當關閉不需要的服務。建議把不需要的服務關閉掉,這樣做的好處是減少內存和CPU資源占用。首先可以看下系統中存在著哪些已經啟動了的服務,查看命令如下:

ntsysv

下面列出的是需要啟動的服務,未列出的服務一律關閉。

·crond:自動計劃任務。

·network:Linux系統的網絡服務,很重要,若不開啟此服務的話,服務器就不能聯網。

·sshd:OpenSSH服務器守護進程。

·rsyslog:Linux的日志系統服務(CentOS 5.8下此服務名稱為syslog),必須要啟動。

3.關閉不需要的TTY

可用vim編輯器打開vim/etc/init/start-ttys.conf文件,文件內容如下所示:

start on stopped rc RUNLEVEL=[2345]
env ACTIVE_CONSOLES=/dev/tty[1-6]
env X_TTY=/dev/tty1
task
script
        . /etc/sysconfig/init
        for tty in $(echo $ACTIVE_CONSOLES) ; do
                [ "$RUNLEVEL" = "5" -a "$tty" = "$X_TTY" ] && continue
                initctl start tty TTY=$tty
        done
end script

這段代碼使init打開了6個控制臺,可分別用ALT+F1到ALT+F6進行訪問。此6個控制臺默認都駐留在內存中,用ps aux命令即可看到,命令如下:

ps aux | grep tty | grpe -v grep

命令顯示結果如下所示:

root       1011  0.0  0.1   4060   288 tty1      Ss+  Nov25   0:00 /sbin/mingetty /dev/tty1
root      1013  0.0  0.1   4060   292 tty2     Ss+  Nov25   0:00 /sbin/mingetty /dev/tty2
root      1015  0.0  0.1   4060   292 tty3     Ss+  Nov25   0:00 /sbin/mingetty /dev/tty3
root      1017  0.0  0.1   4060   288 tty4     Ss+  Nov25   0:00 /sbin/mingetty /dev/tty4
root      1019  0.0  0.1   4060   288 tty5     Ss+  Nov25   0:00 /sbin/mingetty /dev/tty5
root      1021  0.0  0.1   4060   292 tty6     Ss+  Nov25   0:00 /sbin/mingetty /dev/tty6
root      7467  0.0  0.1   4072   340 hvc0     Ss+  Nov29   0:00 /sbin/agetty /dev/hvc0 
    38400 vt100-nav

事實上沒有必要使用這么多,那如何關閉不需要的進程呢?

通常保留兩個控制臺就可以了,打開/etc/init/start-ttys.conf文件,注意以下代碼內容:

env ACTIVE_CONSOLES=/dev/tty[1-6]

將[1-6]修改為[1-2],然后再打開/etc/sysconfig/init文件,注意以下代碼內容:

ACTIVE_CONSOLES=/dev/tty[1-6]

將[1-6]修改為[1-2],然后重啟機器即可。

4.對TCP/IP網絡參數進行調整

調整TCP/IP網絡參數,可以加強對抗SYN Flood的能力,命令如下:

echo 'net.ipv4.tcp_syncookies = 1' >> /etc/sysctl.conf
sysctl -p

5.修改SHELL命令的history記錄個數

用vim編輯器打開/etc/profile文件,關注HISTSIZE=1000:

vi /etc/profile

在找到HISTSIZE=1000后,將其改為HISTSIZE=100(這條可根據實際工作環境而定)。

不需要重啟系統也可讓其生效,命令如下:

source /etc/profile

6.定時校正服務器的時間

我們可以定時校正服務器的時間,命令如下:

yum install ntp
crontab -e

加入一行:

*/5 * * * * /usr/sbin/ntpdate ntp.api.bz

ntp.api.bz是一組NTP服務器集群,之前是6臺服務器,位于上海電信;現在是3臺服務器,分散于上海和浙江電信,可以用dig命令查看:

dig ntp.api.bz

命令顯示結果如下所示:

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.5 <<>> ntp.api.bz
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48560
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;ntp.api.bz.               IN     A
;; ANSWER SECTION:
ntp.api.bz.          600     IN     A     61.153.197.226
ntp.api.bz.          600     IN     A     218.75.4.130
ntp.api.bz.          600     IN     A     114.80.81.1
;; Query time: 10 msec
;; SERVER: 202.103.24.68#53(202.103.24.68)
;; WHEN: Thu Dec 24 06:58:36 2015
;; MSG SIZE  rcvd: 76

7.停止IPv6網絡服務

在CentOS 6.4默認的狀態下,IPv6是被啟用的,可用如下命令查看:

lsmod | grep ipv6

命令顯示結果如下:

nf_conntrack_ipv6       8748  2 
nf_defrag_ipv6         11182  1 nf_conntrack_ipv6
nf_conntrack           79357  2 nf_conntrack_ipv6,xt_state
ipv6                  321422  23 ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6

有些網絡和應用程序還不支持IPv6,因此,禁用IPv6可以說是一個非常好的選擇,以加強系統的安全性,并提高系統的整體性能。不過,首先要確認一下IPv6是不是處于被啟動的狀態,命令如下:

ifconfig -a← 列出全部網絡接口信息

命令顯示結果如下所示:

eth0      Link encap:Ethernet  HWaddr 00:16:3E:7F:67:C3  
          inet addr:192.168.1.207  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::216:3eff:fe7f:67c3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:405835 errors:0 dropped:0 overruns:0 frame:0
          TX packets:197486 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:327950786 (312.7 MiB)  TX bytes:17186162 (16.3 MiB)
          Interrupt:24 
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

然后修改相應的配置文件,停止IPv6,命令如下:

echo "install ipv6 /bin/true" > /etc/modprobe.d/disable-ipv6.conf
#每當系統需要加載IPv6模塊時,強制執行/bin/true來代替實際加載的模塊
echo "IPV6INIT=no" >> /etc/sysconfig/network-scripts/ifcfg-eth0
#禁用基于IPv6網絡,使之不會被觸發啟動

8.調整Linux的最大文件打開數

要調整一下Linux的最大文件打開數,否則運行Squid服務的機器在高負載時執行性能將會很差;另外,在Linux下部署應用時,有時候會遇上“Too many open files”這樣的問題,這個值也會影響服務器的最大并發數。其實Linux是有文件句柄限制的,但默認值不是很高,一般是1024,生產服務器很容易就會達到這個值,所以需要改動此值。

下面打開/etc/security/limit.conf命令,在最后一行添加如下命令:

* soft nofile 65535
* hard nofile 65535

正解的做法應該是除了以上步驟之外,還要在系統的/etc/rc.local文件里添加如下內容:

ulimit -SHn 65535

另外,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

在線上環境找一臺cms業務機器,執行此腳本,顯示結果如下所示:

Max open files            65535                65535                files     
Max open files            65535                65535                files     
Max open files            65535                65535                files     
Max open files            65535                65535                files     
Max open files            65535                65535                files     
Max open files            65535                65535                files     
Max open files            65535                65535                files     
Max open files            65535                65535                files     
Max open files            65535                65535                files     
Max open files            65535                65535                files  

9.啟動網卡

在配置CentOS 6.4的網卡IP地址時,容易忽略的一項是Linux在啟動時未啟動網卡,其后果很明顯,那就是該Linux機器永遠也沒有IP地址。下面是一臺線上環境服務器網卡/etc/sysconfig/network-scripts/ifcfg-eth0文件的配置內容:

DEVICE=eth0
BOOTPROTO=static
HWADDR=00:14:22:1B:71:20
IPV6INIT=no
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    -->不允許普通用戶修改網卡

10.關閉寫磁盤I/O功能

Linux文件默認有3個時間,分別如下所示。

·atime:對此文件的訪問時間。

·ctime:此文件inode發生變化的時間。

·mtime:此文件的修改時間。

如果有多個小文件(比如Web服務器的頁面上有多個小圖片),通常是沒有必要記錄文件的訪問時間的,這樣就可以減少寫磁盤的I/O,可這要如何配置呢?

首先,修改文件系統的配置文件/etc/fstab,然后,在包含大量小文件的分區中使用noatime和nodiratime這兩個命令。例如:

/dev/sda5 /data/pics ext3 noatime,nodiratime 0 0

這樣文件被訪問時就不會再產生寫磁盤的I/O了。

11.修改SSH登錄配置

SSH服務配置優化,請保持機器中至少包含一個具有sudo權限的用戶,下面的配置會禁止root遠程登錄,代碼內容如下所示:

sed -i 's@#PermitRootLogin yes@PermitRootLogin no@' /etc/ssh/sshd_config #禁止root遠程登錄
sed -i 's@#PermitEmptyPasswords no@PermitEmptyPasswords no@' /etc/ssh/sshd_config       #禁止空密碼登錄
sed -i 's@#UseDNS yes@UseDNS no@' /etc/ssh/sshd_config /etc/ssh/sshd_config #關閉      SSH反向查詢,以加快SSH的訪問速度

12.增加具有sudo權限的用戶

添加用戶的步驟和過程比較簡單(這里略過),由于系統已經禁止了root遠程登錄,因此需要一個具有sudo權限的admin用戶,權限跟root相當,這里用vim命令,在打開的/etc/sudoers文件內容里添加如下內容:

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL

然后添加如下內容:

admin   ALL=(ALL)       ALL

如果在進行sudo切換時不想輸入密碼,可以做如下更改:

admin  ALL=(ALL) NOPASSWD:ALL
主站蜘蛛池模板: 祁连县| 青浦区| 谢通门县| 汝南县| 奈曼旗| 兴化市| 徐汇区| 镇巴县| 石柱| 喀喇沁旗| 基隆市| 陵川县| 罗田县| 河间市| 井陉县| 兰州市| 云南省| 鄄城县| 龙江县| 酒泉市| 垫江县| 金溪县| 平山县| 大田县| 山阳县| 雅安市| 阜宁县| 大关县| 呼伦贝尔市| 铁岭市| 和硕县| 万安县| 平利县| 靖宇县| 延吉市| 株洲县| 平顺县| 公安县| 贵阳市| 姚安县| 柞水县|