转载,阅读原文:http://www.zxsdw.com/index.php/archives/1135/
centos系统优化必须做的几件事:
一:设置系统字符集
二:更新centos系统源
三:修改ip为静态获取,修改DNS及主机名
四:centos删除不必要的系统用户和群组
五:创建普通用户并进行sudo授权管理
六:修改S@SH端口和root账号
七:清空iptables,创建自己的防火墙规则
八:精简开机自启动服务
九:内核参数优化
十:设置一些全局变量
一:设置系统字符集
vi /etc/sysconfig/i18n
英文提示修改为:LANG=”en_US.UTF-8″
中文提示修改为:LANG=”zh_CN.UTF-8″
二:更新centos系统源
有些商家centos最小化安装会没有wget那就yum install wget安装一下
备份原centos更新源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
更换为阿里云centos6更新源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
阿里云centos5更新源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo
然后运行
yum makecache
开始更新系统以及内核(注意:会升级centos到高版本,我觉得对于centos越高版本,越好用的样子。呵呵)
yum upgrade
如果不希望升级到高版本,可采用下面的升级命令
yum --exclude=kernel* centos-release* update
三:修改ip为静态获取,修改DNS及主机名
备份网络配置
mv /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0.bak
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 #网卡设备名称
TYPE=Ethernet #网络类型为以太网模式
IPADDR=192.168.1.10 #IP
NETMASK=255.255.255.0 #网卡对应的网络掩码
GATEWAY=192.168.1.1 #网关地址
ONBOOT=yes #是否启动引导的时候激活YES
BOOTPROTO=static #静态IP地址 dhcp为动态
NM_CONTROLLED=no #设备eth0是否可以由Network Manager图形管理工具托管
可选参数
IPV6INIT=no
IPV6_AUTOCONF=no
HWADDR=00:0C:29:D0:C7:B5 #以太网设备的对应的物理地址
UUID=080a457b-6a53-4a3a-9155-a23c1146c2c6 #通用唯一识别码
vi /etc/sysconfig/network
#是否使用网络,必须设置为yes。
NETWORKING=yes
NETWORKING_IPV6=no
#设置本机的主机名,这里设置的主机名要和/etc/hosts中设置的主机名对应
HOSTNAME=zxsdw.localdomain
#设置本机连接的网关的IP地址。例如,网关为10.0.0.1或者192.168.1.1
GATEWAY=192.168.1.1
修改主机DNS
vi /etc/resolv.conf
nameserver 8.8.8.8
nameserver 4.4.4.4
修改HOSTS
vi /etc/hosts
127.0.0.1 zxsdw.localdomain
#order hosts,bind #解析器查询顺序是文件/etc/hosts,然后是DNS
#允许主机拥有多个ip地址
multi on
#禁止ip地址欺骗
nospoof on
重启网卡生效设置两种方法
service network restart
或者
/etc/init.d/network restart
四:centos删除没有必要的系统用户和群组
awk -F ":" '{print $1}' /etc/passwd
userdel adm
userdel lp
userdel sync
userdel shutdown
userdel halt
userdel news
userdel uucp
userdel operator
userdel games
userdel gopher
五:创建普通用户并进行sudo授权管理
[root@localhost~]# useradd user
[root@localhost~]# echo "123456" | passwd --stdin user #设置密码
[root@localhost~]# vi /etc/sudoers #或visudo打开,添加user用户所有权限
root ALL=(ALL) ALL
user ALL=(ALL) ALL
六:修改SSH端口和root账号
[root@localhost~]# vi /etc/ssh/sshd_config
Port xxxxx #设置SSH登陆端口最大不要超过65536
PermitRootLogin no #禁止root用户登陆
PermitEmptyPasswords no #禁止空密码登录
UseDNSno #关闭DNS查询
#小提醒:记得把修改后的端口号加入iptables中。
另外如果个人喜好用钥匙登陆的话也可以看这篇文章:使用密钥登录VPS服务器
七:清空iptables,创建自己的防火墙规则
iptables -F #清空所选链。这等于把所有规则一个个的删除。
iptables -X #删除指定的用户自定义链。
iptables -Z #把所有链的包及字节的计数器清空。
vi /etc/sysconfig/iptables添加如下内容。
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
#-A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
/etc/init.d/iptables save
chkconfig --level 345 iptables on
service iptables restart
八:精简开机自启动服务
查看自启动服务chkconfig --list|grep 3:on
chkconfig auditd off
chkconfig blk-availability off
chkconfig ip6tables off
chkconfig lvm2-monitor off
chkconfig netfs off
chkconfig udev-post off
或者运行如下命令开启需要的服务
for sun in crond rsyslog sshd network iptables;do chkconfig --level 3 $sun on;done
九:内核参数优化
查看内核默认参数
cat /proc/sys/net/ipv4/xxxx
cat /proc/sys/net/core/xxxx
vi /etc/sysctl.conf
添加如下参数
#关闭IPV6
net.ipv6.conf.all.disable_ipv6 = 1
#禁止转发
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
kern.maxfiles = 65536
#kern.maxfilesperproc = 32768
#kern.maxfilesperproc: 1735
(maxfilesperproc网上很多资料写的是32768,除非用异步I/O或大量线程,打开这么多的文件恐怕是不太正常的。个人建议不做修改,保留默认。)
#设置端口范围
net.ipv4.ip_local_port_range = 1000 61000
#TCP发送(w)接收(r)缓存256KB,最大缓存512KB
net.core.wmem_default = 262144
net.core.rmem_default = 262144
net.core.rmem_max = 524288
net.core.wmem_max = 524288
#默认128,可加大。定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数。listen调用指定最大accept队列,当请求连接大于该值,后进的请求会被丢弃,nginx默认511,这里就改为511,内核默认128 保守的话也可设置为256,查阅资料建议是1000+
net.core.somaxconn = 511
#在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目(保守点可1000)。
net.core.netdev_max_backlog = 4096
#TCP的连接管理
当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击
net.ipv4.tcp_syncookies = 1
进入SYN包的最大请求队列。默认1024,对重负载服务器,增加该值显然有好处。
net.ipv4.tcp_max_syn_backlog = 4096
详解:http://www.piao2010.com/tags/tcp_max_syn_backlog
http://www.blogjava.net/yongboy/archive/2014/08/20/417165.html
下面两个值定义了SYN的重试次数,默认5,重试次数减少可防范少量SYN攻击。
net.ipv4.tcp_synack_retries = 3
net.ipv4.tcp_syn_retries = 4
http://baiying.blog.51cto.com/1068039/702840/
http://tech.uc.cn/?p=1790
#TCP连接的保持优化
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 5
如果某个TCP连接在idle 1200秒后,内核发起probe。
如果probe 5次(每次30秒)不成功,内核才彻底放弃,认为该连接已失效。
对服务器而言,显然默认值太大。可如上调整。
#tcp连接重用
net.ipv4.tcp_tw_reuse = 1
#时间戳
net.ipv4.tcp_timestamps = 0
时间戳详解http://blog.csdn.net/gzh0222/article/details/8000508
net.ipv4.tcp_fin_timeout = 30
下面参数可自行考虑。
#默认18W,降低只是抵御简单DOS,不要人为降低,做NAT网络干净可适当增加
#net.ipv4.tcp_max_tw_buckets = 20000
#除非得到技术专家的建议,请不要随意修改这个值默认是0。
#net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_sack = 1
该文件表示是否启用有选择的应答(Selective Acknowledgment),这可以通过有选择地应答乱序接收到的报文来提高性能(这样可以让发送者只发送丢失的报文段);(对于广域网通信来说)这个选项应该启用,但是这会增加对 CPU 的占用。 缺省设置:1
net.ipv4.tcp_window_scaling = 1
该文件表示设置tcp/ip会话的滑动窗口大小是否可变。参数值为布尔值,为1时表示可变,为0时表示不可变。tcp/ip通常使用的窗口最大可达到65535 字节,对于高速网络,该值可能太小,这时候如果启用了该功能,可以使tcp/ip滑动窗口大小增大数个数量级,从而提高数据传输的能力。 缺省设置:1
十:设置一些全局变量
关闭重启ctl-alt-delete组合键
vi /etc/init/control-alt-delete.conf
#exec /sbin/shutdown -r now "Control-Alt-Deletepressed"
#设置自动退出终端,防止非法关闭ssh客户端造成登录进程过多,可以设置大一些,单位为秒
echo "TMOUT=3600">> /etc/profile
#历史命令记录数量设置为10条
sed -i "s/HISTSIZE=1000/HISTSIZE=10/" /etc/profile
#立即生效source /etc/profile
#centos6.5已经不自动安装sendmail了所以没必要走这一步优化
mkdir -p /server/scripts
vi /server/scripts/spool_clean.sh
#!/bin/sh
find/var/spool/clientmqueue/-typef -mtime +30|xargsrm-f
设置完成记得reboot重启生效。
内核优化里net.ipv4.tcp_tw_reuse = 1 开启此参数可能造成未知问题
net.ipv4.tcp_wmem(tcp_mem | tcp_rmem)默认情况下, 协议栈通常是按net.core.wmem_default 和net.core.wmem_max 的值来分配内存的。
net.core.wmem_default = 262144 (256KB)
net.core.rmem_default = 262144
net.core.rmem_max = 524288 (524kb)
net.core.wmem_max = 524288 (524kb)
参考:
my.oschina.net/u/162204/blog/53754
colobu.com/2014/09/18/linux-tcpip-tuning/
lvtao.net/server/sysctl.html
wenku.baidu.com/view/5ff10fbf6294dd88d0d26b73.html?re=view
360doc.com/content/14/0606/16/3300331_384326124.shtml
aixchina.net/club/viewthread.php?tid=76434
jaseywang.me/2012/05/09/%E5%85%B3%E4%BA%8E-out-of-socket-memory-%E7%9A%84%E8%A7%A3%E9%87%8A-2/
cnblogs.com/shanyou/archive/2012/01/29/2330997.html
浙公网安备 33010602011771号