原文:http://www.mastertheboss.com/jboss-performance/jboss-as-7-performance-tuning/page-4



调优Webserver线程池

还有非常多须要调优的地方终于影响Webserver的性能。当中一个最重要的因素是调优HTTP线程池设置,以匹配web请求的负载。

这事实上是非常难做到的,但可通过调优获得最佳性能。

webserver的线程数量是通过executor的属性来设置的:

<subsystem xmlns="urn:jboss:domain:web:1.0">

<connector enable-lookups="false" enabled="true"

executor="http-executor"

max-connections="200"

max-post-size="2048" max-save-post-size="4096"

name="http" protocol="HTTP/1.1"

proxy-name="proxy" proxy-port="8081"

redirect-port="8443" scheme="http"

secure="false" socket-binding="http" />

. . .

</subsystem>

然后,在线程子系统中,能够定义将要使用的池的线程数,连同其它线程属性(參见第2章。配置应用程序server,以获取有关线程子系统具体介绍):

<subsystem xmlns="urn:jboss:domain:threads:1.0">

<bounded-queue-thread-pool name="http-executor"

blocking="true">

<core-threads count="10" per-cpu="20" />

<queue-length count="10" per-cpu="20" />

<max-threads count="10" per-cpu="20" />

<keepalive-time time="10" unit="seconds" />

</bounded-queue-thread-pool>

</subsystem>

最重要的连接器的属性是core-threadsmax-threads,这些值设置的太低,可能没有足够的线程来处理全部的请求,在这样的情况下,请求不被处理必须等待一段时间,直到还有一个请求线程被释放。

过低的值也意味着JBoss的Webserver将无法充分利用server硬件的优势。

还有一方面,要小心设置这些线程数,线程数设置过高会导致:

•    消耗大量的内存;

•    系统会消耗很多其它的时间做上下文切换。

你应该首先调查是否存在个别的请求耗用过长的时间。线程是否返回到池中?假设存在这样的情况,可能原因是。数据库连接没有释放,线程排队等待获取一个数据库连接,从而使其它请求无法得到处理。

在这样的情况下,简单地添加很多其它的线程会消耗很多其它CPU,GC更加频繁,从而使事情变得更糟。在应用程序中你能够通过採取简单的线程转储(thread dump),找出webserver线程到底在哪里堵塞。比如在这张图片中,从JConsole的线程选项卡中,通过观察它的堆栈跟踪。你能够看到看起来和以下类似的空暇线程idle thread):

还有一方面,以下的HTTP线程忙于做输入/输出操作。可能的原因是,比如Webserver正在从外部资源获取数据。

从上面的快照能够指导你怎样监视Webserver上执行的线程,仅仅需在最以下的文本框填写executor的名称(http-executor),就会显示全部Webserver线程的列表。

JBoss AS 7性能调优(三)的更多相关文章

  1. Java 代码性能调优“三十六”策

    代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是, ...

  2. Spark常规性能调优

    1.1.1     常规性能调优一:最优资源配置 Spark性能调优的第一步,就是为任务分配更多的资源,在一定范围内,增加资源的分配与性能的提升是成正比的,实现了最优的资源配置后,在此基础上再考虑进行 ...

  3. PHP 性能分析第三篇: 性能调优实战

    注意:本文是我们的 PHP 性能分析系列的第三篇,点此阅读 PHP 性能分析第一篇: XHProf & XHGui 介绍 ,或  PHP 性能分析第二篇: 深入研究 XHGui. 在本系列的 ...

  4. mysql监控、性能调优及三范式理解

    原文:mysql监控.性能调优及三范式理解 1监控 工具:sp on mysql     sp系列可监控各种数据库 2调优 2.1 DB层操作与调优 2.1.1.开启慢查询 在My.cnf文件中添加如 ...

  5. [Spark性能调优] 第三章 : Spark 2.1.0 中 Sort-Based Shuffle 产生的内幕

    本課主題 Sorted-Based Shuffle 的诞生和介绍 Shuffle 中六大令人费解的问题 Sorted-Based Shuffle 的排序和源码鉴赏 Shuffle 在运行时的内存管理 ...

  6. sql server 性能调优 资源等待之内存瓶颈的三种等待类型

    原文:sql server 性能调优 资源等待之内存瓶颈的三种等待类型 一.概述 这篇介绍Stolen内存相关的主要三种等待类型以及对应的waittype编号,CMEMTHREAD(0x00B9),S ...

  7. Jboss性能调优

    1,Jboss5调优指南 https://www.redhat.com/f/pdf/JB_JEAP5_PerformanceTuning_wp_web.pdf 1,Jboss7.1 性能调优指南 a: ...

  8. 十八般武艺玩转GaussDB(DWS)性能调优(三):好味道表定义

    摘要:表结构设计是数据库建模的一个关键环节,表定义好坏直接决定了集群的有效容量以及业务查询性能,本文从产品架构.功能实现以及业务特征的角度阐述在GaussDB(DWS)的中表定义时需要关注的一些关键因 ...

  9. web前端性能调优

    最近2个月一直在做手机端和电视端开发,开发的过程遇到过各种坑.弄到快元旦了,终于把上线了.2个月干下来满满的的辛苦,没有那么忙了自己准备把前端的性能调优总结以下,以方便以后自己再次使用到的时候得于得心 ...

随机推荐

  1. 线程、线程句柄、线程ID

     什么是句柄:句柄是一种指向指针的指针.我们知道,所谓指针是一种内存地址.应用程序启动后,组成这个程序的各对象是住留在内存的.如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址 ...

  2. QQ在线联系代码

    添加图文模块,标题地址:tencent://message/?uin=你的QQ号&Site=myqq&Menu=yes "你的QQ号"就写您自己的Q号 图片地址写: ...

  3. Android测试框架1(非原创)

    1.继承AndroidTestCase :public class JunitTest3 extends AndroidTestCase {} 2.在AndroidManifest.xml清单文件中添 ...

  4. 使用NSURLCache为NSURLRequest设置缓存

    http://m.blog.csdn.net/blog/u011439689/18734363#

  5. asp.net mvc 删除栏目、栏目下又有子栏目的处理方式

  6. 简单的批量读取外部insert文并插入DB

    package com.tongxiang.item.base.dao; import java.io.BufferedReader; import java.io.File; import java ...

  7. Form 表单常用正则验证 (收藏)

    1.^\d+$ //匹配非负整数(正整数 + 0) 2.^[0-9]*[1-9][0-9]*$ //匹配正整数 3.^((-\d+)|(0+))$ //匹配非正整数(负整数 + 0) 4.^-[0-9 ...

  8. 一个超级简单php的留言板

    第一步:配置好测试环境:(详细略了) 第二部:新建一个数据库,命名为guestbook(名字可以随便改),可以直接在phpmyadmin里面操作,在数据库里面新建一张表‘content’,表里面有4个 ...

  9. Scala学习笔记--隐式转换

    隐式转换的规则:1.无歧义规则:隐式转换唯有不存在其他可插入转换的前提下才能插入  若编译器有两种方法修正x+y 如convert1(x)+y,convert2(x)+y,会报错2.单一调用规则:只尝 ...

  10. IOS发送Email的两种方法-备

    1.openURL 使用openURL调用系统邮箱客户端是我们在IOS3.0以下实现发邮件功能的主要手段.我们可以通过设置url里的相关参数来指定邮件的内容,不过其缺点很明显,这样的过程会导致程序暂时 ...