linux系统优化 之shell篇

      本次整理了一些linux 系统方面的优化内容和大家分享,内包含 daemons优化、 安全优化、内核参数、 内存优化 、磁盘优化 、网络子系统的调优 、针对TCP和UDP的调优等方面的内容。

       文档内容按照shell脚本格式编写,可以copy 内容改为脚本格式直接运行。能力有限,如有不妥之处,请各位好朋友们指点。

#!/bin/sh
###############################################################################################################################
#Linux 性能调优
#by kangjianhua
#date:20120208


#################################################################################################################################
#1 关闭daemons

#有些运行在服务器中的daemons (后台服务),并不是完全必要的。关闭这些daemons 可释
#放更多的内存、减少启动时间并减少CPU 处理的进程数。减少daemons 数量的同时也增强
#了服务器的安全性。缺省情况下,多数服务器都可以安全地停掉几个daemons

#xfs daemon
#/sbin/service xfs stop
#/sbin/chkconfig xfs off
#X 窗口字体服务

#注意:关闭xfs daemon 将导致不能启动X,因此只有在不需要启动GUI 图形的时候才可以
#关闭xfs daemon。使用startx 命令前,开启xfs daemon,恢复正常启动X。

 

#高级电源管理
/sbin/service apmd stop
/sbin/chkconfig apmd off


#自动挂载CD-ROM文件系统
/sbin/service autofs stop
/sbin/chkconfig autofs off

#unix系统命令支持

/sbin/service cpus stop
/sbin/chkconfig cpus off


#HP 办公系统支持
/sbin/service hpoj stop
/sbin/chkconfig hpoj off


#ISDN modem 支持
/sbin/service isdn stop
/sbin/chkconfig isdn off


#used in support of exporting NFS shares

/sbin/service netfs stop
/sbin/chkconfig netfs off

 

#used in support of exporting NFS shares
/sbin/service nfslock stop
/sbin/chkconfig nfslock off


#PCMCIA 服务支持
/sbin/service pcmcia stop
/sbin/chkconfig pcmcia off

#Dynamic port assignment for RPC services
/sbin/service portmap stop
/sbin/chkconfig portmap off

 

#红帽网络升级服务检查
/sbin/service rhnsd stop
/sbin/chkconfig rhnsd off

 

#mail transport Agent
/sbin/service sendmail stop
/sbin/chkconfig sendmail off


######################################################################################################################################


#2 关闭GUI

#修改文件/etc/inittab
#id:3:initdefault:
#注释掉ca::ctrlaltdel;/sbin/shutdown –t3 –r now(禁止热启动)


#####################################################################################################################################


# 3 改变内核参数

#Red Hat 也提供了图形界面下更改sysctl 参数的方式:
#输入 /usr/bin/redhat-config-proc


#net.ipv4.inet_peer_gc_maxtime   在较低的内存压力下garbage  collector(gc)忽略存储内存池的频率,默认值是120
sysctl -w  net.ipv4.inet_peer_gc_maxtime=240


#net.ipv4.inet_peer_gc_mintime   设置garbage  collector可以清除内存的最小时间,如果你的服务器负载比较重,
#可以尝试增加这个值,默认值是10
sysctl -w net.ipv4.inet_peer_gc_mintime=80


#net.ipv4.inet_peer_maxttl      Inet入口的最大存活时间,在这个时间之后新入口将过期,默认值是600
sysctl -w net.ipv4.inet_peer_maxttl=500


#net.ipv4.inet_peer_minttl       Inet入口的最小存活时间,这个时间必须比net.ipv4.inet_peer_threshold参数小,默认值是120
sysctl -w net.ipv4.inet_peer_minttl=80


#net.ipv4.inet_peer_threshold    设定inet的存储容量,当这个限制达到后,入口将被丢掉,
#使用net.ipv4.inet_peer_gc_mintime限制超时限制,默认值是65644
sysctl -w net.ipv4.inet_peer_threshold=65644


#vm.hugetlb_pool        通常在使用Oracle或者DB2等数据库时会用到这个值,默认值是0
#sysctl -w vm.hugetlb_pool = 4608


#vm.inactive_clean_percent      指定应该被清除的非活动内存的百分比,默认值是5%
#sysctl -w vm.inactive_clean_percent = 30


#vm.pagecache   指定多少内存应该被用为页面缓存,这个参数对Oracle和DB2等数据库来说是很重要的,默认值是1 15  100。
#参数的三个值的含义:
#·做为页面缓存的最小内存百分比,默认是1%
#·缓存的初始化数量,默认是15%
#·做为页面缓存的最大内存百分比,默认是100%
sysctl -w vm.pagecache="1  50 100"


#kernel.panic_on_oops   启用内核对crash进程的检测和处理,kernel.panic参数必须设为1。该参数默认值为1(启用)
sysctl -w kernel.panic_on_oops=0


#kernel.pid_max 可以分配的最大的PID,默认值是32768
#sysctl -w kernel.pid_max=65536


#net.ipv4.tcp_tw_recycle 主要的tcp连接状态有ESTABLISHED,TIME_WAIT和CLOSED,这个参数可以快速的再生TIME_WAIT连接,默认是0(禁用)
sysctl -w net.ipv4.tcp_tw_recycle=0


