这周花了不少时间把应用都从AJP改成了Proxy模式了 .
从理论上说,AJP模式应该性能更高一些,它使用了压缩指令。但是由于实现上不成熟,和apache的proxyPass模块比起来,不仅稳定性差,性能上也差不少。
在一台apache 2.2.22与jboss通讯时,开始使用AJP方式,压力测试半小时后,JBOSS竟然不响应了。但是发现系统资源却很空闲。jboss的HTTP端口可以正确工作。于是先重启apache,仍然不响应。于是把AJP方式修改为proxyPass方式再重启apache,JBOSS在没有重启的又可以正确工作了,连续压力15个小时没有问题。说明JBOSS的AJP连结
池被压爆了。
以下是同一硬件设备下,同一应用进行相同的压力测试,使用AJP方式和Proxy方式的不同对比,前半段AJP方式,后半段是Proxy方式。结果如下:
1.垃圾回收明显平缓,次数大幅降低,非堆内存占用也减少:
2.所需要的线程(相同压力下)数大量减少,说明原来AJP通讯阻塞下新的请求不得不多开新线程处理。
3.垃圾回收不仅次数减少,而且每次回收所需的时间也减少。
4.下在两张图说明TPS也有小幅上升:
总之,从AJP方式改为Proxy方式后,无论是稳定性还是性能都有很大的提高。
|