定位瓶颈首先要抓取数据:使用 top/htop 查看CPU与负载,iostat 或 iotop 查看磁盘IO,vmstat 观察内存与上下文切换,iftop 或 nload 检查网络带宽。对延迟疑问可用 ping、mtr 与 iperf3。常见瓶颈包括:CPU饱和、磁盘IO等待高、内存不足导致频繁交换(swap)、网络丢包或带宽受限。收集这些指标后才能有针对性地进行 性能调优。
先判断虚拟磁盘类型(SSD或HDD)和底层架构(KVM/Hyper-V等)。对SSD可选择合适的IO调度器:echo noop 或 deadline > /sys/block/sda/queue/scheduler;对数据库场景建议使用 fio 或 dd 做基准测试。调整文件系统挂载参数(noatime,nodiratime),为数据库关闭sync或调整innodb_flush_method=O_DIRECT。若IO等待长且为共享宿主机噪声,应与商家沟通或升级更高IO配额的实例。
常见调整写入 /etc/sysctl.conf 并 sysctl -p:增加接收/发送缓存 net.core.rmem_max/net.core.wmem_max,调整 tcp窗口 net.ipv4.tcp_rmem/tcp_wmem,开启TCP快速回收或拥塞控制算法(如 bbr:modprobe tcp_bbr 并设置 net.ipv4.tcp_congestion_control=bbr)。此外,减少TIME_WAIT占用(net.ipv4.tcp_tw_reuse=1)和调高文件描述符限制 (ulimit -n)。这些改动对高并发网络服务有明显提升,但需在低流量窗口进行AB测试以防副作用。
先用 free -m、vmstat、smem 查看内存使用与进程占用;用 ps aux --sort=-rss 或 pmap -x 查找占内存最多的进程。若是内存限制导致OOM杀死进程,考虑调高实例内存或设置 swapiness(/proc/sys/vm/swappiness)为10-20以降低使用频率。对长期内存泄漏问题,需用应用层分析工具(Java的jmap/jstack、Go的pprof、Python的tracemalloc)定位泄漏点,并通过代码修复或重启策略临时缓解。
常见问题包括:SSH连接超时或被断、DNS解析慢、对外延迟高或丢包。排查顺序:首先确认防火墙(iptables、ufw)与安全组规则;检查SSH服务状态与日志(/var/log/auth.log);用 dig/nslookup 检测DNS响应,必要时换用公网DNS(8.8.8.8/1.1.1.1)。对于延迟与丢包,用 mtr 定位跳点并向商家反馈或调整路由;若是单向丢包可尝试调整 MTU(ip link set dev eth0 mtu 1400)或禁用TCP拥塞算法等。将关键服务绑定到多线或备用节点、使用CDN与本地缓存也能有效减轻跨国访问问题。