天天看點

關于linux系統調優

背景:最近要寫一部分關于linux調優的文檔,此處隻列出一些常用調優選項,随時備查。參考了南非螞蟻的文檔。

1、關注ulimit指令

ulimit –n(最大打開檔案數)

常見案例日志:java.net.SocketException: Too many openfiles

相關配置檔案:

/etc/security/limits.conf

/etc/security/limits.d/90-nproc.conf(centos6.x版本)

*        soft    nofile         65536

*        hard    nofile         65536

ulimit  -u(最大使用者數)

*         soft    nproc     65536

root      soft    nproc     unlimited

soft nproc:     單個使用者可用的最大程序數量(軟限制)

hard nproc:   單個使用者可用的最大程序數量(硬限制)

soft nofile:        可打開的檔案描述符的最大數(軟限制)

hard nofile:       可打開的檔案描述符的最大數(硬限制)

man limits.conf

         nofile

              maximum number of open files

          nproc

              maximum number of processes

2、系統核心參數調優

常見案例日志:kernel: ip_conntrack: table full, droppingpacket

ip_conntrack_max參數

/proc/sys/net/ipv4/netfilter/ip_conntrack_max  或者

/proc/sys/net/ipv4/ip_conntrack_max (centos5.x)

/proc/sys/net/netfilter/nf_conntrack_max(centos6.x)

在/etc/sysctl.conf加入

net.ipv4.netfilter.ip_conntrack_max = 655360(centos5.x)

net.nf_conntrack_max = 100000(centos6.x)

swappiness參數

表示使用swap的機率,此值越大,表示使用swap的機率越大。推薦配置如下:

檢視目前配置:cat /proc/sys/vm/swappiness

添加如下内容到/etc/sysctl.conf

vm.swappiness=10

表示當記憶體使用率超過(100-10)90%時,才開始使用swap。

使配置檔案生效

sysctl -p

我們線上web伺服器配置參考(每天3億的量)

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_fin_timeout = 10

net.ipv4.tcp_max_syn_backlog = 20000

net.core.netdev_max_backlog = 32768

net.core.somaxconn = 32768

net.core.wmem_default = 8388608

net.core.rmem_default = 8388608

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

net.ipv4.tcp_timestamps = 0

net.ipv4.tcp_synack_retries = 2

net.ipv4.tcp_syn_retries = 2

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_mem = 94500000 915000000 927000000

net.ipv4.tcp_max_orphans = 3276800

net.ipv4.tcp_keepalive_time = 120

net.ipv4.ip_local_port_range = 1024 65535

net.ipv4.tcp_max_tw_buckets = 80000

net.ipv4.tcp_keepalive_intvl = 15

net.ipv4.tcp_keepalive_probes = 5

net.ipv4.tcp_max_tw_buckets = 500000

net.ipv4.tcp_keepalive_time = 60

net.nf_conntrack_max = 2097152

3.精簡系統服務和開機程序

原則:隻開啟需要的。

線上伺服器建議開啟的服務

crond,network,syslog,sshd、iptables、udev-post、sysstat

快捷開啟方法:

先關閉所有

for serv in `chkconfig --list|grep 3:on|awk '{print $1}'`;do chkconfig--level 3 $serv off;done

然後開啟需要的服務:

for serv in `crond network syslog sshd iptables udev-post sysstat`;dochkconfig --level 3 $serv on;done

4、可删除的系統使用者群組

#删除不必要的使用者

userdel adm

userdel lp

userdel sync

userdel shutdown

userdel halt

userdel news

userdel uucp

userdel video

userdel games

userdel gopher

userdel ftp

#删除不必要的群組

groupdel adm

groupdel lp

groupdel news

groupdel uucp

groupdel games

groupdel dip

也可以直接用for循環來删除.

for i in adm lp sync shutdown halt news uucp video games gopher ftp; do userdel $i;done

for i in adm lp sync shutdown halt news uucp video games gopher ftp; do groupdel $i;done

5.Linux下性能評估工具彙總

Cpu:  vmstat、  iostat、 uptime

  Vmstat 2 3

每2秒更新一次cpu輸出資訊,輸出3次。

  Iostat–c 2 3 (需要安裝sysstat包,參數-c顯示CPU狀态, -d顯示磁盤使用狀态)

  Uptime

系統現在時間、上次開機到現在運作多長時間、目前登入使用者數、系統在1,5,15分鐘内的平均負載.

記憶體: free、sar/pidstat

Free –m

以M為機關顯示目前記憶體的使用狀況。

sar/pidstat(它們有三個公用參數: -u 顯示cpu資訊; -r顯示記憶體資訊;-d顯示磁盤資訊)

sar –u  3  5

輸出cpu 3秒内的狀态,輸出5次.

Pidstat –r –p 1 3 5

輸出程序号是1的記憶體3秒内的狀态,輸出5次.

磁盤: iostat 、 pidstat、sar

Iostat  -d 2 3

每2秒更新一次磁盤輸出資訊,輸出3次。

Pidstat –d –p 556 3 5

輸出程序号是556的磁盤3秒内的狀态,輸出5次.

Sar –d 3 5

輸出磁盤3秒内的狀态,輸出5次.

網絡:ping  、 netstat 、mtr/traceroute(yum install mtr traceroute包)、dig、nslookup

系統性能的一個參考表

關于linux系統調優

 6. 檔案系統的選擇

Ext2:linux下标準的檔案系統,無日志記錄(inode)功能。

Ext3:在ext2的基礎上增加了日志記錄功能(inode),僅支援32000個子目錄.

Ext4:ext3的後續更新版本,核心2.6.28開始支援,無限子目錄支援,快速fsck

Xfs: 高性能的檔案系統,核心3.10開始預設支援。

建議:讀操作頻繁,小檔案衆多,首選ext4,接下來是xfs,ext3.

寫操作頻繁,首選xfs,接下來是ext4,ext3.

對性能要求不高,對資料安全要求不高的業務,ext3可以選擇。

繼續閱讀