1) 检查内核与发行版:uname -a;cat /etc/os-release,确保内核>=4.9以支持BBR。
2) 检查CPU、内存、磁盘与网卡:lscpu、free -m、lsblk、ethtool eth0;记录当前瓶颈。
3) 安装必要工具:apt/yum install -y sysstat iproute2 ethtool iotop perf strace fio wget curl。
1) 编辑/etc/sysctl.conf,追加并生效:sysctl -p。推荐项:net.core.somaxconn=65535;net.core.netdev_max_backlog=250000;net.ipv4.tcp_max_syn_backlog=65535。
2) TCP复用与超时:net.ipv4.tcp_tw_reuse=1;net.ipv4.tcp_fin_timeout=15;net.ipv4.tcp_keepalive_time=300。
1) 查看当前拥塞控制:sysctl net.ipv4.tcp_congestion_control;2) 启用BBR:echo 'tcp_bbr' > /etc/modules-load.d/bbr.conf;sysctl -w net.core.default_qdisc=fq;sysctl -w net.ipv4.tcp_congestion_control=bbr;3) 验证:lsmod | grep bbr;sysctl net.ipv4.tcp_available_congestion_control。
1) 临时修改:ulimit -n 200000;2) 永久修改:在/etc/security/limits.conf添加* soft nofile 200000和* hard nofile 200000,并确保systemd服务单元中设置LimitNOFILE=200000;3) 检查fs.file-max:sysctl -w fs.file-max=500000。
1) 选择SSD/NVMe并使用合适调度器:echo noop > /sys/block/nvme0n1/queue/scheduler或echo none(对SSD/NVMe优先noop/none)。
2) 挂载选项:使用noatime,nodiratime,示例:UUID=... /data ext4 defaults,noatime,nodiratime,discard 0 2。
3) 禁用透明大页:echo never > /sys/kernel/mm/transparent_hugepage/enabled。
1) 调整swappiness:sysctl -w vm.swappiness=10。
2) 控制脏页阈值:sysctl -w vm.dirty_ratio=20;sysctl -w vm.dirty_background_ratio=5;或使用vm.dirty_bytes与vm.dirty_background_bytes来精确控制。
1) NGINX配置要点(/etc/nginx/nginx.conf):worker_processes auto; worker_cpu_affinity auto; worker_connections 65536; use epoll; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 15; reset_timedout_connection on。
2) 启用accept_mutex off(高并发下根据负载调试);合理设置proxy_buffer_size与proxy_buffers以减少磁盘写入。
1) MySQL:调整innodb_buffer_pool_size占内存70%,innodb_io_capacity根据磁盘IOPS配置(SSD 1000+);启用innodb_flush_method=O_DIRECT以避开页缓存。
2) Redis:使用RDB快照或AOF策略:appendfsync everysec;把持久化目录放在独立SSD并设置noatime。
1) 压测工具:wrk、ab、siege。示例:wrk -t12 -c1000 -d60s http://ip:port/。
2) 监控指标:使用sar/iostat/vmstat/iotop收集CPU、网络、磁盘、IO等待,使用ss -s与ss -tan查看连接状态;3) 若出现TIME_WAIT/SYN_RECV增高,参考tcp_tw_reuse/fin_timeout与调高backlog。
1) 路由与延迟:优先选择距离目标用户近的区域节点并做Anycast或多线BGP;2) ISP链路检查:进行mtr/traceroute分析,必要时和机房运营商沟通调整BGP或更换链路;3) CDNs与边缘缓存配合,减轻源站并发压力。
问:启用BBR会对日本机房独服有什么风险或副作用?
答:答:BBR通常能提高吞吐与降低延迟,但在极少数旧型网络设备或负载均衡器上可能触发兼容性问题。建议在预生产或少量流量下逐步上线,监控丢包率、重传与延迟,并保留切回传统cubic的回滚步骤。
问:如何定位是网络瓶颈还是磁盘IO瓶颈?
答:答:并行使用工具:iostat -xz 1观察磁盘util与await,iftop或nethogs观察实时网口带宽,sar -n DEV查看网络吞吐,ss -s/ss -tan看连接积压。若CPU低、网口饱和则为网络瓶颈;若网口空闲而磁盘util高或await长则为IO瓶颈。
问:上线后如何做回归与长期维护?
答:答:上线先做A/B或灰度放量,持续压测并记录baseline;建立报警(连接数、iowait、disk utilization、latency);定期重跑fio/wrk回归测试;保存sysctl与服务配置版本,发生异常可快速回滚。
