3

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

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

据我所知,只要没有阻塞工作线程,Netty 的性能就会很好。

但是,我读到JDBC 连接会创建阻塞 I/O。

将 JDBC 与 Netty 结合使用来提高可伸缩性和性能是否有良好的做法?

4

2 回答 2

3

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

于 2015-04-24T14:04:47.920 回答
2

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

于 2013-12-07T23:54:26.783 回答