最近负责的一个项目全国上线,这个系统从2013年2月份开始先进行了6个城市为期4个月的试用,新增了不少关于系统可用性及系统在试用过程中业务方希望添加的功能,同时也修正了几个发现的bug。因为试用期只有6个城市,因而也没有做负载均衡,只是使用了一台web服务器;而全国上线时却有130多个城市,经测算预计访问量将增加20倍左右,为了防止访问量增加而导致web服务器性能下降,同时也为防止一台web服务器发生故障而导致全国的分站都受到影响,因而采用了多台服务器部署并配置F5负载均衡模块,在这个过程中间发现了一些之前没有注意的问题,在此进行小结:
1.每一个项目都应该有一个独立的端口号,防止多个系统部署到一台机器上出现端口冲突问题。在本次部署时,为了更好的利用服务器,将团购结算系统部署到了一台只有公司总部为数不多用户访问的服务器上,但非常不巧的是原有系统的端口号和团购结算系统的端口号是一样的,结果就是外地的用户在访问时出现这个系统中加载另一个系统css的情况。
2.域名和服务器的ip、端口映射可以随意定义,但若域名采用80作为端口号时用户在访问时就无需在域名后添加端口号,方便用户访问使用
3.若代码中包含定时任务,在部署时一定要注意确定这些定时任务是否可以重复执行,如果不能重复执行,就需要采取措施保证只有一台服务器上的定时任务会被执行
4.如果需要执行多个定时任务,并且这些定时任务间存在相互的逻辑顺序,则在执行下一个定时任务时必须先判断上一个定时任务是否已执行完成。如果没有执行完成,则需设置等待并保证能够再次尝试。
5.同时如果这些定时任务需要依赖于外部资源,比如数据库连接,在执行操作前也需判断下数据库是否能正常连接,如果不能连接,则需有应对措施。在系统上线后发生过一次结算数据结算结果为0的情况,反复查找核对了几次计算脚本,没有发现问题,并且上班时执行这些脚本也没有问题,可以计算出结果,但在凌晨时确实计算到数据。后来询问DBA才知道,在凌晨时段运维部更换数据库服务器的硬盘,暂停了数据库服务,导致在脚本执行的时间段连不上数据库,也就没有数据了。