起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1405|回复: 1

[结贴] 性能优化问题

[复制链接]

40

主题

114

帖子

687

积分

高级会员

Rank: 4

积分
687
发表于 2015-4-10 14:54:03 | 显示全部楼层 |阅读模式
在正式运行环境客户反映系统速度慢,经过排查发现2个问题:
1、一个单表的查询大约8万条数据,页面反应时间在14秒左右,打开后台的日志输出发现,在服务器上KSQL执行时间久花了13秒,查看后台输出的SQL,发现是直接把8万条数据一次性取出后再由X5按照limit选取了前20条生成json送到了页面,这个如何优化??输入日志截取关键部分如下:

2015-04-10 08:03:53 [http-8080-5] [com.justep.log.sql.time] DEBUG: [SQL Time]sql 执行时间:3076ms, exec KSQL: select Kit.* from Kit Kit where (Kit.fCreateSite='CAC' and Kit.fCreatorCode is not null and Kit.fIsDelete=0) AND (1=1)order By fBarcode DESC,fEditDate DESC limit 0,20
  --> sql:SELECT  Kit.fID AS Kit, Kit.FID AS fId, Kit.VERSION AS version, Kit.FPCASEID AS fPCaseId, Kit.FBARCODE AS fBarcode, Kit.FCNNAME AS fCnname, Kit.FENNAME AS fEnname, Kit.FPCASENO AS fPCaseNo, Kit.FCONTRACTNO AS fContractNo, Kit.FANNEXNO AS fAnnexNo, Kit.FANNEXSERNO AS fAnnexSerNo, Kit.FSHIPBATCH AS fShipBatch, Kit.FPARTNO AS fPartNo, Kit.FQUALITYNO AS fQualityNo, Kit.FQTY AS fQty, Kit.FUNIT AS fUnit, Kit.FARCHIVEDATE AS fArchiveDate, Kit.FUSEDLIFE AS fUsedLife, Kit.FKITSTATE AS fKitState, Kit.FARCHIVELIFE AS fArchiveLife, Kit.FPRODUCTDATE AS fProductDate, Kit.FDESCRIPTION AS fDescription, Kit.FCREATEDATE AS fCreateDate, Kit.FEDITDATE AS fEditDate, Kit.FISDELETE AS fIsDelete, Kit.FISSHOW AS fIsShow, Kit.FSTATE AS fState, Kit.FREMARK AS fRemark, Kit.FSTATEROUTE AS fStateRoute, Kit.FCREATESITE AS fCreateSite, Kit.FCREATORCODE AS fCreatorCode, Kit.FEDITORCODE AS fEditorCode, Kit.FANNEXVERITEMMAPID AS fAnnexVerItemMapId FROM tabKit Kit  WHERE  ( (Kit.FCREATESITE = ?) AND (Kit.FCREATORCODE IS NOT NULL) AND (Kit.FISDELETE = ?) ) AND (? = ?)   ORDER BY fBarcode DESC, fEditDate DESC
--> binds:[CAC, 0, 1, 1]


2015-04-10 08:03:55 [http-8080-5] [com.justep.system.data.impl.TableUtilsImplement] DEBUG: KSQL 执行时间:4821ms


2015-04-10 08:03:55 [http-8080-5] [com.justep.log.action.time] DEBUG: [Action Time]action执行时间:7163ms,/Bc_LMS/Bc_LMS/process/kit/kitProcess,mainActivity,queryKit2Action


2、发现在开发环境同样的程序运行竟然比服务器上需要的时间要少!!!
开发环境和正式环境数据库都是SQL SERVER 2008 R2,数据库和tomcat都是装在同一台机器上
关键参数
开发环境
正式环境
sql执行时间
3076ms
5054ms
KSQL时间
4821ms
13618ms
操作系统版本
win7 64位
window server 2008 R2  64位
内存
6G
96G
JDK
1.6 32bit(X5自带)
1.6 64bit
TOMCAT启动参数
-Xms512M -Xmx1024M -Ddebug=true  -XX:MaxPermSize=256m
-Xms3024M -Xmx4024M









开发环境下后台日志.rar

6.96 KB, 阅读权限: 90, 下载次数: 0

31

主题

1856

帖子

3070

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3070
发表于 2015-4-14 15:24:14 | 显示全部楼层
那个是java的数据分页机制,不会全部取回来,可以把sql拿出来测试加 top 20, 取前20条记录测试下看是否慢。
感觉应该是索引问题,重点检查一下,需要联合索引,把where部分和order by部分的组合起来做一个联合索引。
加了索引在测试,注意看数据库磁盘的占用(windows2008的化直接用资源检查器,windows2003麻烦点,用windows\system32\perfmon.msc),如果磁盘使用率很高,也会造成性能瓶颈,一般性能都会关注cpu占用,但对于数据库磁盘占用更关键。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-21 00:40 , Processed in 0.065856 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表