优化 GlassFish
来源:互联网 发布:环球易购 知乎 编辑:程序博客网 时间:2024/05/01 00:31
优化 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 修改为 10000000。keepalive 似乎存在一个问题,因为增加其计数实际上并不会阻止服务器建立新连接。为解决此问题,我们将 TCP_TIME_WAIT_INTERVAL 修改为 1000,并增加了文件描述符限制。
优化垃圾收集(Garbage Collection)
<jvm-options>-Xms3400m</jvm-options>
<jvm-options>-Xmx3400m</jvm-options>
<jvm-options>-XX:UseParallelGC</jvm-options>
<jvm-options>-Xmn256m</jvm-options>
使用并行收集程序可以将 GlassFish 性能提升为 27K,如 图 1 所示。在 4 核系统上使用并行收集程序之后,原来默认收集程序出现的暂停情况消失了。将堆大小从 1400m 增加到 3400m 也可以改进性能。将其进一步增加到 7m 可以实现更大的性能提升。(GlassFish 可能与 64 位 JVM 之间存在一些问题,我们并没有尝试这一组合。)
- 优化 GlassFish
- GlassFish v3 优化经验分享
- GlassFish
- GlassFish
- GlassFish
- glassfish
- glassfish
- linux下glassfish的优化管理界面登…
- GlassFish FAQ
- 关于GlassFish
- GlassFish FAQ
- GlassFish FAQ
- GlassFish FAQ
- GlassFish FAQ
- GlassFish FAQ
- GlassFish FAQ
- GlassFish FAQ
- GlassFish FAQ
- 修改MyEclipes的发布路径
- 文本搜索引擎 和 视频搜索引擎 哪个好?
- Java Exception 处理之最佳实践
- shell文件存在的判断 shell数组
- Character decoding failed. Parameter skipped.
- 优化 GlassFish
- Lucene漫谈(二)
- 老调重弹:const char*, char const* and char *const
- 通过hibernate session.connection()获得数据库连接时,导致的查询缓慢甚至假死机问题
- 演练:打包智能设备解决方案以便进行部署
- 多线程有几种表示方法,都是什么?同步有几种实现方法,都是什么?
- 惠普前总裁孙振耀指点职业规划
- C#的数据类型
- C++ 常考笔试题汇总