上个星期对平台开发系统进行了首次压测,在晶晶的压力测试帮助下,终于将IBM R61的本本跑出了2100用户的好成绩(Tomcat6+Oracle11g+PlatForm+Ubuntu8.10)!

另,不过细节过程可能忘记了,晶晶表介意,大概吧事实讲述清楚,好不!!:)

楔子:

压力测试,通过对tomcat6的逐步优化,终于让IBM R61压测用户跑上了2100人,有点极限的样子,单在整个测试过程中除了系统cpu资源使用100%之外,硬盘响应几乎为无,测试完成后整个系统保持稳 定,无崩溃迹象,这说明本本局限了在线压力的继续提高(毕竟不是服务器),呵呵,好了,不介绍了,开始讲述,故事正在开始……

第一章  三百已是才能尽,五百哪敢去高攀

初始开始压力测试时,定的目标为3000户在线并发的目标(虽然最后也没有成,但还是比较欣慰的,毕竟是用本本,不是在主业Web服务器上测试), 作为适应性的第一测试,只将用户压力定在了500。当晶晶同学将压力并发测试系统准备好,并完成第一轮测试时,都绝望了–通过用户数仅仅为280人左 右,晶晶同学告诉我“估计你的本本300用户已经是极限了”。于是,在他的要求下从200开始测试,我无奈的同意了……^>^|||

第二次两百用户的测试非常顺利的通过,各环节耗时除登录耗时占用比例交大外,其余各阶段都非常合格。测试过程中,系统cpu资源只提升了5%不到, 硬盘无消耗,本本上的各项操作也非常正常,无任何延时现象,数据库链接监控发现最大链接数没有突破10。这,这……,这就有点不正常了,压测过程系统过于 平静、清闲了点。开始和“王老五”分析数据库原因,突然一拍脑袋,这正是“机关算尽太聪明、反害了卿卿(R61)性命……”


第二章 王老五随语惊梦人,鱼财主死抠算线程

“老五呀,数据库线程怎么一点点压力都没有,R61也是,整个压测跟玩似的清闲,这很不对劲”,我沮丧的对着王老五说着。王老五撇了我一眼,有转头 紧盯着oracle资源监控系统,然后就是点头和“是呀”的回答。我是有点抓狂了,也跑到王老五的笔记本前看着那些代表数据资源的绿条条,心里就纳闷了, 怎么就不红呢,红了就好了……。正在我想的时候,王老五随口来了句“链接数相当少,线程压力几乎没有嘛”。惊,绝对的惊,出了一脑门子的汗,……

“对,线程,……,嗯,这和哪里关联着呢,到底这扇门通向哪里??”我不停的想着,考虑着,眼前已经出现了门,我正在不停的拽那个把手,那个门后面应该就是“我所需要的……”

对了,Ajax Web 访问时线程访问频繁,tomcat执行线程为单线程响应方式,数据链接数极低(不到10),说明线程池使用效率也同样低,过多用户多处于等待执行线程的状 态,这也刚好验证了晶晶的测试失败原因–链接超时。那到底是什么导致tomcat线程池使用能力不足呢?这时,我突然想到,Ubuntu系统是一个基于 Linux的系统,一般的系统用户都是被强制受限的,比如,单线程打开文件最大数、用户最大线程数、打开文件最大尺寸、最大内存使用限制……等等。可是普 通Ubuntu用户组用户是不允许使用调整命令“ulimit”;而且Ubuntu的root用户是被锁死的;sudo命令执行,结果是shell中没有 “ulimit”命令(sudo: ulimit: command not found)。

这正是“门前已扫五升雪,瓦上还聚三升霜……”


第三章 鱼头大海捞虾米,布图怯怯启Root

1、创建root用户:

sudo passwd root

注:根据提示设置root用户密码(创建root用户)

2、允许root用户登录

点击 System (系统)-> Preferences(系统管理) -> Login Window(登陆窗口) 菜单,并切换到 Security(安全) 选项页,然后选中其下的“Allow local system administrator login”(允许本地系统管理员登陆)选项。

3、禁用Root用户

sudo passwd -l root
------------------------------------

另类改变方法:

1.设置好root密码!
$ sudo passwd root
2. 屏蔽gdm改用终端登录
$ sudo mv /etc/rc2.d/S13gdm /etc/rc2.d/s13gdm
3. 重启计算机
4. 以root登录并startx可以了!系统怎样改都行了,小心哦!!
5. 恢复gdm方式(如果你的gdm可以正常工作的话)
$ sudo mv /etc/rc2.d/s13gdm /etc/rc2.d/S13gdm
6. 重启计算机!!

这正是“书到用时方恨少,事非经过不知难……”


第四章 调教TOM晶晶叫好,布图吃饱硬盘不保

1、开启Root用户后,使用root用户登录,调整Linux系统限制,如下:

ulimit -n 65533

ulimit -u unlimited

进入tomcat目录,启动:

./catalina.sh run

看着终端的屏幕开是刷,显示出清晰的tomcat6的启动日志

晶晶的压力测试直接500,在未做其余任何调整的情况下通过,其中表单提交过程耗是在12秒左右,稍微慢了点,王老五反应数据库链接数突破到19后停滞,那么继续优化

