快速业务通道

通过LRWP加速Java技术 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
修改,我们引入了一个 ContextAssistantManager 对象来管理 RequestHandlers 列表。这种方法不用再 添加或删除请求处理程序,ContextAssistantManager 将跟踪使用中的处理程序 并且对相同上下文的请求会将 servlet 线程置于休眠状态。

ContextAssistantManager 代码段:

class ContextAssistantManager {    public synchronized HttpProxyService getPeerService() {      ProxyServiceWrapper wrpSvc = null;      if(vectSize == 0) {        return null;      }      do {        if(lastExec < 0 || lastExec > vectSize)          lastExec = 0;        wrpSvc = (ProxyServiceWrapper)vect.get(lastExec);        lastExec++;      } while (!(wrpSvc.isFree()));      return wrpSvc;    } }

代码示例 1:ContextAssistantManager 代码段

通过LRWP加速Java技术(3)

时间:2011-07-08 Sun / Dmitry Isakbayev

可改进性能的其他修改:

避免多个副本

编写代码时使用函数调用返回值作为检查条件,比如说:

if (getValue() == null) {    error; } else {    String value = getValue(); } 开销较大,因为 getValue 生成两个 String 对象或者返回对象类型。这段代 码需要改为: String value = getValue(); if (value == null) {    error; }

避免分配字节数组

发送给套接字的(或从套接字接收的)网络代码需要使用字节的格式。因此如 果数据为 String 格式则需要将其转换为字节格式,从而分配字节数组发送或接 收数据。除了使用 String 和字节数组存储数据之外,还可以使用直接映向缓冲 区(如 ByteBuffer)的方式,这样可以允许创建并销毁这些对象。比如说,如果 要向对等体发送一个请求,可以在 StringBuffer 中创建报头,然后将其转换为 String 以访问字节。还可以使用 ByteBuffer 来存储数据,并且可以使用 CharBuffer 来创建视图,而不是使用 StringBuffer 或 String。这同样适用于 返回应答消息。

优化 GlassFish

优化 HTTPConnector Grizzly

GlassFish 的 HTTPConnector、Grizzly 默认将使用 NIO 处理客户机请求的 连接。New Input/Output (NIO) 是 JDK 1.4 引入的 IO 机制,它提供了可伸缩 的网络的文件 IOI,以及本地缓冲管理功能。NIO 引入了通道(channel)的概念 ,允许流(stream)成为通道。SocketChannel 是可选择的通道,并且允许选择 读取或写入多个流。有了它,将不再需要为每个连接使用一个单独线程。因此服 务器现在可以只使用少许线程处理多个客户机连接,从而提高性能并减少了线程 开销。SocketChannel 可以是闭塞的也可以是非闭塞的。Grizzly 同时提供了闭 塞和非闭塞实现,并且默认情况为非闭塞实现,它使用 2 个线程和最多 5 个线 程处理来自客户机的请求。这种方式是可优化的,将线程数量增加到 10 个可以 达到最佳性能。增加池容量也可以改进性能。池容量的增加如下所示:

<request-processing header-buffer-length-in-bytes="4096" initial-thread-count="2" request-timeout-in-seconds="30" thread- count="10" thread-increment="1"/> <keep-alive max-connections="10000000" thread-count="1" timeout-in- seconds="30"/> <connection-pool max-pending-count="14096" queue-size-in- bytes="14096" receive-buffer-size-in-bytes="14096" send-buffer-size-in -bytes="18192"/>

keepalive 也得到的增加,方法是将 max-connections 修改为 1000000

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号