WEB运用程序无法承受少量并发问题的检测

分   析:    
         1、网络层面,带宽或网络链路?

          2、系统层面,主机资源上限?

          3、软件层面,WEB容器、连接池、SQL语句、资源等待、死锁、行级锁的持有时间?

          4、数据库层,数据库资源(CPU,IO)上限?

问题排查:
    
    1、网络层面
        
       ① 网速检测;网络稳定性检测;流量暂用检测:netlogs -d 10
        
    2、系统层面
            
       ① ECS监控:查看IOPS、CPU使用情况等多维度数据信息
       ② 内存/CPU:  htop

    3、软件层面
        
       ①不使用线程池:
          connectionTimeout = '20000'
          acceptCount = '1000'
          maxThreads = '800'
           
         线程池:
        <Connector 
               port="8009" 
               protocol="AJP/1.3" 
               maxThreads="5000" 
               executor="tomcatThreadPool" 
         />
         
         当线程数大于minSpareThread,且存在空闲线程且该线程空闲时间达到60,000毫秒后自动关闭线程。
         <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"maxThreads="1000" minSpareThreads="50" maxIdleTime="60000"/> 

        
         ② DHCP:
        maxIdle="100"   最大空闲连接数;
        minIdle="100"    最小空闲连接数;
        maxWait="-1"    最大等待时间,-1不限制;
        maxActive="100" 最大连接数;

           C3P0:
        cpool.checkoutTimeout=10000

        cpool.minPoolSize=50
        cpool.initialPoolSize=5
        cpool.maxPoolSize=500

        cpool.maxIdleTime=60

        cpool.acquireIncrement=5
        cpool.maxStatements=200
        cpool.idleConnectionTestPeriod=60
        
        ③ SQL优化,降低行级锁的持有时间 或者 使用乐观锁解决行级锁持有时间
    
    
    4、数据库层面
    
       ① 阿里云DMS检测QPS/TPS/RT等各方面的一个数据

       ② 查看最大连接数:show variables like '%max_connection%'
          设置最大连接数:set global max_connections=1000; 或设置my.cnf

          查看所有用户当前连接数:show processlist; 只列出前100条
                      show full processlist;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值