我们不得不开始关注并行计算的问题。在这个多核的时代,并行计算是个让人感到无比兴奋的话题。但是,很少有大连网络流量监控软件开发组织对此进行良好的规划和设计。在我们这个实例中,也是同样如此。
例如:有一些非线程安全的类被定义成了静态对象,这大大增加了线程死锁的几率;而另一些程序则通过滥用同步方法来克服对于死锁的恐惧,这导致性能大幅度降低。对并发计算有兴趣的读者,可以去阅读Brian Goetz写的Java Concurrency in Practice。
在这个实例的优化过程中,我们只使用了两个简单的方法,但效果还可以:尽量使用同步块而不是同步方法;不需要加同步锁的地方不要加。并行计算问题是大连网络流量监控软件设计和实现中无法解决的吗?不。
接着,我们开始关注网络流量。在单用户模式下,我们已经采用了一些页面压缩的方式来降低网络流量。事实上,脚本也可以进行压缩。例如,采用更简短的函数名、变量名。但更重要的是,页面本身也需要进一步简化。很显然,这种简化应该在软件设计和实现的时候进行。
数据库负载是另一个需要关注的话题。在我们的实例中,数据库负载比较轻。有兴趣的读者可以去阅读相关的参考资料。致远服软:http://www.soft8.com.cn/WebSphere本身配置的优化也是值得关注的。例如,类的最大载入数量、线程池大小、连接池大小等。这里就不再一一描述。事实上,在多用户下的性能分析和单用户下有很大的区别。在单用户下,很多性能问题可以比较精确地定位;而在多用户下,完全是个综合性的推理和分析的过程。
我们尝试整理大连网络流量监控软件在不同阶段和场景下对系统进行性能测试和调优的思路,这一定会对将来的工作有帮助。
最后,让我们来回顾一下前面的性能测试和调优过程,并用一句话来概括,那就是:保持一个简单的思路,注意经验知识的积累,不断地在解释中提高认识。
在上一节的最后,我用一句话概括了看护老人软件性能测试和性能调优的过程——保持一个简单的思路,注意经验知识的积累,不断地在解释中提高认识。我想很少有人会去挑战一些原则性的概括,然而,很多人却会对原则的实际作用表示怀疑。原因很简单,人们都相信自己在实践中获取的经验知识,而人们对于事物的认识层次存在着差异。