Linux系统调优——实战

沉舟侧畔千帆进,病树前头万木春。这篇文章主要讲述Linux系统调优——实战相关的知识,希望能为你提供帮助。
1、关闭Selinux
2、清空防火墙并设置基本规则
【Linux系统调优——实战】3、添加user用户并进行Sudo授权管理(根据需求添加自己的用户)
4、禁用Root远程登录
5、禁用不使用的自启动服务
6、删除不使用的系统用户
7、关闭重启组合键(ctl-alt-delete)
8、调整文件描述符大小
9、修改系统显示信息
10、修改历史记录
11、同步系统时间
12、内核参数优化
[root@localhost ~]# vi optimizing.sh
#!/bin/bash
cat < < EOF
+---------------------------------------+
|           Start Optimize ......                       |
+---------------------------------------+
EOF
########## Shut selinux ##########
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
echo "Shut selinux.                                                       [ OK ]"
########## Set firewall ##########
/sbin/iptables -F
/sbin/iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 53 -j ACCEPT
/sbin/iptables -A INPUT -p udp --dport 53 -j ACCEPT
/sbin/iptables -A INPUT -p udp --dport 123 -j ACCEPT
/sbin/iptables -A INPUT -p icmp -j ACCEPT
/sbin/iptables -P INPUT DROP
/etc/init.d/iptables save > /dev/null 2> & 1
echo "Set firewall.                                                       [ OK ]"
########## Auth and add user ##########
/usr/sbin/useradd user > /dev/null 2> & 1 #添加user用户并设置密码123.com
if [[ $? -eq 0 ]]; then
echo "123.com" | passwd --stdin user > /dev/null 2> & 1
sed -i "99 s/^/user       ALL=(ALL)             ALL/" /etc/sudoers
echo "Auth and add user.                                             [ OK ]"
else
echo "User already exist!                               [Fail]"
fi
########## Shut root login ##########
sed -i "s/#PermitRootLogin yes/PermitRootLogin no/g" /etc/ssh/sshd_config
sed -i "s/#PermitEmptyPasswords no/PermitEmptyPasswords no/g" /etc/ssh/sshd_config
sed -i "s/#UseDNS yes/UseDNS no/g" /etc/ssh/sshd_config
echo "Shut root login.                                                 [ OK ]"
########## Forbidden not use service ##########
/sbin/chkconfig auditd off
/sbin/chkconfig blk-availability off
/sbin/chkconfig ip6tables off
/sbin/chkconfig lvm2-monitor off
/sbin/chkconfig netfs off
/sbin/chkconfig udev-post off
echo "Forbidden not use service.                             [ OK ]"
########## Delete not use user ##########
/usr/sbin/userdel adm > /dev/null 2> & 1
/usr/sbin/userdel lp > /dev/null 2> & 1
/usr/sbin/userdel shutdown > /dev/null 2> & 1
/usr/sbin/userdel halt > /dev/null 2> & 1
/usr/sbin/userdel uucp > /dev/null 2> & 1
/usr/sbin/userdel operator > /dev/null 2> & 1
/usr/sbin/userdel games > /dev/null 2> & 1
/usr/sbin/userdel gopher > /dev/null 2> & 1
if [[ $? -eq 0 ]]; then
echo "Delete not use service.                                   [ OK ]"
else
echo "Not use user already deleted!                   [Fail]"
fi
########## Shut reboot combination key ##########
sed -i \'s#exec /sbin/shutdown -r now#\\#exec /sbin/shutdown -r now#\' /etc/init/control-alt-delete.conf
echo "Shut reboot combination key.                             [ OK ]"
########## Modify file descriptor size ##########
echo "*                               soft       nofile                 102400" > > /etc/security/limits.conf
echo "*                               hard       nofile                 102400" > > /etc/security/limits.conf
echo "Modify file descriptor size.                         [ OK ]"
########## Modify system show message ##########
echo "Welcome to Server." > /etc/issue
echo "Welcome to Server." > /etc/redhat-release
echo "Modify system show message.                           [ OK ]"
########## Modify history ##########
sed -i "s/HISTSIZE=1000/HISTSIZE=10/g" /etc/profile
source /etc/profile
echo "Modify history.                                                   [ OK ]"
########## Sync timezone ##########
yum install ntp -y > /dev/null 2> & 1
cp -rf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
/usr/sbin/ntpdate cn.pool.ntp.org > /dev/null 2> & 1
/sbin/hwclock -w
echo "0 * * * * /usr/sbin/ntpdate cn.pool.ntp.org ; hwclock -w" > > /etc/crontab
echo "Sync timezone.                                         [ OK ]"
########## Kernel optimize ##########
cat > > /etc/sysctl.conf < < EOF
net.ipv4.tcp_fin_timeout = 2          
net.ipv4.tcp_syncookies = 1            
net.ipv4.tcp_tw_reuse = 1            
net.ipv4.tcp_tw_recycle = 1            
net.ipv4.ip_local_port_range = 4096 65000
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_max_syn_backlog = 4096
net.core.netdev_max_backlog =   10240
net.core.somaxconn = 2048                
net.core.wmem_default = 4096000    
net.core.rmem_default = 4096000    
net.core.rmem_max = 4096000            
net.core.wmem_max = 4096000            
net.ipv4.tcp_synack_retries = 2    
net.ipv4.tcp_syn_retries = 2          
net.ipv4.tcp_tw_recycle = 1            
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_mem = 94500000 915000000 927000000
EOF
echo "Kernel optimize.                                                 [ OK ]"
cat < < EOF
+---------------------------------------+
|           Optimize the end ......                   |
|           Please reboot your system !           |
+---------------------------------------+
EOF
13、禁止使用Ctrl+Alt+Del快捷键重启服务器
cp /etc/inittab   /etc/inittabbak
vi /etc/inittab       #注释掉下面这一行
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
14、使用yum update更新系统时不升级内核,只更新软件包
注意:由于系统与硬件的兼容性问题,有可能升级内核后导致服务器不能正常启动,这是非常可怕的,没有特别的需要,建议不要随意升级内核。
cp /etc/yum.conf       /etc/yum.confbak
修改yum的配置文件 vi /etc/yum.conf   在的最后添加 exclude=kernel*
直接在yum的命令后面加上如下的参数:
yum --exclude=kernel* update
查看系统版本   cat /etc/issue
查看内核版本   uname –a
15、关闭Centos自动更新
chkconfig --list yum-updatesd   #显示当前系统状态
yum-updatesd       0:关闭   1:关闭   2:启用   3:启用   4:启用   5:启用   6:关闭      
service yum-updatesd stop           #关闭   开启参数为start
停止 yum-updatesd:                                                                               [确定]
service yum-updatesd status     #查看是否关闭
yum-updatesd 已停
chkconfig --level 35 yum-updatesd off   #禁止开启启动(系统模式为3、5)
chkconfig yum-updatesd off   #禁止开启启动(所有启动模式全部禁止)  
chkconfig --list yum-updatesd   #显示当前系统状态
yum-updatesd       0:关闭   1:关闭   2:启用   3:关闭   4:启用   5:关闭   6:关闭
15、关闭多余的虚拟控制台
我们知道从控制台切换到 X 窗口,一般采用 Alt-F7 ,为什么呢?因为系统默认定义了 6 个虚拟控制台,
所以 X 就成了第7个。实际上,很多人一般不会需要这么多虚拟控制台的,修改/etc/inittab ,注释掉那些你不需要的。
 
