1.
1.1 明确并发模型:区分短连接(API/静态资源)与长连接(WebSocket、推送),估算QPS、并发连接数、流量峰值与吞吐。
1.2 选择机房/提供商:优先选台湾本地机房或在台近地区的云商(如 AWS 台北合作区、Google Cloud、阿里云台北或台湾本地IDC),关注出口带宽、BGP线路、延迟与ISP直连能力。
1.3 实例规格:CPU(多核)、内存按缓存需求、SSD或NVMe、网络带宽至少按峰值1.5倍预留;如需水平扩展优先选择支持私网互联/弹性IP的云主机。
2.
2.1 系统调优(/etc/sysctl.conf):加入常用内核参数,示例: net.core.somaxconn=65535 net.ipv4.tcp_tw_reuse=1 net.ipv4.tcp_fin_timeout=15 net.ipv4.tcp_max_syn_backlog=32768
2.2 文件描述符与用户限制(/etc/security/limits.conf): * soft nofile 65535 * hard nofile 65535 并在启动脚本中执行:ulimit -n 65535。
3.
3.1 Nginx主配置建议: worker_processes auto; worker_connections 10240; use epoll; keepalive_timeout 15; sendfile on; tcp_nopush on; open_file_cache max=200000 inactive=20s;
3.2 静态资源交由CDN/缓存,开启gzip与brotli,启用HTTP/2与TLS终端卸载(可放在负载均衡层)。
4.
4.1 使用云厂商负载均衡(ELB/CLB)或部署HAProxy/LVS:LVS用于四层大并发,HAProxy用于七层健康检查与权重调度。
4.2 会话处理:应用保持无状态,Session存储Redis或其他集中式存储,或使用JWT避免会话粘性。
5.
5.1 热点缓存:将频繁读的数据(配置、商品信息、用户简单资料)缓存到Redis,设置合理TTL与降级策略。
5.2 Redis集群与持久化:使用Redis Cluster或主从+哨兵,高内存实例,配置maxmemory和eviction策略(allkeys-lru);AOF使用everysec或根据业务权衡关闭AOF提高吞吐。
6.
6.1 架构:读写分离(主库写、从库读),使用ProxySQL或MySQL Router做连接池;对写压力大的表考虑分库分表或垂直拆分。
6.2 参数调优:innodb_buffer_pool_size 设置为可用内存的60%-70%;适当调整innodb_flush_log_at_trx_commit、max_connections、thread_cache_size;使用慢查询日志并用pt-query-digest分析。
7.
7.1 将非实时任务(邮件、图片处理、统计)通过消息队列(RabbitMQ、Kafka、RocketMQ)异步处理,防止请求阻塞。
7.2 设计幂等消费、重试与死信队列,队列消费者横向扩容,即可平滑应对突发任务高并发。
8.
8.1 使用连接池(数据库/Redis),避免在请求中频繁建立连接;使用非阻塞IO或协程框架(如Go、Node.js、uvloop)处理高并发。
8.2 减少同步阻塞操作、避免大事务、使用批处理和分页查询,分页建议使用seek方法代替offset大偏移。
9.
9.1 工具:使用locust、k6、JMeter或wrk进行分层压测(WEB、API、DB连接)。先做单机压力,再做分布式压测,模拟真实流量峰值及突增场景。
9.2 验证点:响应时间、错误率、系统资源(CPU、内存、网络、磁盘IO)、连接数、队列长度,发现瓶颈逐步优化。
10.
10.1 监控项:QPS、RT、95/99分位延迟、CPU/内存/网卡/磁盘IO、连接数、队列深度、慢SQL数量。
10.2 工具与告警:Prometheus+Grafana采集展示,Alertmanager或云监控做告警,ELK/EFK做日志聚合;设置SLA阈值并制作自动化巡检脚本。
11.
11.1 弹性扩容:配置自动伸缩策略(基于CPU/队列/RT),并测试伸缩冷启动和流量切换平滑度。
11.2 灾备:跨可用区、跨机房备份数据,定期做恢复演练;数据库定期备份并验证备份有效性。
12.
12.1 DDoS与WAF:启用云厂商DDoS防护与WAF规则,限制异常连接速率、黑名单/白名单与地理封锁策略。
12.2 网络分段与权限:使用VPC私网、子网划分、安全组最小权限,控制管理口(SSH)仅允许跳板机登陆并启用双因素认证与审计。
13.
13.1 回答:先看监控面板的网络带宽、连接数、CPU与队列长度,判断瓶颈是网络、应用还是后端;同时检查是否为攻击(突增IP、异常请求模式),必要时临时启用流量限流或CDN降载。
14.
14.1 回答:立刻启用负载均衡(云厂商LB或HAProxy),把流量路由到新开通的实例;把会话迁移到Redis并取消会话粘性;对数据库读请求导向只读从库,必要时打开只读缓存层(Redis)。
15.
15.1 回答:常见忽视项包括文件描述符限制、慢查询未定期优化、日志过度写入磁盘、长连接数未调优、keepalive/timeout配置不当、以及对跨机房网络延迟估计不足。逐项排查并写成部署检查表可避免运行时故障。