近日在工作上遇到这么一个问题,我们公司的应用在现场服务器环境中运行中,发现了一些问题,比如一个完整产品的某个模块处理数据的进度在产品升级后变得较之前缓慢,甚至在刷新数据方面完全失效,进而导致前台报表没有展示出近期的业务数据。在解决开始阶段,就遇到了现场的数据库超过最大连接数的情况,所以无法对失效的数据库对象进行更新等操作。无奈之下,现场运维同事就协助对数据库进行了重启,重启之后,数据库恢复服务。紧接着,主管召集大家开会,探讨针对这些运行中的问题的解决方案,一番讨论之后,结果,解决方案全是针对程序的逻辑处理过程的优化,其实这样的优化,相对目前版本来说,从程序层面来讲,理论上完全可以改善目前所暴露的问题。但是有这么一个信息,就是这次服务器上部署了多个应用,而且数据库也是公用的,这就自然而然地产生这么一个问题,产品在公司发布前,实验室的测试环境是一台服务器和专用数据库,结果没有测出某模块处理数据进度比预期慢的问题;而产品实际的运行环境中有数个应用在运行,准确地讲,是多个应用在共享有限的服务器资源和数据库的运算能力,从而产生了目前所出现的这个问题。
从问题表面上,可以这么简单地理解,就是因为程序运行所需要的资源出现了紧缺,所以在完成任务的过程中出现了异常。那么应用们在运行中,是如何争夺资源和运算能力,这些有限的服务器资源和数据库的计算能力又是如何分配给应用的呢?应用以目前的水平,在拥有多少资源和运算能力下,可以很稳定地运行呢?如何这个问题可以得到一个准确的回答,那么优化方案方面结合程序范围的解决方案的话,应该就是一个相得益彰,相当有成效的优化。这就是我今天想请教大家的问题?谢谢大家
[该贴被admin于2011-12-23 09:21修改过]