容器资源绑定和查看
CPU部分
查看容器的绑核情况
docker inspect --format='{{.HostConfig.CpusetCpus}}' mysql483-tz-webshard2-m1-4483
查看这台物理机上哪些核没绑
docker ps -q | xargs -I {} docker inspect {} --format '{{.Id}}: {{.HostConfig.CpusetCpus}}'
然后将结果copy导deepseek询问
CPU绑定
docker update --cpuset-cpus='0-15' mysql492-tz-settlementcenter-m1-4492
docker update --cpuset-cpus='1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,51,53,55,57,59,61,63,65,67,69,71,73,75,77,79' mysql307-tz-productcenter-m1-4307
CPU绑核验证
docker inspect --format='{{.HostConfig.CpusetCpus}}' mysql483-tz-webshard2-m1-4483
内存部分
查看内存绑核情况
docker inspect --format='{{.HostConfig.Memory}}' mysql307-tz-productcenter-m1-4307
内存绑定
docker update --memory 32g --memory-swap 32g mysql307-tz-productcenter-m1-4307
查看容器资源使用率
查看CPU和内存
docker stats mysql492-tz-settlementcenter-m1-4492
留痕查看
for x in {1..30};do docker stats mysql492-tz-settlementcenter-m1-4492 --no-stream;sleep 1;done
查看IOPS
sar -d -p 1 30 | grep nvme1n1
查看网络带宽
#!/bin/bash# 定义监控的网卡名称
INTERFACE="bond0"# 初始化变量
prev_rx=0
prev_tx=0# 获取初始字节数
get_bytes() {cat /proc/net/dev | grep "$INTERFACE" | awk '{print $2, $10}'
}# 主循环
while true; do# 获取当前接收和发送的字节数current_rx_tx=$(get_bytes)current_rx=$(echo "$current_rx_tx" | awk '{print $1}')current_tx=$(echo "$current_rx_tx" | awk '{print $2}')# 计算与上一次的差值(即每秒的流量)if [ "$prev_rx" -ne 0 ]; thenrx_diff=$((current_rx - prev_rx))tx_diff=$((current_tx - prev_tx))total_bytes=$((rx_diff + tx_diff))# 转换为 MB(1 MB = 1024 * 1024 字节)total_mb=$(echo "scale=2; $total_bytes / (1024 * 1024)" | bc)# 输出结果echo "$(date '+%Y-%m-%d %H:%M:%S') [${INTERFACE}] Total Bandwidth: ${total_mb} MB/s"fi# 更新上一次的值prev_rx=$current_rxprev_tx=$current_tx# 等待 1 秒sleep 1
done