2010-06-17 77 views
2

我正在开发一次可以接收100条消息的JMS应用程序(独立多线程Java应用程序),它们需要处理并且数据库过程需要被要求插入/更新数据。程序非常繁重,因为验证也在其中执行。每个程序都需要大约30到50秒的时间来执行,并且它们可以同时运行。 我担心的是对所有100条消息执行100个程序,并且在jms应用程序的时间限制内发送90秒。 没有要使用的应用服务器(需求)和数据库是Teradata(RDBMS)与数据库的连接限制和应用程序中的Java线程数

我正在使用连接池和线程池在Java代码和测试代码与90连接。 问题是:

(1)一次应该限制与数据库的连接数量? (2)一次推荐多少个线程?

感谢, 乔蒂

回答

1

90似乎想了很多。我的建议是以此为基准。你的标准是独一无二的,你需要确保你获得最大的吞吐量。 我将使代码可配置为您使用多少个并发连接,并使用10 ... 100个连接一次运行10个连接来运行它。这不应该花很长时间。当你开始放慢速度时,你知道你已经超出了同时运行的好处。
多次确保您的结果可预测。

0

另一个值得关注的问题是您的“程序需要大约30到50秒才能运行”。这段时间有多少时间是通过Java处理的,以及等待数据库处理SQL语句需要多少时间?是否应该添加两次以确定您需要的最大连接数?

一般来说,如果可能的话,在处理完你的java逻辑之后,你应该得到一个连接,使用它并尽可能快地关闭它。如果可能的话,你应该避免获得连接,做一堆java端处理,调用数据库,做更多的java处理,然后关闭连接。可能没有必要持续打开连接。在做这种方法时要谨记的一点是,您需要在单个事务中保留哪些处理(包括数据库访问)。

例如,如果运行50秒钟,只需要1秒的数据库访问,那么您可能不需要如此高的最大连接数。

相关问题