Centos 6.4 x86_64 最小化安装后的优化

Centos 6.4 x86_64 最小化安装后的优化

  购买了服务器以后要做的第一件事就是安装操作系统了,这里推荐安装 Centos 6.4 x86_64,安装系统时要选择最小化安装(不需要图形),在使用服务器时要记住一个原则,系统安装的应用程序包越少,服务器就会越稳定。至于服务器单机性能调优,应本着稳定安全的原则,尽量不要改动系统原有的配置(Cetnos系统自身的文件和内存机制就很优秀),以下配置优化部分也适合Amazon Linux系统,大家可以对比参考。

系统的基础优化



1、更新yum官方源

  1) 下载repo文件,使用命令如下:

rm -rf /etc/yum.repos.d/*
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

  2) 执行yum源更新,命令如下:

yum clean all
yum makecache
yum update

yum clean all #清除yum缓存

yum makecache #重建缓存

yum update #升级Linux系统

2、关闭不需要的服务



  众所周知,服务越少,系统占用的资源就会越少,所以应当关闭不需要的服务。建议把不需要的服务关闭掉,这样做的好处是减少内存和CPU资源占用。首先可以看下系统中存在了哪些服务,查看命令如下:

  ntsysv

  下面列出的是需要启动的服务,未列出的服务一律关闭:

  • crontab:自动计划任务。
  • network:Linux系统的网络服务,很重要,若不开启此服务的话,服务器就不能联网。
  • sshd:OpenSSH服务器守护进程。
  • rsyslog:Linux系统的日志系统服务(Centos 5.8下此服务名称为syslog),必须要启动。

  #关闭全部服务

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

  #或者

for sun in `chkconfig --list|grep 3:启用|awk ‘{print $1}‘`;do chkconfig --level 3 $sun off;done

  #开启需要的服务

for sun in crond rsyslog sshd network;do chkconfig --level 3 $sun on;done

  #或者需要使用防火墙的话可以开启iptables和ip6tables

for sun in crond rsyslog sshd network iptables ip6tables;do chkconfig --level 3 $sun on;done

3、关闭不需要的TTY



vim /etc/init/start-ttys.conf

修改成箭头位置的/dev/tty[1-2]即可,上面为修改后的值。

4、对TCP/IP网络参数进行调整



优化TCP/IP内核参数的完整案例:

[[email protected] ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1        #可以加强对抗SYN Flood的能力
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 262144
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 1024 65535
[[email protected] ~]# sysctl -p #使配置生效

   4.1 优化Linux下的内核TCP参数以提高系统性能

  内核的优化限制跟服务器的优化一样,应本着稳定安全的原则。下面以Squid服务器为例来说明,待客户端与服务器端建立TCP/IP连接后就会关闭Socket,服务器端连接的端口状态也就变为TIME_WAIT了。那是不是所有执行主动关闭的Socket都会进入TIME_WAIT状态呢?有没有什么情况可使主动关闭的Sokcet直接进入CLOSED状态呢?答案是主动关闭的一方在发送最后一个ACK后就会进入TIME_WAIT状态,并停留2MSL(报文最大生存)时间,这是TCP/IP必不可少的,也就是说这一点是"解决"不了的。

TCP/IP设计者如此设计,主要原因有两个:

  • 防止上一次连接中的包迷路后重新出现,影响新的连接(经过2MSL时间后,上一次连接中所有重复的包都会消失)。
  • 为了可靠地关闭TCP连接。主动关闭方发送的最后一个ACK(FIN)有可能会丢失,如果丢失,被动方会重新发送FIN,这时如果主动方处于CLOSED状态,就会响应RST而不是ACK。所以主动方要处于TIME_WAIT状态,而不能是CLOSED状态。另外,TIME_WAIT并不会占用很大的资源,除非受到攻击。

  在Squid服务器中可输入如下命令查看当前连接统计计数:

netstat -n |awk ‘/^tcp/ {++S[$NF]} END{for(a in S) print a, S[a]}‘

  命令中的含义分别如下:

CLOSED:无活动的或正在进行的连接。

LISTEN:服务器正在等待进入呼叫。

SYN_RECV:一个连接请求已经到达,等待确认。

SYN_SENT:应用已经开始,打开一个连接。

ESTABLISHED:正常数据传输状态。

FIN_WAIT:应用说它已经完成。

FIN_WAIT2:另一边已同意释放。

ITMED_WAIT:等待所有分组死掉。

CLOSING:两边尝试同时关闭。

TIME_WAIT:另一边已初始化一个释放。

LAST_ACK:等待所有分组死掉。

  这命令可以把当前系统的网络连接状态分类汇总。



  如果是在高并发的Squid服务器中,TCP TIME_WAIT套接字的数量经常可达到2-3W,服务器很容易就会被拖死。不过可以通过修改Linux内核参数来减少Squid服务器的TIME_WAIT套接字数量,命令如下:

  vim /etc/sysctl.conf

然后,增加以下参数:

net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 1024    65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000

说明:

  net.ipv4.tcp_syncookies = 1  #表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;

  net.ipv4.tcp_tw_reuse = 1    #表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;

  net.ipv4.tcp_tw_recycle = 1  #表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。

  net.ipv4.tcp_fin_timeout = 30  #表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。

  net.ipv4.tcp_keepalive_time = 1200       #表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。

  net.ipv4.ip_local_port_range = 1024    65000  #表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。

  net.ipv4.tcp_max_syn_backlog = 8192      #表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。

  net.ipv4.tcp_max_tw_buckets = 5000       #表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。默认为180000,改为5000。对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于Squid,效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。

执行以下命令使配置生效:/sbin/sysctl -p



  如果是用于Apache或Nginx等Web服务器,则只需要更改以下几项即可:

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 1024    65000

执行以下命令使配置生效:/sbin/sysctl -p



  如果是Postfix邮件服务器,则建议内核优化方案如下:

net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 5000 65000
kernel.shmmax = 134217728

 执行以下命令使配置生效:/sbin/sysctl -p

5、设置时间同步


yum install -y ntpdate
crontab -e
crontab -l

*/5 * * * *  /usr/sbin/ntpdate s2m.time.edu.cn &> /dev/null

