高性能WEB开发的性能调优(三)——系统调优

正当我们庆幸开发过程如此顺利的时候,压力测试的结果给我们敲响了警钟。

用户登录+下单的每秒事物数仅能达到100个左右,这样的速度与项目的要求相去甚远。

一、调优准备

于是,我们首先进行了各种监控设置,为调优提供必要前提:

1、远程连接JVM监测

vi  startWeblogic.sh

JAVA_OPTIONS="${SAVE_JAVA_OPTIONS}  -Djava.rmi.server.hostname=10.88.115.182-Dcom.sun.management.jmxremote.port=18999-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authenticate=false"

增加上述参数,可以使用JDK自带的jvisualvm工具进行远程监控虚拟机的健康情况。

2、启动WebLogic控制台,重点关注,

1)环境——服务器——监视——性能

主要查看堆空间百分比、堆空闲空间、CPU负载状态、物理内存使用情况,来决定虚拟机和物理机的内存分配。

2)服务器——监控——线程数

主要查看服务器当前连接线程数,挂起线程数和最大线程数。可以根据此处监控的情况,来决定服务器最大线程数的取值。

3)服务——数据源——监控

主要查看数据库连接池的活动连接数,最大活动连接数。这里需要配置JNDI数据源,虽然我们最终可能会使用c3p0,但我建议此处配置一个JNDI用于监控。等我们找到了系统瓶颈,并找到最适当的连接池大小后再切回c3p0不同。

3、可使用操作系统的top和sar -u 2 10命令,来实时观测服务器的CPU,内存,IO等的使用情况。


二、调优步骤与结果

经过我们的反复尝试,做了以下设置:

1、操作系统

Linux version 2.6.32-431.23.3.el6.x86_64 (mockbuild@c6b8.bsys.dev.centos.org)(gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) ) #1 SMP Thu Jul 3117:20:51 UTC 2014

1)可以使用ulimit -u 1200来将最大线程数提升到1200或者其它值。

但由于操作系统的限制,单用户最大线程数无法突破1200

2) vi  /etc/security/limits.conf添加weblogic soft nproc 22000即可将最大线程数调为22000

vi/etc/security/limits.d/90-nproc.conf内容编辑修改为 * soft nproc unlimited,意思是任意用户的线程不限制

修改上面两个文件,才能突破单用户最大线程数不能超过1200的限制。

2、应用服务器与虚拟机

Weblogic12 + 64位JDK7.0

1)设置最大最小堆内存:

vi  setDomainEnv.sh

        WLS_MEM_ARGS_64BIT="-Xms3g -Xmx3g" 

2)设置生产模式:

vi  startWeblogic.sh

              JAVA_VM="-server”

vi  setDomain.sh

              PRODUCTION_MODE="true"

3)设置Weblogic线程数:

 vi startWeblogic.sh

JAVA_OPTIONS后新增:

-Dweblogic.threadpool.MinPoolSize=2400 -Dweblogic.threadpool.MaxPoolSize=2400

       线程数的增加需同时调整linux用户的最大线程数,如果不调整可能会在启动时报内存溢出。


经过上述调整,我们的系统每秒事物数能够接近1000,可接受1000个用户的并发登录+下单。然而,此时我们发现,系统的能力还远远没有发挥出来——CPU负载仅达到百分之二十,3GB的虚拟机堆内存剩余1GB,2400的最大线程数剩余1400,300的数据库连接池只使用3~5。我们猜测,瓶颈应该在程序中;接下来,我们从系统调优进入到了程序调优中,来进一步提升系统吞吐率。








评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值