【问题标题】:How to use JDBC to maximize performance of Netty?如何使用 JDBC 来最大化 Netty 的性能?
【发布时间】:2013-12-25 05:32:35
【问题描述】:

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

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

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

但是,我read 认为 JDBC 连接会创建阻塞 I/O。

将 JDBC 与 Netty 结合使用以提高可伸缩性和性能是否有良好的实践?

【问题讨论】:

    标签: java mysql jdbc netty bonecp


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-01
        • 2010-09-30
        • 1970-01-01
        • 2012-06-15
        • 2017-11-27
        • 1970-01-01
        相关资源
        最近更新 更多