6、优化最大文件数限制



  vim /etc/security/limits.conf

7、关闭SELINUX



  vim /etc/sysconfig/selinux

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted

重启生效,也可以不修改配置文件临时生效,但不建议这样设置,因为重启后会失效。

8、修改SSH登录配置



  vim /etc/ssh/ssh_config

Port 65232
Protocol 2
PermitRootLogin no
UseDNS no

重新载入SSH配置 /etc/init.d/sshd reload 

9、清理登陆的时候显示的系统及内核版本



  #查看登陆信息

cat /etc/redhat-release
cat /etc/issue

  #清理登陆信息

echo >/etc/redhat-release
echo >/etc/issue

10、删除不必要的系统用户和群组



  #删除不必要的用户

userdel adm
userdel lp
userdel sync
userdel shutdown
userdel halt
userdel news
userdel uucp
userdel operator
userdel games
userdel gopher
userdel ftp

  #删除不必要的群组

groupdel adm
groupdel lp
groupdel news
groupdel uucp
groupdel games
groupdel dip
groupdel pppusers

11、关闭重启ctl-alt-delete组合键



  vim /etc/init/control-alt-delete.conf

#注释掉
#exec /sbin/shutdown -r now "Control-Alt-Deletepressed"

12、设置一些全局变量


#设置自动退出终端,防止非法关闭ssh客户端造成登录进程过多,可以设置大一些,单位为秒
echo "TMOUT=3600">> /etc/profile
#历史命令记录数量设置为100条
sed -i "s/HISTSIZE=1000/HISTSIZE=10/" /etc/profile
#立即生效
source /etc/profile
时间: 2024-12-28 00:56:36

Centos 6.4 x86_64 最小化安装后的优化的相关文章

CentOS 5.8最小化安装后的优化

添置了新服务器以后,下一步就要安装系统了.这里推荐用CentOS 5.8 x86_64,大家在用服务器时抱着一个原则:系统安装的应用程序包越少,服务器会越稳定,所以我们安装系统时尽量选择最小化安装.至于服务器的单机性能调优,本着稳定安全的原则,尽量不要改动系统原有的配置(CentOS自身的文件和内存机制就很优秀). 关闭不需要的服务众所周知服务越少,系统占用的资源就会越少,所以应关闭不需要的服务.建议关闭不需要的服务,这样做的好处是减少内存和CPU时间的占用.命令如下所示:# ntsysv 下面

