先自我介绍一下吧:我在一家专为旅行服务机构提供各类信息系统技术支持的it外包公司工作,平时主要负责设计软件架构与基础设施解决方案.我们有一套复杂的应用程序,在大部分工作时间内,它都是cpu-bound的(即:接近占用100%的 cpu 处理能力).从美国东部标准时间每天早上6:00到西部标准时间下午6:00(即:东部时间晚上9:00)是我们的计算机系统最繁忙的时间段,但是,由于我们的客户遍布世界各地,所以,我们的系统几乎是以30天为一个周期.每周7天.24小时地不间断运行,而且系统的可用性需要达到五个九(99.999%)的标准.在我们公司,所有的应用程序安装在一套运行linux的四路处理器系统上的.其中三个处理器是用来运行应用程序实例的,与第四个运行mysql数据库的本地复制/应用程序实例的处理器连接在一起.为了扩大存储空间,我们又在它的上面连接了更多的处理器.当应用程序在运行时,它会根据一套lru算法,将它从数据库内调用的记录子集保存在缓存内.
我有两个问题想请教: 【程序编程相关:RAID功能】
现在,有两类情况是我们最担心的,一个是更新数据库,一个是升级应用程序的版本.每次当我们更新数据库时,所有的应用程序将会开始读取当前更新的记录,导致出现大量的数据抢占(即多个任务进程尝试着同时访问同一个资源的情况)的情况,并引发i/o等待状态,从而降低了cpu的利用率;如果碰上第二种情况,即安装了新的应用程序版本之后,它的运行速度将会大为下降,直到大部分数据都会加载到应用程序的内存中为止,情况才会得到改观,不过,你也知道,加载数据块是需要耗费大量时间的.到目前为止,存储过程还没有受到太多关于应用性能方面的关注.相比之下,我们优化了应用程序,优化了数据库,就算是购买cpu也会挑速度最快的. 【推荐阅读:深入剖析NAS系统(1)】
... 下一页