linux系统优化 之shell篇

网友投稿 1225 2022-09-28

linux系统优化 之shell篇

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掉

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:ext4 文件系统新特性
下一篇:Cassandra 集群核心配置和概念梳理
相关文章

 发表评论

暂时没有评论,来抢沙发吧~