• 一个简单web系统的接口性能分析及调优过程


    在测试一个简单系统接口性能压力时,压到一定数量,程序总是崩溃,查看相关机器相关数据时,CPU、内存、IO占用均不高,问题自然出现在其它地方
    先介绍下系统部件架构

     

    Resin版本为:
    [root@localhost lib]# java -classpath ./resin.jar com.caucho.Version
    Resin-3.2.1 (built Fri, 17 Oct 2008 04:11:01 PDT)
    Copyright(c) 1998-2008 Caucho Technology. All rights reserved

    mysql版本为:
    Server version: 5.5.39


    在跑接口压力时,当TPS达到100时,程序当报错提示为resin重启了

    [2016-03-23 12:07:17] JDK detected deadlock. Restarting Resin.
    [12:07:17.929] {resin-41} JDK detected deadlock. Restarting Resin.
    [2016-03-23 12:07:17] "001" Id=79 BLOCKED on com.orient.dbpool.o@2726965a owned by "http--80-32" Id=59

    问题该怎么解决呢?这里先,说说性能问题瓶颈解决的一个思路:
    1、查看是否为服务器硬件瓶颈,这里涉及到CPU、内存、IO读写,我们可以通过vmstat、sar或iostat来观察;通过观察,在本例中问题不存在硬件的瓶颈
    2、网络瓶颈,可以通过查看网络利用率来确定,方式很多,这里不介绍;不过如果在局域网内、且这仅仅是一个web服务类型网站,与视频类网站不同,所以本例中也不存在网络的问题
    3、linux操作系统瓶颈,linux关于性能方面设计到的内核参数太多,这里可以参数《Linux服务器性能调整》一书,当做参考书使用;本例中,对linux TCP连接释放时间做了调整,但问题依旧;
    4、中间件瓶颈,这里指的就是第三方的中间件,比如tomcat、JVM、数据库等等,一般在网络下载后的程序,需要根据服务器实际情部分做调整;在本例中,调整了相关参数后,性能有所提高,但个别接口还有问题;
    5、应用的瓶颈,这就需要与开发一起调试,比如业务逻辑、sql的优化、算法等等

    本例中,linux内核相关参数调整,网上有更详细的参数,请自行参考:

    net.ipv4.tcp_syncookies = 1
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_fin_timeout = 30

    在本次测试中,相关中单件的调整如下:
    1、Resin 处理能务的调整:
    Resin目录下conf esin.xml文件参数调整

    <jvm-arg>-server</jvm-arg>
    <jvm-arg>-Xmx512m</jvm-arg>
    <jvm-arg>-Xms256m </jvm-arg>
    <jvm-arg>-Xss256k</jvm-arg>
    <memory-free-min>10M</memory-free-min>
    <thread-max>3000</thread-max>
    <socket-timeout>20s</socket-timeout>
    <keepalive-timeout>15s</keepalive-timeout>


    具体的调整方式,可以参考JVM的性能调优相关文章,如:http://uule.iteye.com/blog/2114697

    2、web数据库连接参数调整
    有的程序中参web连接数据的处理能力有做限制,本例中,默认初始处理能力为1,这里做修改

    dbInitialCapacity="1" (初始化处理能力)
    dbMaxCapacity="5" (最大处理能力

    3、mysql数据库性能处理调整
    具体的可参数MySQL数据库性能能调整进行,根据机器内存,CPU情况进行调整,可以参考blog:http://www.educity.cn/shujuku/692462.html
    本例中,对最大连接数、连接池做了调整

    --max_connections=1200 
    --innodb_buffer_pool_size=2500M

    4、程序内部问题,比如登陆时达到了最大的文件打开数,等等
    这里设计到内部程序这里就不例举了

    参考资料:

    linux性能调整:http://download.csdn.net/detail/machen_smiling/7736543

    mysql性能调整:http://www.educity.cn/shujuku/692462.html

    linux性能监控命令:http://os.51cto.com/art/201412/460698_all.htm

  • 相关阅读:
    BZOJ 3631 链剖+差分
    BZOJ 1103 DFS序+线段树
    BZOJ 3629 约数和定理+搜索
    198. House Robber
    152. Maximum Product Subarray
    139. Word Break
    132. Palindrome Partitioning II
    120. Triangle
    115. Distinct Subsequences
    97. Interleaving String
  • 原文地址:https://www.cnblogs.com/landhu/p/5403394.html
Copyright © 2020-2023  润新知