公司产品“云筑加”性能优化记录

最近对公司产品性能进行了初步的验证并进行了一些初步优化,下面是对本次优化过程的一个记录,方便自己今后进行查阅:

■测试环境:
windows server 2008 
8G内存
JDK1.7
apache2.4.x+tomcat8.0.x
mysql5.6.24

测试场景:
sys_info表6000条数据
sys_dynamic_share表10000条数据
sys_article表10000条数据
100用户并发访问咨询清单页面;

优化步骤:
1、找出慢查询:通过分析sql语句,调整sql写法,同时添加必要索引。
收获:(1)mysql通过explain分析查询语句返回的第一条数据对应的表为
数据库引擎自动认定的驱动表,在进行查询优化时要尽量考虑驱动表的优化。
(2)函数会导致索引失效。

2、验证完单sql的查询性能问题后,开始进行并发验证。
单用户操作时,资讯清单页面和资讯详情页面响应都很快。
100用户并发后,资讯清单页面的http请求响应时间达到50秒左右。
因此考虑到优化配置环境
(1)根据服务器内存,调整jvm相关配置
rem Guess CATALINA_HOME if not defined
set JAVA_OPTS=-Xms2048m -Xmx2048m -XX:PermSize=1024m -XX:MaxNewSize=1024m -XX:MaxPermSize=1024m
经过实践,多用户并发过程中JVM对堆内存消耗较大,因此可以适当考虑提高堆内存的配置。
(2)配置apache相关参数
在apache的httpd.conf中分别找到
Include conf/extra/httpd-mpm.conf、Include "conf/extra/httpd-default.conf",找到后去掉注释符号”#“。
→到conf/extra文件夹中找到httpd-mpm.conf,找到后如下内容并修改数值
<IfModule mpm_winnt_module>
    ThreadsPerChild        500
    MaxConnectionsPerChild   5000
</IfModule>
→到conf/extra文件夹中找到httpd-default.conf,并对Timeout、KeepAlive、MaxKeepAliveRequests、KeepAliveTimeout等参数值进行修改
(3)打开apache的GZIP压缩功能

3、通过上面的修改配置后,重新执行并发测试,发现http请求响应时间下降不明显。
打开mysql数据库监控,分析数据库,发现数据进程排队等待现象严重,猜测导致http响应时间长的原因
是由于数据库的性能导致。通过调查分析后,在mysql的my.ini文件中追加如下配置( 橙色字体为核心配置):
key_buffer = 16M
max_allowed_packet = 128M
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
log_error = "mysql_error.log"
innodb_buffer_pool_size =3G
max_connections=500
query_cache_type=1
query_cache_size=128M
interactive_timeout=60
wait_timeout=60
innodb_thread_concurrency=64(根据物理内存配置,1G->8,2G->16,3G->32,>4G->64)
注:以上配置需要根据服务器实际环境进行配置验证,不能一味抄写。
参考资料:
http://www.oschina.net/question/4873_26324myql优化,启动mysql缓存机制,实现命中率100%)

4、修改jdbc配置项:

参考资料:《dbcp的基本配置相关配置说明:initialSize:连接池启动时创建的初始化连接数量》    
《连接池中的maxIdle,MaxActive,maxWait参数》

5、memcached分布式缓存
memcached缓存在目前云筑加虽然进行了相关配置,但没有真正的使用,主要是因为memcached缓存及时不能及时更新问题。
这也从另一方面说明了缓存主要是要在基础数据等很少变化的数据之上。当然这块有不少解决方案,后期可以在这方面做一些调查。

小结:
性能优化是一个持续长久的过程,系统性能本身无好差之分,关键是看应用场景。没有一个系统刚开始就能够应对多用户高并发,
所有的系统都会经历一个从小到大的发展过程,“云筑加”亦是如此。以上的内容如有错误或理解不合理的地方,还请各位大侠们多多指正。 吐舌头

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值