首页 运维 网络学院 查看内容

linux系统优化 之shell篇

2012-4-28 10:34 849 0

摘要: 本次整理了一些linux 系统方面的优化内容和大家分享,内包含 daemons优化、 安全优化、内核参数、 内存优化 、磁盘优化 、网络子系统的调优 、针对TCP和UDP的调优等方面的内容。 &nb...
关键词: nbsp sysctl 内存 net ipv sbin service chkconfig 参数 服务器

本次整理了一些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)忽略存储内存池的频率,默认值是120sysctl -w  net.ipv4.inet_peer_gc_maxtime=240 #net.ipv4.inet_peer_gc_mintime   设置garbage  collector可以清除内存的最小时间,如果你的服务器负载比较重,#可以尝试增加这个值,默认值是10sysctl -w net.ipv4.inet_peer_gc_mintime=80 #net.ipv4.inet_peer_maxttl      Inet入口的最大存活时间,在这个时间之后新入口将过期,默认值是600sysctl -w net.ipv4.inet_peer_maxttl=500 #net.ipv4.inet_peer_minttl       Inet入口的最小存活时间,这个时间必须比net.ipv4.inet_peer_threshold参数小,默认值是120sysctl -w net.ipv4.inet_peer_minttl=80 #net.ipv4.inet_peer_threshold    设定inet的存储容量,当这个限制达到后,入口将被丢掉,#使用net.ipv4.inet_peer_gc_mintime限制超时限制,默认值是65644sysctl -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=1sysctl -w net.ipv4.conf.lo.secure_redirects=1sysctl -w net.ipv4.conf.default.secure_redirects=1sysctl -w net.ipv4.conf.all..secure_redirects=1 sysctl -w net.ipv4.conf.eth0.send_redirects=0sysctl -w net.ipv4.conf.lo.send_redirects=0sysctl -w net.ipv4.conf.default.send_redirects=0sysctl -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=8388608sysctl -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掉   本文出自 “康建华” 博客,请务必保留此出处http://michaelkang.blog.51cto.com/1553154/774683
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部