如何使用JDBC来最大化Netty的性能?

时间:2013-12-07 23:36:28

标签: java mysql jdbc netty bonecp

我正在使用Netty 4和JDBC(+ BoneCP用于连接池)开发HTTP应用程序服务器。

到目前为止,我正在一个处理程序上完成所有工作(涉及数据库连接的工作,HttpAsyncClient等)。每个作业完成后我关闭所有I / O.

据我所知,只要没有任何东西阻止工作线程,Netty就会表现良好。

但是,我read表示JDBC连接会创建阻塞I / O.

使用JDBC和Netty是否有良好的做法可以提高可扩展性和性能?

2 个答案:

答案 0 :(得分:2)

确保您有足够的数据库连接,显然如果您的池没有连接,您的工作人员将阻止等待连接。工作人员将等待新连接(如果允许池增长),或者等待连接返回。否则,请使用一般最佳实践。使用批处理调整您的读取setFetchSize()和您的写入。最大限度地减少往返次数,并仅获取所需的数据。您是否有特定的代码(或查询)很慢?

答案 1 :(得分:2)

正如您所知,Netty提供EventExecutorGroup来启动一个单独的线程。阻塞调用(例如JDBC连接等)应该在这个线程中完成而不是运行事件循环的那个,这样主事件循环就不会被阻塞并保持响应。