2013-12-07 16 views
3

我正在开发一个使用Netty 4和JDBC(+ BoneCP进行连接池)的HTTP应用程序服务器。如何使用JDBC来最大化Netty的性能?

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

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

但是,I read表示JDBC连接创建了阻塞I/O。

在Netty中使用JDBC来提高可伸缩性和性能有什么好的做法吗?

回答

2

确保您有足够的数据库连接,显然,如果您的池无法连接,您的工作人员将阻止等待连接。工作人员将等待新的连接(如果池允许增长),或者等待连接返回。否则,请使用常规最佳做法。用setFetchSize()调整您的读取,并使用批处理进行写入。最大限度地减少往返行程,并只提取所需的数据。你有特定的代码(或查询)很慢吗?

2

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