频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

玩转GlassFish V2的隐藏配置

来源: 作者:IT168 子非鱼 出处:巧巧读书 2007-11-07 进入讨论组

摘要:基于向后兼容的考虑,sun在最新发布的GlassFish V2中隐藏了很多配置选项,GlassFish项目组成员Jean-Francois Arcand在本文中向广大开发人员揭示了这些隐藏的属性,希望对大家深入使用GlassFish有所帮助。

因为从GlassFish V1开始,Grizzly已经替代了Sun's Application Server (SJSAS)里面的Sun WebServer runtime,为了避免与以前的版本不兼容,官方没有公开在GlassFish的domain.xml中作为属性或者元素的一些配置选项。我们会在下一个V3版本发布的时候解决这个问题,不过现在这些隐藏的特性还在沉睡中,是时候公开它们了!下面公开的这些属性有些是高度NIO(非阻塞I/O)相关,有些不是。

-Dcom.sun.enterprise.web.connector.grizzly.selector.timeout==xxx :其中xxx表示毫秒为单位的时间,表示一个NIO Selector为了等待事件(用户请求)阻塞多长时间。缺省状态下是1000(表示阻塞一秒钟)。在一些应用环境下,增加这个值可以减少CPU占用,不过不推荐修改这个值除非你很重视CPU占用率,而这种情况最可能发生在你的服务器没有足够内存的时候。

-Dcom.sun.enterprise.web.connector.grizzly.displayConfiguration=true:把Grizzly的内部配置写入服务器log(比如创建线程的数量,多少对象被缓存等)。

-Dcom.sun.enterprise.web.connector.grizzly.enableCometSupport=true:在所有的http-listener开启Comet支持,包括Admin-gui。

-Dcom.sun.enterprise.web.connector.grizzly.useDirectByteBuffer=true:用direct ByteBuffer代替heap ByteBuffer。如果你的应用使用大量内存或者做很多写操作的话,打开直接字节缓存会提高执行效率。

-Dcom.sun.enterprise.web.connector.grizzly.pipelineClass=className: 用一个自定义的线程池替换缺省的Grizzly线程池。通过实现简单的Pipeline接口你可以很容易构造自己的线程池。

-Dcom.sun.enterprise.web.connector.grizzly.algorithmClassName=className:用一个自定义的http分析器替换现有的分析器。如果你想基于一些特定的应用请求头优化分析过程,那么这个会有帮助,不过因为它可能会打断http的处理逻辑,所以你要使用的话必须非常小心。

-Dcom.sun.enterprise.web.connector.grizzly.maxSelectors=xxx:xxx表示在未完成的读操作中用来读取更多字节的临时NIO Selector的数量。缺省值是20,不过如果你运行在一个低速的网络上,通过调节它可以在很大程度上提高执行效率。

-Dcom.sun.enterprise.web.connector.grizzly.factoryTimeout= 5000:当Grizzly试图从一个浏览器请求中读取数据的时候,当读操作发生时数据可能还没准备好。缺省状态下,线程会等待5秒钟,然后再终止请求。在一些慢速(或者快速)的网络中,修改这个值可以显着的提高执行效率(拥有更高的通过率)。

-Dcom.sun.enterprise.web.connector.grizzly.asyncHandlerClass=className:c替换缺省的Grizzly的异步请求处理(ARP)AsyncHandler实现。如果你想在应用中使用ARP的话,这个选项对你很有用。

-Dcom.sun.enterprise.web.connector.grizzly.asyncHandler.ports=8080,4848:定义支持ARP策略的端口号。

-Dcom.sun.enterprise.web.connector.grizzly.enableSnoop=true:在服务器log中存储requests/response信息。在调试的时候很有用,不过它会显着降低执行效率,因为所有的request/response字节都要被转化成字符串。

-Dcom.sun.enterprise.web.connector.grizzly.readTimeout=5000:表示Grizzly在抛弃连接以前等待读取开始的时间。如果你经常遭受DOS攻击的话,减少这个值可以显着提高你的站点效率。

-Dcom.sun.enterprise.web.connector.grizzly.writeTimeout=30000:表示Grizzly 在停止等待浏览器读取相应数据之前的等待时间。缺省情况下,如果浏览器在30秒之内没有读到全部的响应数据,Grizzly会断开连接。修改这个值有助于提高在慢速(或者快速)网络下的效率。

-Dcom.sun.grizzly.comet.notificationHandlerClassName=classname:如果你使用Comet,你可能希望通过提供自定义的通知策略来提升服务器的push效率。

-Dcom.sun.grizzly.http.bufferResponse=true:表示在发向客户端之前缓存整个响应数据。在这个情况下,因为你只需执行一次写操作而不是多次,所以它可能会提升效率。

-Dcom.sun.enterprise.web.connector.grizzly.OOBInline=true:参考JDK的定义。

-Dcom.sun.enterprise.web.connector.grizzly.protocolFinders= xxx:注入你自己的Protocol finder。如果你希望在你个服务器上打开单个tcp端口,在这个端口上同时服务于好几个协议(不止是http)的话,这个配置对你非常有用。

-Dcom.sun.enterprise.web.connector.grizzly.protocolHandlers=className:w当一个协议被发现以后(参考上一个属性),把它重定向到正确的container/server等。

上面所有的属性都需要用jvm-options元素添加到domain.xml里面:

<jvm-options>-D....</jvm-options>

同时,下面这些属性可以被增加到domain.xml里面的http-service下面:

<property name="xxx" value="xxx"/>

compression=on|off 开启|关闭http压缩。

selectorThread=className: 修改缺省的基于HTTP的SelectorThread,用你自己的实现来代替。具体作法可以用the JRuby extension 做为一个实例来参考。

rcmSupport=true:打开资源消耗管理扩展。

maxPostSize=number : 增加Grizzly可以处理的最大post数量。

cometSupport=true : 为一个特定的端口开启Grizzly Comet支持(不是所有的porhttp-listener)。

哟呼! Grizzly没有什么隐藏的地方了 :-)!

保留:: http://www.qqread.com/java/2007/11/x380334.html 更多文章 更多内容请看电脑配置手册服务器配置专栏专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章