昨天我们部门就系统运营4个月来的主要性能问题作了一个研讨会。随着数据量的日益壮大,系统性能缺陷也在逐渐显露。
  我们都听过一个流行的说法"唯一不变的,就是变化"。变化是不可避免的。每天系统都会产生大量新情况,有些是预期的,有些是我们未考虑到的。
  但作为一个电信级的系统如何才能够保证系统应对都种未知变化时的稳定性和健壮性呢?为了尽可能的分析这个问题,我想从设计,开发,运营,维护的角度作些分析和阐述。
  算是先抛个砖吧。
  一、 设计:
  如何一套软件都是通过可行性分析,业务流程分析,需求分析,形成软件主体能够需求,性能需求的。这里主要是讨论性能,所以功能性需求暂不讨论。最直接的,你这套软件以后的运行方式,
  人为驱动,电信级无人值守服务,软件所以要处理的数据量多大,软件需要的反应速度怎样,软件再崩溃后如何操作。。。。
  首先要根据需求确定软件的运行环境,包括硬件环境、软件环境,然后选择你的开发工具或者平台,分析软件过程中的技术难点,是否技术的盲点或者风险,是否需要技术的攻关。
  要不要监控模块或者监控线程进行保护,要不要做系统集群,要不要对数据库作迁移,要不要对特定表或者流程作专门优化,要不要把所有的异常进行记录,要不要对系统崩溃做数据保护。
  整个软件的关键流程中的瓶颈是会是什么。
  二、开发:
  1、数据库库的开发:数据库表要做好索引,这个很重要,数据库操作尽量使用存储过程去完成,禁用游标。最后每条SQL语句如果达到最优。
  2、程序代码:输入的变量是什么,变量有那些种类。处理过程有几步,那步有多种可能,那步有潜在的风险(内存的,逻辑的),输出的结果有那些。
  明天继续吧!