淘宝商城(天猫)高级技术专家.3年研发+3年性能测试调优/系统测试+4年团队管理与测试架构、研发系统实践. 新舞台新气象, 深化测试基础架构及研发架构,希望能在某个技术领域成为真正的技术大牛。欢迎荐才http://bbs.51testing.com/viewthread.php?tid=120496&extra=&page=1 .邮件: jianzhao.liangjz@alibaba-inc.com,MSN:liangjianzhao@163.com.微博:http://t.sina.com.cn/1674816524

发布新日志

  • java大型网站系统调优

    2007-08-12 20:52:54

    架构核心:

     jboss4_05 + apache2.059+ mod_jk (1.4) + oracle 9i。 其中jboss采用自带的连接池,而非dbcp。

    调优分为多个层面

    1 apache 采用worker PMP模型

      httpd.conf

      Timeout 50
    KeepAlive On
    MaxKeepAliveRequests 30
    KeepAliveTimeout 25

    StartServers         2
    ServerLimit          500
    MaxClients           1500
    MinSpareThreads      50
    MaxSpareThreads      1500
    ThreadsPerChild      50
    MaxRequestsPerChild  10000

    适当放大ServerLimit  ,MaxClients . MaxClients有效取值范围<=ServerLimit  

    2 jboss server.xml

        <Connector port="8009" address="${jboss.bind.address}"
             emptySessionPath="true" enableLookups="false" redirectPort="8443"
             maxThreads="250" maxProcessors="350" minSpareThreads="30" backlog="400"
             connectionTimeout="600000" protocol="AJP/1.3"/>

     3 jvm参数

     -server -Xms1536m -Xmx1536m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=96m -XX:MaxPermSize=96m -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -Djboss.platform.mbeanserver

     4 workers.properties


    worker.localnode.connection_pool_size=50
    worker.localnode.connection_pool_minsize=25
    worker.localnode.connection_pool_timeout=600

    # Load-balancing behaviour

     

      5 oracle-ds.xml

        <connection-property name="SetBigStringTryClob">true</connection-property>
        <connection-property name="defaultRowPrefetch">50</connection-property>
        <driver-class>com.alibaba.jdbc.AlibabaDriver</driver-class>

        <min-pool-size>2</min-pool-size>
        <max-pool-size>125</max-pool-size>
        <blocking-timeout-millis>5000</blocking-timeout-millis>
        <idle-timeout-minutes>1</idle-timeout-minutes>
        <max-idle-timeout>3</max-idle-timeout>
        <prepared-statement-cache-size>50</prepared-statement-cache-size>
        <metadata><type-mapping>Oracle9i</type-mapping></metadata>
        <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>

     

      6 oracle 放大open cursor以及process数目。当然SQL tuning是性能调整重中之中。

     

     

  • eclipse java性能分析工具tptp应用

    2007-03-16 21:14:00

    Tptp使用指南

    1.   参考

    http://www.eclipseworld.org/bbs/read.php?tid=3111&page=e

     

    2.   下载

    http://www.eclipse.org/downloads/index_project.php

     

    eclipse-SDK-3.2M6-win32.zip http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops/R-3.2-200606291905/eclipse-SDK-3.2-win32.zip

           xsd-runtime-2.2.0.zip

           emf-sdo-runtime-2.2.0.zip

           uml2-M200607270400.zip

           tptp.runtime-TPTP-4.2.0.1.zip    runtime libhttp://www.eclipse.org/downloads/download.php?file=/tptp/4.2.0.2/TPTP-4.2.0.2-200608021100/tptp.runtime-TPTP-4.2.0.2.zip

      tptpdc.win_ia32-TPTP-4.0.1-200510031151.zip   Agent controllerhttp://www.eclipse.org/downloads/download.php?file=/tptp/4.2.0.2/TPTP-4.2.0.2-200608021100/agntctrl.win_ia32-TPTP-4.2.0.2.zip

    3.   安装

        先安装好jdk1.5,eclipse。并且配置好JAVA_HOME,CLASSPATH=rt.jar

           再解压缩

    xsd-runtime-2.2.0.zip

           emf-sdo-runtime-2.2.0.zip

           uml2-M200607270400.zip

           tptp.runtime-TPTP-4.2.0.1.zipeclipse目录。 关键是子目录与eclipse目录一致! 

           解压tptpdc.win_ia32-TPTP-4.0.1-200510031151.zipD:\tptpdc.win_ia32-TPTP-4.0.1

     

    \bin\SetConfig.bat生成config\serviceconfig.xml文件。

    <?xml version="1.0" encoding="UTF-8"?>

    <AgentControllerConfiguration activeConfiguration="default" filePort="10005" isDataMultiplexed="false" jvm="D:\Sun\AppServer\jdk\jre\bin\server\jvm.dll" loggingDetail="LOW" loggingLevel="INFORMATION" port="10002" processPolling="true" securedPort="10003" version="4.0.0">

        <AgentControllerEnvironment configuration="default">

               <Variable name="JAVA_PATH" position="replace" value="d:\sun\appserver\jdk\jre\bin\java.exe"/>

               <Variable name="RASERVER_HOME" position="replace" value="D:\tptpdc.win_ia32-TPTP-4.0.1"/>

               <Variable name="PLUGINS_HOME" position="replace" value="%RASERVER_HOME%\plugins"/>

               <Variable name="PATH" position="prepend" value="%RASERVER_HOME%\bin"/>

               <Variable name="SYS_TEMP_DIR" position="replace" value="C:\DOCUME~1\JIANZH~1.LIA\LOCALS~1\Temp"/>

               <Variable name="LOCAL_AGENT_TEMP_DIR" position="replace" value="%SYS_TEMP_DIR%"/>

               <Variable name="CLASSPATH_ORG_APACHE_JAKARTA_COMMONS_LOGGING" position="append" value="%PLUGINS_HOME%\org.apache.jakarta_commons_logging_1.0.3\commons-logging.jar"/>

               <Variable name="CLASSPATH_ORG_ECLIPSE_CORE_RUNTIME" position="append" value="%PLUGINS_HOME%\org.eclipse.core.runtime_3.1.1.jar"/>

               <Variable name="CLASSPATH_ORG_ECLIPSE_EMF_COMMON" position="append" value="%PLUGINS_HOME%\org.eclipse.emf.common_2.1.0.jar"/>

               <Variable name="CLASSPATH_ORG_ECLIPSE_EMF_ECORE" position="append" value="%PLUGINS_HOME%\org.eclipse.emf.ecore_2.1.0.jar"/>

               <Variable name="CLASSPATH_ORG_ECLIPSE_EMF_ECORE_XMI" position="append" value="%PLUGINS_HOME%\org.eclipse.emf.ecore.xmi_2.1.0.jar"/>

               <Variable name="CLASSPATH_ORG_ECLIPSE_TPTP_PLATFORM_MODELS" position="append" value="%PLUGINS_HOME%\org.eclipse.tptp.platform.models_4.0.0\tptp-models.jar"/>

               <Variable name="CLASSPATH_ORG_ECLIPSE_TPTP_PLATFORM_MODELS" position="append" value="%PLUGINS_HOME%\org.eclipse.tptp.platform.models.nl1_4.0.0\org.eclipse.tptp.platform.models.nl1.jar"/>

               <Variable name="CLASSPATH_ORG_JUNIT" position="append" value="%PLUGINS_HOME%\org.junit_3.8.1\junit.jar"/>

               <Variable name="CLASSPATH" position="append" value="%CLASSPATH_ORG_ECLIPSE_CORE_RUNTIME%"/>

        </AgentControllerEnvironment>

        <Application configuration="default" executable="java.exe" location="%SYS_TEMP_DIR%" path="%JAVA_PATH%"/>

        <Hosts configuration="default">

               <Allow host="LOCAL"/>

        </Hosts>

        <Plugin path="%PLUGINS_HOME%"/>

    </AgentControllerConfiguration>

     

    环境变量:RASERVER_HOME=D:\tptpdc.win_ia32-TPTP-4.0.1。另外,环境变量path加入d:\tptpdc.win_ia32-tptp-4.0.1\bin

     

    点击RAServer.exe启动。

    4.   监控java应用

     

    5.   监控tomcat应用

    下载apache-tomcat-5.5.17

     

    http://tomcat.apache.org/download-55.cgi#5.5.17点击Windows Executable

     

    修改catalina.batjava参数加入-XrunpiAgent:server=enabled

     

    if not "%SECURITY_POLICY_FILE%" == "" goto doSecurity

    echo "not  securiyt"

    %_EXECJAVA% -XrunpiAgent:server=enabled %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% 

     

    激活startup.bat

     

    Elipse建立 profile

    加入agent.

     

    加入monitor

     

    点击profile.

     

    点击start monitoring !

     

    详细图

     

     

    浏览器ie:

    http://localhost:8080/servlets-examples/servlet/RequestParamExample发起请求

     

    然后右键点击pause monitoring暂停。而disattach from agent则强行停止tomcat服务。

    然后双击内存,时间,代码覆盖打开详细的图

423/3<123
Open Toolbar