设为首页 收藏本站
查看: 424|回复: 0

linux系统优化 之shell篇

[复制链接]

尚未签到

发表于 2018-8-17 08:10:30 | 显示全部楼层 |阅读模式
  本次整理了一些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掉


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-552827-1-1.html 上篇帖子: bash shell退格键乱码 下篇帖子: shell遍历数组
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表