2、调整platform数据源的线程设置

假设发布目录为Webroot,那么在WebRoot/META-INF/下建立context.xml文件,调整数据源配置

(注:tomcat6才能支持发布目录数据源配置,以前的版本改文件路径在tomcat安装路径下的conf目录中)

context.xml文件内容如下:

<?xml version=”1.0″ encoding=”UTF-8″?>
<Context path= “/WebRoot ” privileged= “true” reloadable=”false”>
<Resource name=”sysDataSource” auth=”Container”
type=”javax.sql.DataSource” maxActive=”5000″ maxIdle=”300″ maxWait=”60000″
logAbandoned=”true” username=”yfjz” password=”password”
driverClassName=”oracle.jdbc.driver.OracleDriver”
url=”jdbc:oracle:thin:@10.10.10.XX:1521:al32″ />
<Resource name=”yfjzDataSource” auth=”Container”
type=”javax.sql.DataSource” maxActive=”4000″ maxIdle=”200″ maxWait=”60000″
logAbandoned=”true” username=”yfjz” password=”password”
driverClassName=”oracle.jdbc.driver.OracleDriver”
url=”jdbc:oracle:thin:@10.10.10.XX:1521:al32″ />
</Context>
(注:再次测试300户时,数据链接监控发现线程上到199,线程已经解禁了)

3、调增tomcat6响应池:

查找tomcat6安装目录下conf目录中的server.xml文件,进行编辑

屏蔽tomcat默认Connector:

<!–

<Connector port=”8080″ protocol=”HTTP/1.1″
connectionTimeout=”20000″
redirectPort=”8443″ />

–>

创建高线程的Connector:

<Connector port=”8080″ redirectPort=”8443″
maxHttpHeaderSize=”8192″ useBodyEncodingForURI=”true”
minProcessors=”100″ maxProcessors=”5000″
maxThreads=”5000″ minSpareThreads=”1000″ maxSpareThreads=”4000″
enableLookups=”false” acceptCount=”3500″
compression=”on” compressionMinSize=”2048″
compressableMimeType=”text/html,text/xml,text/javascript,text/css,text/plain”
connectionTimeout=”60000″ disableUploadTimeout=”true” debug=”0″ URIEncoding=”UTF-8″/>
(注:加入响应线程数控制,加入压缩传递模式,调整超时设置,屏蔽调试模式)

4、增加tomcat6启动内存:

查找tomcat6安装目录下bin目录中catalina.sh文件,在开始增加如下:

JAVA_OPTS=” -Xms1400m -Xmx1400m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true ”

5、增加oracle响应线程数:

王老五将oracle数据线程响应定为1000,这是测试用的,同时监控oracle链接资源

(想知道这个怎么设置的,认识王老五的就找他聊聊,不认识的就网上找找吧,呵呵)

6、开始压测1000户

晶晶开始测试后,确发现有十来户一直处于等待状态,R61本本cpu资源从96%降到10%以下,硬盘灯狂闪,Desktop系统操作响应减缓

使用硬盘资源检查命令发现,硬盘使用资源为100%,说明硬盘满了,系统在寻找缓存操作,硬盘和内存疯狂交互

这真是“一波刚平一波起,平湖落石浪千层……”


第五章 查硬盘日志累计,斩输出平台生春

通过查找,系统硬盘资源撑爆的原因是tomcat日志和platform日志无限追加的原因,解决办法如下:

1、调整platform日志log4j.properties

将首行的“log4j.rootLogger = DEBUG, A1, A2”改为“log4j.rootLogger = INFO, A1”

(注:很简单吧:-)

2、调整tomcat6的日志输出

将下面内容注释掉:

handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4admin.org.apache.juli.FileHandler, 5host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

