应用程序的性能调整

时间:2016-06-15 12:41:39

标签: java jdbc connection-pooling websphere-8 message-driven-bean

我的应用程序的性能在高负载下大幅降低。这是基于消息驱动bean的restful api。对于每秒27次点击的平均负载,我在websphere应用服务器的两个节点中将最大服务器会话配置为20,将队列连接工厂会话池保持为20,将JDBC连接池保持为20.使用这些设置平均负载性能测试很顺利能够在没有超时的情况下在1秒内得到答复。

但是在平均负载的3倍峰值负载下,即每秒80次点击,应用程序性能不佳,超过一半的请求超时,平均响应时间高达6秒。

对于峰值负载,每个节点的最大服务器会话数增加到40,队列连接工厂会话池增加到40,JDBC连接池增加到40.通过HP Diagnostics进行监控,我发现数据库服务器的CPU利用率已经过去了非常高,即高达98%。

我的问题是,与数据库建立更多数量的连接会增加cpu利用率,还是更依赖于被触发的查询。也可以减少JDBC连接池中的连接数,或者每个MDB实例应该有一个连接

请提供一些方法,以便在峰值负载下提高性能。

1 个答案:

答案 0 :(得分:0)

对于您的具体问题,严格来说,与数据库建立更多连接可能不会显着增加数据库服务器的CPU利用率。内存占用,有点,CPU util,而不是那么多。只有当应用程序使用这些连接时,在这些连接上执行的SQL才会提高CPU利用率。可以将连接池大小减少到小于MDB的数量,但一般来说这不是一个好主意。您可以通过多种方式调整性能,一种方法是简单地通过测量DB服务器的CPU利用率。首先确定应用程序在单个连接上创建的典型和高事务负载。驱动应用程序生成典型负载,增加路径数(连接和MDB实例),直到将DB服务器CPU驱动为50%。现在,以最高的预期交易率推动应用程序。确保数据库服务器CPU利用率保持在您选择的舒适水平,可能为80%。如果它小于80%,请尝试添加连接/ MDB实例,直到它为止。如果它大于80%,则减少连接数和MDB实例数,直到接近80%。这只是调整性能的众多方法之一,当然还依赖于您能够以可预测的速率在应用程序上生成负载的事实。