数据库自身参数调整
数据库参数根据具体数据库进行设置
data_buffer
sga_buffer
并发数
刷盘机制
日志文件大小
表分区数
pctfree
网络优化
设置ring buffer
Ring Buffer 的空间是有限的,当收到的数据包速率大于单个 CPU 处理速度的时候 Ring Buffer 可能被占满,占满之后再来的新数据包会被自动丢弃
ethtool -g eth0
ethtool -G eth0 rx 4096 tx 4096
设置网络流的 RX 哈希域
调整 RSS 计算哈希时所使用的字段,增加源和目的端口,调整后的作用暂不清楚
ethtool -n eth0 rx-flow-hash udp4
ethtool -N eth0 rx-flow-hash udp4 sdfn
设置多队列
多队列网卡顾名思义就是由原来的单网卡单队列变成了现在的单网卡多队列。多队列网卡是一种技术,随着网络IO的带宽的不断提升,单核CPU不能完全处满足网卡的需求,体现最为明显的就是单核CPU处理不了网卡大量的数据包请求(软中断)而造成大量丢包,其实当网卡收到数据包时会产生中断,通知内核有新数据包,然后内核调用中断处理程序进行响应,把数据包从网卡缓存拷贝到内存,因为网卡缓存大小有限,如果不及时拷出数据,后续数据包将会因为缓存溢出被丢弃,因此这一工作需要立即完成。剩下的处理和操作数据包的工作就会交给软中断,高负载的网卡是软中断产生的大户,很容易形成瓶颈。但通过多队列网卡驱动的支持,将各个队列通过中断绑定到不同的CPU核上,以满足网卡的需求,这就是多队列网卡的应用
ethtool -l eth0查看队列数
ethtool -L eth0 combined 8 设置队列数
[root@aabbc ~]# ethtool -l eth0
Channel parameters for eth0:
Pre-set maximums:
RX: 0
TX: 0
Other: 1
Combined: 63
Current hardware settings:
RX: 0
TX: 0
Other: 1
Combined: 8
cpu优化
网卡中断绑定cpu
将处理中断的cpu绑定到固定的cpu上,避免对其他cpu造成中断
查看网卡中断号
cat /proc/interrupts | grep eth0 | awk -F: '{print $1}'
24
25
26
27
查看当前中断使用的cpu
cat /proc/irq/24/smp_affinity_list
将中断号24和cpu0绑定
echo 1 > /proc/irq/124/smp_affinity_list
将中断号25和cpu1绑定
echo 2 > /proc/irq/25/smp_affinity_list
数据库进程绑定cpu
将数据库进程绑定到固定cpu上,避免使用处理网卡中断的cpu
numactl -C 0-79 启动数据库进程命令
暂时使用的方法如上,实时更新优化方法