1.
理解业务需求与性能指标
在选配前先量化需求:
(1)类型:数据库、缓存、文件服务或Web接入。
(2)指标:并发连接数、事务/秒、响应时间、每秒IOPS、带宽(MB/s)。
(3)峰值与持续负载比例。用监控历史数据(如 Prometheus、Grafana)或压测工具(wrk、sysbench)得到目标数值。
2.
CN2线路优势:低延迟、稳定国际回程,适合对外访问或跨境同步。
在购买前确认运营商到你的目标网段是否直连CN2并提供BGP或专线出口,避免普通公网绕路造成延迟波动。
3.
CPU 选择原则(核数 vs 主频)
步骤:
(1)CPU-bound(计算密集):优先高主频单核,选择频率高的Xeon/EPYC型号;
(2)并发多线程:增加物理核心并注意超线程(Hyper-Threading)对延迟的影响;
(3)数据库:建议选择带大缓存(L3)的CPU,避免频繁上下文切换。用 lscpu 查看候选机器规格。
4.
内存配置建议
步骤:
(1)根据工作负载估算:数据库=表+索引+缓存,推荐物理内存≥数据集热区的1.2倍;
(2)通道与频率:优先使用双/四通道对齐安装,选择ECC内存以提高稳定性;
(3)内核参数:配置 vm.swappiness=10、vm.dirty_ratio/ratio 根据写压力调整。
5.
存储类型与组合策略
步骤:
(1)OS+小文件/日志:SATA/SSD足够;
(2)数据/DB:优先企业级NVMe或NVMe RAID(硬件或软件RAID0/1/10);
(3)冷数据/备份:SATA或远程对象存储。对I/O敏感场景,尽量避免共享存储层的 noisy neighbor。
6.
RAID与文件系统选择
步骤:
(1)RAID:需要冗余写入的选RAID1/10,追求吞吐RAID0(但无冗余);
(2)文件系统:数据库建议XFS或ext4,使用mkfs.xfs -f -L data /dev/nvme0n1;
(3)挂载选项:noatime,nodiratime,allocsize=,视场景添加,避免 barrier=0 除非清楚风险。
7.
基线测试(上机前必做)
步骤:
(1)查看硬件:lscpu, lsblk, nvme list, smartctl -a;
(2)顺序吞吐测试:dd if=/dev/zero of=/mnt/tmpfile bs=1G count=1 oflag=direct;
(3)随机IOPS测试:使用 fio 示例:fio --name=randrw --rw=randrw --bs=4k --ioengine=libaio --iodepth=64 --numjobs=4 --size=2G --runtime=300 --time_based --filename=/dev/nvme0n1
8.
IO调度器与驱动优化
步骤:
(1)检查调度器:cat /sys/block/nvme0n1/queue/scheduler;
(2)推荐:NVMe选noop或none,SATA可用deadline;设置 echo noop > .../scheduler;
(3)调整队列深度:echo 1024 > /sys/block/nvme0n1/queue/nr_requests 或使用 nvme命令调整IO队列。
9.
网络与CN2优化配置
步骤:
(1)检查MTU并根据链路设置(如9000启用jumbo);
(2)TCP参数:在 /etc/sysctl.conf 添加 net.core.rmem_max=134217728 net.core.wmem_max=134217728 net.ipv4.tcp_rmem=4096 87380 134217728 net.ipv4.tcp_wmem=4096 65536 134217728 net.ipv4.tcp_congestion_control=bbr(或cubic视场景);执行 sysctl -p;
(3)NIC优化:ethtool -K eth0 tso on gso on gro on;绑定中断(irqaffinity)到空闲CPU核。
10.
内核与文件系统级别优化
步骤:
(1)调整vm参数:vm.swappiness=10 vm.vfs_cache_pressure=50;
(2)调整I/O写回:vm.dirty_background_ratio=5 vm.dirty_ratio=20;
(3)启用 NOOP 调度或使用io_uring的应用以降低延迟。
11.
数据库与应用层优化
步骤:
(1)数据库内存设置(MySQL例):innodb_buffer_pool_size≈物理内存的60%-70%;
(2)关闭不必要的同步写入或使用 group_commit、innodb_flush_log_at_trx_commit=2 在可接受丢失窗口下提高吞吐;
(3)使用连接池、读写分离和缓存(Redis/Memcached)减轻磁盘压力。
12.
上线前的压测与监控部署
步骤:
(1)用 fio、sysbench、wrk 模拟真实负载并记录IOPS、延迟、CPU和内存使用;
(2)部署监控:iostat, vmstat, dstat, Prometheus + node_exporter,收集nvme/blk stats;
(3)根据瓶颈调整配置并重复测试直至满足SLA。
13.
常见问题及排查命令清单
步骤:
(1)高延迟:检查iostat -x /dev/nvme0n1、dmesg是否有驱动错误;
(2)低IOPS:检查调度器、队列深度、fio复现,确认没有频繁fsync;
(3)带宽不足:使用 iperf3 测试网络,调整MTU与NIC offload。
14.
问:选择CN2物理服务器时,优先升级CPU还是存储?
答:优先看瓶颈。用压测找出CPU或IO成为瓶颈:若CPU利用率长期>70%且延迟随CPU上升变差,优先CPU;若IO等待高(iowait高、IOPS不足或延迟高),优先升级NVMe或提升队列/RAID策略。
15.
问:如何用fio快速得到可参考的IOPS/延迟数据?
答:运行fio示例:fio --name=test --filename=/dev/nvme0n1 --rw=randrw --bs=4k --ioengine=libaio --iodepth=64 --numjobs=4 --runtime=180 --time_based --group_reporting,观察IOPS和lat (p50/p99);根据结果调整iodepth和numjobs贴近真实并发。
16.
问:生产环境有哪些必须的IO优化项立即生效?
答:立刻可做的:将调度器设为noop/none(NVMe),开启NIC offload(ethtool -K),调整 vm.swappiness、dirty_ratio、设置文件系统挂载 noatime,启用合适的TCP拥塞控制(如BBR)。完成后立即压测验证。
来源:如何选择 香港cn2物理服务器 CPU内存存储组合与IO优化建议