提问:优化怎么做?
答:从三方面入手,系统,架构,应用
1.系统
硬件优化:CPU,内存,外存,网络
内存:
查看命令:vmstat,sar
关注点:
id=idle,空闲。id=0说明满载。
sy=system,过高就从系统方面排查
us=userd,过高就从应用层面排查
st=stolen,过高就从虚拟化方面排查
优化:
横向变多:负载分担
纵向变强:更换硬件
微调:进程优先级nice,进程核心捆绑taskset,不建议使用内存:
查看命令:free,vmstat
优化:
横向变多:负载分担
纵向变强:更换硬件
微调:swap空间使用积极性swappiness外存:
查看命令:iostat
关注点:
await等待时间长
avgqu-sz请求队列长
优化:
横向变多:raid,lvm,分布式
纵向变强:更换硬件
调度算法scheduler:
按序noop,会绕道
按近cfq,会饿死
deadline,折中网络:
关注点:
检查网卡:mii-tool ens33
网卡负载:sar -n DEV
IP冲突:arp -a -n |grep 10.1.1.12
网卡工作模式:ethtool ens33
优化:
横向变多:负载分担
纵向变强:加带宽
防DDOS攻击:ss -s或netstat -nt,关注timewait和synrecv过多
紧急应对ddos方案:
1.临时关机
2.编写一个shell脚本
#!/bin/bash
touch /tmp/denyiplist.txt
netstat -nt |awk '$NF~"SYN_RECV" {print $0}' | grep :80 |awk -F: '{print $8}' |sort |uniq -c |awk '$1>10 {print $2}' |while read ip
do
grep $ip /tmp/denyiplist.txt &> /dev/null
if [ $? -ne 0 ];then
iptables -A INPUT -p tcp --dport 80 -s $ip -j REJECT
echo "$ip" >> /tmp/denyiplist.txt
at now + 1 days << EOF
iptables -D INPUT -p tcp --dport 80 -s $ip -j REJECT
sed -i "/$ip/"d /tmp/denyiplist.txt
EOF
fi
done
内核优化:略
2.架构
架构优化:
高可用与分布式
主:OSPF => 负载均衡机 => web服务器(分布式存储)=> redis服务 => mycat读写分离 => mysql
副:日志存储,监控机,跳板机,CICD。
3.应用
只能具体问题具体分析。。