系统信息
应用逻辑 就是用c3p0 到数据库查询数据并http返回Json数据
1 调优前的最初的测试结果 JMeter test result
No.
Type
Original
1000 data bigger
1
500Connection
250 query/S
63q/S
70q/S
2
1000 connections
255q/S
57q/S
65 q/S
No.
Type
Original
1000 data bigger
1
500Connection
250 query/S
63q/S
70q/S
No.
Type
Original
1000 bigger
1
500Connection
250 query/S
CPU 100%
150q/S
2
1000 connections
255q/S
160q/S
160q/S
2
1000 connections
255q/S
57q/S
65 q/S
这个数据是从程序的log 中打印出的 数据库select语句 中得出的结果(正确与否后面会有讨论)。
private void printDataConnections() {
ComboPooledDataSource ds = (ComboPooledDataSource) DBConn.getDataSource();
StringBuffer connectionBuffer = new StringBuffer();
try {
connectionBuffer.append("getMaxPoolSize=" + ds.getMaxPoolSize());// 最大连接数
connectionBuffer.append("getMinPoolSize=" + ds.getMinPoolSize());// 最小连接数
connectionBuffer.append("getNumBusyConnections=" + ds.getNumBusyConnections());// // 正在使用连接数
connectionBuffer.append("getNumIdleConnections=" + ds.getNumIdleConnections());// 空闲连接数
connectionBuffer.append("getNumConnections=" + ds.getNumConnections());//总连接数
logger.info(" connectionBuffer=" + connectionBuffer.toString());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} 登录后复制
2 经过IOD系统打印 SQL query 的执行时间 和 tomcat 每个request 的 响应时间,找出 系统瓶颈 是因为一个 select语句 使用了 in:
SELECT* FROM infoobject_table where category = 'advertisement' and deleteflag=falseand (id in (select info_object_fk from timespan_table where vod_id = ? and deleteflag=false))Order By Rand() Limit
在 原来的小数据库中 数据较少 查询 时间 100ms 左右
在 1000个 video 的数据库中 查询的时间 达到 超过 1S
先注释掉 这个语句 ,想办法用优化的办法实现这个功能。
注释掉 这个 select 语句后得到的测试数据(还是计算从程序的log中打印出的 数据库select语句)Jmeter testresult
<Connector port="8080"protocol="HTTP/1.1"
minSpareThreads="25"
maxSpareThreads="75"
enableLookups="false"
disableUploadTimeout="true"
connectionTimeout="20000"
acceptCount="200"
maxThreads="800"
minThreads="600"
maxProcessors="1000"
minProcessors="1000"
useURIValidationHack="false"
redirectPort="8443"
/> 登录后复制
No.
Type
Original
1000 bigger
1
500Connection
250 query/S
CPU 100%
<bean id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource"destroy-method="close">
<propertyname="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl"value="jdbc:mysql://192.168.4.112:3306/iod1000?useUnicode=true&characterEncoding=utf-8"/>
<propertyname="checkoutTimeout" value="60000"/>
<propertyname="idleConnectionTestPeriod" value="30"/>
<propertyname="initialPoolSize" value="50"/>
<property name="maxPoolSize"value="800"/>
<property name="minPoolSize"value="50"/>
<propertyname="maxStatements" value="100"/>
<propertyname="properties">
<props>
<propkey="preferredTestQuery">SELECT 1</prop>
<propkey="c3p0.maxIdleTime">25000</prop>
<propkey="c3p0.testConnectionOnCheckout">true</prop>
<propkey="user">root</prop>
<prop key="password">iptv4Um8</prop>
</props>
</property>
</bean> 登录后复制
150q/S
2
1000 connections
255q/S
160q/S
160q/S
现在 的问题 是碰到 tomcat request 160q/S 再怎么调优 增加不了了,tomcat的内存 配置了4G 实际使用了不到 1个G ,CPU 8核心 利用率 只有10%。
3 发现前面的统计系统响应 性能有问题,很多时候sql 语句打印出来了,但是并没有执行完成, 因为c3p0 连接数只有15个,都在等待数据库连接,后来改变统计方式。
还有就是打印出 c3p0 的连接池的工作状态
后来进行mysql(默认100最大链接), tomcat(连接数default)tomcat 内存配置, c3p0(最大15个链接) 链接池优化。
Mysql: 在system/programdata/mysql/my.ini中配置
max_connections=1000
Tomcat: 配置连接数
配置 tomcat 运行jvm 配置
set JAVA_OPTS=-server -Xms4400M-Xmx4400M -Xss512k -XX: AggressiveOpts -XX: UseBiasedLocking -XX:PermSize=128M-XX:MaxPermSize=256M -XX: DisableExplicitGC -XX:MaxTenuringThreshold=31-XX: UseConcMarkSweepGC -XX: UseParNewGC -XX: CMSParallelRemarkEnabled -XX: UseCMSCompactAtFullCollection-XX:LargePageSizeInBytes=128m -XX: UseFastAccessorMethods -XX: UseCMSInitiatingOccupancyOnly-Djava.awt.headless=true
应用 c3p0 连接池配置:
查询配置了mysql 最大连接数 1000, 配置 c3p0 连接池 800 配置 tomcat 链接 800 测试结果:
CPU 8Core 12% usage
Memmory900M/2.4G 120q/S
这个时候碰到的问题就是 cpu 和 内存 都没有达到上限,但是查询的 性能却提升不上去了。
5 试用jconsole 查看tomcat 中的 线程状态,好多线程都是 blocked on java.util.logging.console 原来是线程一直在等待写日志被block住了。
把写log的语句 全部注释掉。OK 系统终于飞起来了。
现在 能达到 250q/S。
需要检查的地方:
CPU
内存
mysql最大连接数
tomcat 连接数配置
tomcat JVM 配置 重要的是内存大小
数据库连接池配置:
程序内部的瓶颈。
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
华为干昆 ADS3.0 智驾系统 8 月上市 享界 S9 首发搭载
Jul 30, 2024 pm 02:17 PM
7月29日,在AITO问界第四十万台新车下线仪式上,华为常务董事、终端BG董事长、智能汽车解决方案BU董事长余承东出席发表演讲并宣布,问界系列车型将于今年8月迎来华为干昆ADS3.0版本的上市,并计划在8月至9月间陆续推送升级。 8月6日即将发布的享界S9将首发华为ADS3.0智能驾驶系统。华为干昆ADS3.0版本在激光雷达的辅助下,将大幅提升智驾能力,具备融合端到端的能力,并采用GOD(通用障碍物识别)/PDP(预测决策规控)全新端到端架构,提供车位到车位智驾领航NCA功能,并升级CAS3.0全
Windows10与Windows11性能对比:哪个更胜一筹?
Mar 28, 2024 am 09:00 AM
Windows10与Windows11性能对比:哪个更胜一筹?随着科技的不断发展和进步,操作系统也在不断更新和升级。微软公司作为全球最大的操作系统开发商之一,其发布的Windows系列操作系统一直备受用户关注。在2021年,微软发布了Windows11操作系统,这引发了广泛的讨论和关注。那么,究竟Windows10与Windows11在性能方面有何不同,哪个
Win11和Win10系统性能对比,究竟哪一个更胜一筹?
Mar 27, 2024 pm 05:09 PM
一直以来,Windows操作系统一直是人们在个人电脑上使用最为广泛的操作系统之一,而Windows10长期以来一直是微软公司的旗舰操作系统,直到最近微软推出了全新的Windows11系统。随着Windows11系统的推出,人们对于Windows10和Windows11系统之间的性能差异开始感兴趣,究竟两者之间哪一个更胜一筹呢?首先,让我们来看一下W
常用常新!华为Mate60系列升级HarmonyOS 4.2:AI云增强、小艺方言太好用了
Jun 02, 2024 pm 02:58 PM
4月11日,华为官方首次宣布HarmonyOS4.2百机升级计划,此次共有180余款设备参与升级,品类覆盖手机、平板、手表、耳机、智慧屏等设备。过去一个月,随着HarmonyOS4.2百机升级计划的稳步推进,包括华为Pocket2、华为MateX5系列、nova12系列、华为Pura系列等多款热门机型也已纷纷展开升级适配,这意味着会有更多华为机型用户享受到HarmonyOS带来的常用常新体验。从用户反馈来看,华为Mate60系列机型在升级HarmonyOS4.2之后,体验全方位跃升。尤其是华为M
本地运行性能超越 OpenAI Text-Embedding-Ada-002 的 Embedding 服务,太方便了!
Apr 15, 2024 am 09:01 AM
Ollama是一款超级实用的工具,让你能够在本地轻松运行Llama2、Mistral、Gemma等开源模型。本文我将介绍如何使用Ollama实现对文本的向量化处理。如果你本地还没有安装Ollama,可以阅读这篇文章。本文我们将使用nomic-embed-text[2]模型。它是一种文本编码器,在短的上下文和长的上下文任务上,性能超越了OpenAItext-embedding-ada-002和text-embedding-3-small。启动nomic-embed-text服务当你已经成功安装好o
不同Java框架的性能对比
Jun 05, 2024 pm 07:14 PM
不同Java框架的性能对比:RESTAPI请求处理:Vert.x最佳,请求速率达SpringBoot2倍,Dropwizard3倍。数据库查询:SpringBoot的HibernateORM优于Vert.x及Dropwizard的ORM。缓存操作:Vert.x的Hazelcast客户机优于SpringBoot及Dropwizard的缓存机制。合适框架:根据应用需求选择,Vert.x适用于高性能Web服务,SpringBoot适用于数据密集型应用,Dropwizard适用于微服务架构。
PHP 数组键值翻转:不同方法的性能对比分析
May 03, 2024 pm 09:03 PM
PHP数组键值翻转方法性能对比表明:array_flip()函数在大型数组(超过100万个元素)下比for循环性能更优,耗时更短。手动翻转键值的for循环方法耗时相对较长。
C++ 函数对程序性能有哪些影响?
Apr 12, 2024 am 09:39 AM
函数对C++程序性能的影响包括函数调用开销、局部变量和对象分配开销:函数调用开销:包括堆栈帧分配、参数传递和控制权转移,对小函数影响显着。局部变量和对象分配开销:大量局部变量或对象创建和销毁会导致堆栈溢出和性能下降。
See all articles