payne 本贴是想和大家交流一下教务系统的一些策略 用于应对即将在月底面对的超级抢课大战 已做到的优化 静态文件“本地化”,减少教务系统服务器压力 静态文件缓存,减少对服务器的请求(Expires) 反向代理Keep Alive,减少教务系统连接数 高峰期限制单IP连接数、单位时间请求数 屏蔽外网机器人,屏蔽恶意脚本 限制IP对应单个服务器,不切换(避免一下子全部都崩了) 做不到的优化 教务系统程序并发优化,该系统目前已经不维护了 清除冗余数据,数据库索引重建(提高查询效率),目前已知数据库关系复杂,不好做重建索引的工作 可能采取的策略 高峰期全网强制极验验证 / SSO验证 【尽可能避免机器人】 限制并发数,单IP只有1~2个连接 限制刷新速度,单位时间刷新次数限制【重点保护验证码】 多余连接自动排队等待资源释放,控制同时进入教务系统的人数 未来的趋势 教务系统彻底更换 选课制度改为“志愿制”,完全看幸运值 “好课”继续减少
payne 教务系统背景 ASP.NET的32位程序,运行于Win2003 无Session共享 可能未考虑高并发场景 数据库数据庞大,索引也非常庞大 数据库通信链路可能是瓶颈 负载均衡的部分机器已经损坏