#vm.overcommit_ratio    允许过载使用的内存百分比,默认是50%。
sysctl  -w vm.overcommit_ratio=17


###############################################################################################################################################

#4 内存优化

#内存一般以每页4k字节分配。最小内存空白页设置是系统中内存数量的2倍;最低内存空白页设置是内存数量的4倍;
#最高内存空白页设置是系统内存的6倍。这些值在系统启动时决定。
#一般来讲在配置系统分配的虚拟内存配置上,我个人认为增大最高内存空白页是一种比较好的配置方式,以2G的内存配置为例:

echo "4096 8192 16384" > /proc/sys/vm/min_free_kbytes

# 配置kswapd daemon,指定Linux 的内存交换页数量

#sysctl -w vm.kswapd="1024 32 64"

#三个参数的描述如下:
#1 tries_base 相当于内核每次所交换的“页”的数量的四倍。对于有很多交换信息的系统,增加这个值可以改进性能。
#2 tries_min 是每次kswapd swaps 出去的pages 的最小数量。
#3 swap_cluster 是kswapd 即刻写如的pages 数量。数值小,会提高磁盘I/O 的性能;数值大可能也会对请求队列产生负面影响。
#如果要对这些参数进行改动,请使用工具vmstat 检查对性能的影响。


################################################################################################################################

#5 磁盘调优

# 配置Linux 内核如何更新dirty buffers 到磁盘。

#sysctl -w vm.bdflush = "30 500 0 0 500 3000 60 20 0"


#磁盘缓冲区用于暂存磁盘的数据
#vm.bdflush 有9 个参数,但是建议您只改变其中的3 个:

#1 nfract, 为排队写入磁盘前,bdflush daemon 允许的缓冲区最大百分比
#2 ndirty, 为bdflush 即刻写的最大缓冲区的值。如果这个值很大,bdflush 需要更多的时间完成磁盘的数据更新。
#7 nfract_sync, 发生同步前,缓冲区变dirty 的最大百分比。

 


####################################################################################################################################
#6网络子系统的调优


#开启TCP SYN cookies,保护服务器避免受syn-flood 攻击,包括服务取决denial-of-service (DoS) 或者分布式服务拒绝distributed denial-of-service (DDoS) (仅适用Red Hat Enterprise Linux AS)

sysctl -w net.ipv4.tcp_syncookies=1

#以下命令使服务器忽略来自被列入网关的服务器的重定向。因重定向可以被用来进行攻击,所以我们只接受有可靠来源的重定向。


sysctl -w net.ipv4.conf.eth0.secure_redirects=1
sysctl -w net.ipv4.conf.lo.secure_redirects=1
sysctl -w net.ipv4.conf.default.secure_redirects=1
sysctl -w net.ipv4.conf.all..secure_redirects=1

sysctl -w net.ipv4.conf.eth0.send_redirects=0
sysctl -w net.ipv4.conf.lo.send_redirects=0
sysctl -w net.ipv4.conf.default.send_redirects=0
sysctl -w net.ipv4.conf.all..send_redirects=0

#配置服务器拒绝接受广播风暴或者smurf 攻击attacks:
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1

 

#忽略所有icmp 包或者pings:
sysctl -w net.ipv4.icmp_echo_ignore_all=1


#有些路由器针对广播祯发送无效的回应,每个都产生警告并在内核产生日志.这些回应可以被忽略:

#sysctl -w net.ipv4.icmp_echo_ignore_bogus_error-responses=1


#################################################################################################################################
#7 针对TCP和UDP的调优


#连接数量非常大的服务器进行调优,对于同时支持很多连接的服务器,新的连接可以重新使用TIME-WAIT 套接字. 这对于Web服务器非常有效:

sysctl -w net.ipv4.tcp_tw_reuse=1

#使用该命令,还要启动TIME-WAIT 套接字状态的快速循环功能:
sysctl -w net.ipv4.tcp_tw_recycle=1


#通过改变tcp_fin_timeout 的值, 从FIN 序列到内存可以空闲出来处理新连接的时间缩短了,使性能得到改进.改变这个值的前要经过认真的监测,避免
因为死套接字造成内存溢出.
sysctl -w net.ipv4.tcp_fin_timeout=30

#服务器的一个问题是,同一时刻的大量TCP 连接里有很多的连接被打开但是没有使用. TCP的keepalive 功能检测到这些连接,缺省情况下,在2 小时之>后丢掉. 2 个小时的可能导致内存过度使用,降低性能.因此改成1800 秒(30 分钟)是个更好的选择:


sysctl -w net.ipv4.tcp_keepalive_time=1800


#对于所有协议的队列,设置最大系统发送缓存(wmem) 和接收缓存(rmem)到8MB

sysctl -w net.core.wmem_max=8388608
sysctl -w net.core.rmem_max=8388608


#使用如下命令发送和接收缓存.该命令设定了三个值:最小值、初始值和最大值,第三个值必须小于或等于wmem_max和rmem_max。

#sysctl -w net.ipv4.tcp_wmem_max="4096 87380 8388608"
#sysctl -w net.ipv4.tcp_rmem_max="4096 87380 8388608"

 

#关闭IPV6 ,修改配置文件 /etc/sysconfig/network

#把NETWORKING_IPV6=no掉


 

你可能感兴趣的:(linux,优化,网络,内存,内核)