(注:行首加#号就行)

3、晶晶继续压测,结果定在2100多户左右

尾声:

从整个过程来看,PlatForm在抗压性上表现突出,自始至终未出现崩盘情况,所有失败用户的错误提示都为“time-out”,只是登录响应时间占总流程比重稍高,仍续继续调整;该测试可以说改变了我对tomcat的定义,在各项优化做足的情况下,tomcat抗压能力优秀, 也从未崩盘,只是单线程响应是一直诟病的,反映在当集群用户出现是表单响应时间便长,致使我不得不增大了超时时间(原来定在20秒,后来调整到1分钟); 系统容载量是一个综合性的过程,在整个压测环节中每一步都十分重要,不能仅仅依靠某一个环节的优化就可以安了,在2100户时,数据库链接超过800线, 系统cpu使用量高达96%,硬盘资源几乎不耗费,这说明2G的内存在处理足够多的事物。

以上是IBM R61 2G内存本压测从200用户到2100用户通过的过程,请需要的人借鉴,也希望多提宝贵意见。

(注:Tomcat6 Connector配置参考了javaeye的配置;部分人物表现有虚构情节,望涉及人员一笑了事)

Tomcat6优化汇总–让R61本本也能跑上两千相关推荐

  1. 如何优化WebAPP性能:从五个层面上彻底优化前端项目性能

    如何优化WebAPP性能:从五个层面上彻底优化前端项目性能 资源层面上的优化 该项措施可以帮助我们优化 FP.FCP.LCP 指标. 压缩文件.使用 Tree-shaking 删除无用代码 服务端配置 ...

  2. 如何优化WebAPP性能:从四个层面上彻底优化前端项目性能

    如何优化WebAPP性能:从四个层面上彻底优化前端项目性能 资源层面上的优化 该项措施可以帮助我们优化 FP.FCP.LCP 指标. 压缩文件.使用 Tree-shaking 删除无用代码 服务端配置 ...

  3. trainlm算法c语言,粒子群优化的BP神经网络模型对C、Mn两种元素收得率的预测

    粒子群优化的BP神经网络模型对C.Mn两种元素收得率的预测 来源:用户上传 作者: 摘 要:本文首先对数据进行处理,利用收得率公式求出历史收得率:并利用已知的影响元素收得率的主要影响因素结合BP神经网 ...

  4. 游戏的汇总,在github和码云上找的,主要是安卓游戏,还有垃圾分类游戏

    游戏的汇总,在github和码云上找的,主要是安卓游戏,还有垃圾分类游戏 文档:测试垃圾分类游戏 和安卓原生代码写的?.. 链接:http://note.youdao.com/noteshare?id ...

  5. 考虑风光火储的微电网优化调度 考虑风电、光伏、热电机组和储能优化调度,其中负荷考虑冬季或夏季两种场景,并且考虑晴天、多云、雨天、多风和少风场景

    考虑风光火储的微电网优化调度 软件:Matlab+cplex 介绍:考虑风电.光伏.热电机组和储能优化调度,其中负荷考虑冬季或夏季两种场景,并且考虑晴天.多云.雨天.多风和少风场景,对风机考虑相应的故 ...

  6. 考虑风光火储的微电网优化调度 介绍:考虑风电、光伏、热电机组和储能优化调度,其中负荷考虑冬季或夏季两种场景

    考虑风光火储的微电网优化调度 软件:Matlab+cplex 介绍:考虑风电.光伏.热电机组和储能优化调度,其中负荷考虑冬季或夏季两种场景,并且考虑晴天.多云.雨天.多风和少风场景,对风机考虑相应的故 ...

  7. 用贝叶斯优化做巧克力曲奇,谷歌这项研究登上了NeurIPS

    丰色 发自 凹非寺 量子位 | 公众号 QbitAI 用贝叶斯优化来改良饼干配方,还顺便发了个顶会?! 这样的跨学科研究你玩过吗? 这不,谷歌大脑的几位研究人员就干了这么一件事. 他们和人类厨师.评分 ...

  8. tomcat6 优化初步

    必须要配置环境变量 才可以使用 Apache Portable Runtime 技术 http://tomcat.apache.org/download-native.cgi 如果使用的是解压方式的t ...

  9. Android内存优化汇总

    写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上把网上搜集的各种内存零散知识点进行汇总.挑选.简化后整理而成. 所以我将本文定义为一个工具类的文章,如果你在A ...

最新文章

  1. [转]阿拉伯数字转一二三和壹贰叁
  2. vi 编辑器基本使用
  3. java读取http请求中的body
  4. 服务器排障 之 nginx 499 错误的解决
  5. 架构师必须知道的架构设计原则
  6. 【渝粤教育】国家开放大学2018年秋季 1080t工程数学(本) 参考试题
  7. 用自定义注解做点什么——自定义注解有什么用
  8. 京东企业租赁11.11:新用户数环比增长786% 订单量环比增长519%
  9. 不花钱的pdf编辑器_真香!免费pdf处理工具,等你来拿。工作又轻松了一步
  10. 迎接2019多校联合新生训练赛(2018/12/31)
  11. ACDsee_14中文许可证秘钥
  12. Shell设置环境变量
  13. 计算机专业学微机原理与接口技术,信息技术学院计算机科学与技术专业《微机原理与接口技术.doc...
  14. “记忆宫殿”等五大方法,拯救你衰退中的记忆力
  15. vue实现非同源图片的下载功能--跨域问题(解决浏览器打开图片,而不是下载)
  16. 2018年第九届蓝桥杯B组第四题:摔手机题解
  17. 用“约苗“平台,查看疫苗科普,预约疫苗接种!
  18. 硅谷印度工程师越来越多,把种姓歧视也带来了
  19. html的meta标记大全(转自百度)
  20. 利用js写的见缝插针小游戏

热门文章

  1. 解决mui框架off-canvas侧滑超出部分隐藏无法滚动问题
  2. vscode中主题背景文字的设置
  3. 职称计算机 合格标准,计算机职称考试报名方式及合格标准是什么
  4. 如何提高自己的学习能力
  5. s32k144 芯片中关于软件看门狗(wdog)模块的使用
  6. python发送手机验证码_[python发送短信验证码不用三方模块]python发送短信验证码...
  7. js文件上传—图片压缩
  8. linux下装QQ,64位系统
  9. UNITY·鼠标点击地面角色移动
  10. 本周完美国际新网通天羽区龙吟天下城战