cp   /etc/inittab   /etc/inittabbak
vi /etc/inittab
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
#2:2345:respawn:/sbin/mingetty tty2
#3:2345:respawn:/sbin/mingetty tty3
#4:2345:respawn:/sbin/mingetty tty4
#5:2345:respawn:/sbin/mingetty tty5
#6:2345:respawn:/sbin/mingetty tty6
16、修改history命令记录
cp /etc/profile     /etc/profilebak
vi /etc/profile
找到 HISTSIZE=1000 改为 HISTSIZE=50
17、隐藏服务器系统信息
在缺省情况下,当你登陆到linux系统,它会告诉你该linux发行版的名称、版本、内核版本、服务器的名称。
为了不让这些默认的信息泄露出来,我们要进行下面的操作,让它只显示一个"login:"提示符。
删除/etc/issue和/etc/issue.net这两个文件,或者把这2个文件改名,效果是一样的。
 
mv   /etc/issue /etc/issuebak
mv   /etc/issue.net     /etc/issue.netbak
17、服务器禁止ping
cp   /etc/rc.d/rc.local   /etc/rc.d/rc.localbak        
vi   /etc/rc.d/rc.local               #在文件末尾增加下面这一行
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
参数0表示允许     1
18、CPU占用最高的10个进程
ps axww -o user,pid,pcpu,pmem,start,time,comm | head -1; ps axww -o user,pid,pcpu,pmem,start,time,comm   | grep -v PID |   sort -nr -k 3 | head
ps aux|head -1; ps aux|grep -v PID|sort -rn -k +3|head
ps auxw|head -1; ps auxw|sort -rn -k3|head -10
19、内存占用最高的10个进程
ps axww -o user,pid,pcpu,pmem,start,time,comm | head -1 ; ps axww -o user,pid,pcpu,pmem,start,time,comm   | grep -v PID |   sort -nr -k 4 | head
ps aux|head -1; ps aux|grep -v PID|sort -rn -k +4|head
ps auxw|head -1; ps auxw|sort -rn -k4|head -10
20、虚拟内存使用最多的前10个进程
ps auxw|head -1; ps auxw|sort -rn -k5|head -10
21、查看系统负载
dstat --top-mem --top-io --top-cpu --nocolor 1 10
22、统计当前连接数
ss -an | grep -v "State" | awk \'{++S[$1]} END {for(a in S) print a, S[a]}\'
netstat -tan   | awk \'/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}\'
23、当前连接数最多的10个进程
ss -tnp | grep -v "State" | awk \'{print $6}\' | awk -F \'"\' \'{print $2}\' | awk \'{++S[$1]} END {for(a in S) print a, S[a]}\' | sort -nr -k2 | head
netstat -tnp | grep -v "Active" | grep -v "TIME_WAIT" | grep -v "State" | awk -F \'/\' \'{print $NF}\' | awk \'{++S[$1]} END {for(a in S) print a, S[a]}\' | sort -nr -k2 | head
24、LVM日常使用
LVM在日常运维工作当中占据着很大的比重,在此我列举LVM常见的日常操作及步骤。
1. 添加一个磁盘到OS,格式化文件系统使用,参考如下:
扫描磁盘
pvcreate   /dev/sdb
vgcreate -s 8M datavg /dev/sdb
lvcreate -L 10G -n datalv datavg
mkfs.ext3 /dev/datavg/datalv
mount /dev/datavg/datalv /data
lvextend -L 20G /dev/datavg/datalv
resize2fs /dev/datavg/datavlv

    推荐阅读