CentOS 6.0 Minimal最小化安装后VMware虚拟机联网详解

最近想搞个mailman邮件列表,又不想在我常用的CentOS 6.4上做实验,怕破坏了环境,于是就想装个试验机,又嫌它占空间太大,于是找了半天发现CentOS 6.0的minimal版本最适合了,装完后发现真的是很小,才600多M,不过因为太精简而导致连网络都没有.下面介绍怎么样配置网络,装完系统后紧接着就能按下面步骤来进行了.(注意这是VMware虚拟机,要是你用物理机的话直接用rp-pppoe拨号就行了,详情请见上一篇博文.) 首先打开虚拟机软件,virtual network edito

CentOS 6.2最小化安装后再安装图形界面

在安装CentOS 6.2时发现它没有提示我要怎么安装,而是"自作主张"地给我选择了最小化安装,结果装完之后只有终端界面,因为有时候不得不用图形界面,所以如果没有图形界面也是很麻烦的. 后来通过百度才知道为什么它不让我选了,因为我用的是虚拟机,由于物理机本身配置就不高,所以我就没给虚拟机分配太多内存,而CentOS 6.2会根据你分配的内存大小决定安装方式,具体的界定我也忘记了,好像是512M还是1G,不过没关系,我们可以自己来安装图形界面,下面来说一下怎么安装. 1.yum -y g

CentOS 6,7最小化安装后再安装图形界面

CentOS 6.2最小化安装后再安装图形界面 在安装CentOS 6.2时发现它没有提示我要怎么安装,而是“自作主张”地给我选择了最小化安装,结果装完之后只有终端界面,因为有时候不得不用图形界面,所以如果没有图形界面也是很麻烦的. 后来通过百度才知道为什么它不让我选了,因为我用的是虚拟机,由于物理机本身配置就不高,所以我就没给虚拟机分配太多内存,而CentOS 6.2会根据你分配的内存大小决定安装方式,具体的界定我也忘记了,好像是512M还是1G,不过没关系,我们可以自己来安装图形界面,下面来

生产服务器环境最小化安装后 Centos 6.5优化配置备忘

本文 centos 6.5 优化 的项有18处: 1.centos6.5最小化安装后启动网卡 2.解决SSH远程链接访问慢优化 3.更新系统源并且升级系统 4.系统时间更新和设定定时任 5.修改ip地址.网关.主机名.DNS 6.关闭selinux,清空iptables 7.创建普通用户并进行sudo授权管理 8.修改SSH端口号和屏蔽root账号远程登陆 9.锁定关键文件系统(禁止非授权用户获得权限) 10.精简开机自启动服务 11.调整系统文件描述符大小 12.设置系统字符集 13.清理登陆

CentOS 最小化安装后安装桌面

通过yum的方式安装: yum groupinstall -y   "Desktop"   "Desktop Platform"   "Desktop Platform Development" "Fonts" "General Purpose Desktop" "Graphical Administration Tools" "Graphics Creation Tools&

centos最小化安装后,需要加上桌面

最小化安装后,有时候会需要桌面,这时用下面方法可搞定:1:yum groupinstall "GNOME Desktop" "Graphical Administration Tools"执行完毕.2:ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target执行完毕.3:reboot执行完毕.正常启动,跟据提示下一步就可以了. 原文地址:https://blog.51

Centos 7最小化安装后配置

关闭SELINUX vi /etc/sysconfig/selinux SELINUX=disabled :wq 配置网卡(最小化安装后ifconfig无法使用),该配置的前提是采用 NAT模式 vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 ONBOOT=yes :wq service network restart # 检查网卡 ip addr 或者 ping -c2 www.baidu.com 更新yum yum -y update 联网后安装

【Linux】CentOS6.X最小化安装后配置

1.centos6.5最小化安装后启动网卡2.ifconfig查询IP进行SSH链接3.更新系统源并且升级系统4.系统时间更新和设定定时任5.修改ip地址.网关.主机名.DNS6.关闭selinux,清空iptables7.创建普通用户并进行sudo授权管理8.修改SSH端口号和屏蔽root账号远程登陆9.锁定关键文件系统(禁止非授权用户获得权限)10.精简开机自启动服务11.调整系统文件描述符大小12.设置系统字符集13.清理登陆的时候显示的系统及内核版本14.内核参数优化15.定时清理/va