j2ee
文章平均质量分 81
深圳gg
这个作者很懒,什么都没留下…
展开
-
Current transaction is not in progress
系统某些功能点击偶尔报错,用的是某国产中间件,Current transaction is not in progress的意思是会话没有对应的进程了,有两种可能: 1.数据库中的会话被干掉了。 2.事务超时被干掉了。 看功能都是非常简单的功能,不会有超时的问题,会话被干掉了。实施无意中说到之前数据库归档满了,数据库重启了一下,中间件没有重启。dang,就是这个问题,重启一下就好了,说明这...原创 2020-01-14 17:15:10 · 1224 阅读 · 0 评论 -
oracle open_cursors的含义及ORA-01000: 超出打开游标的最大数模拟
PropertyDescriptionParameter typeIntegerDefault value50ModifiableALTER SYSTEMRange of values0 to 65535BasicYesOPEN_CURSO原创 2016-06-22 17:26:29 · 4298 阅读 · 0 评论 -
不高效的,通用的java处理思想
经过我多年的观察和自身体会,java程序处理数据的基本思想是一条一条处理,当处理大数据量的时候,往往先把数据抽取到weblogic等中间件中,然后用面向对象的思想操作一条条操作数据。 自从多年前开始学习数据库,才发现写java程序和SQL完全思路完全相反,SQL其实一种操作集合的语言,擅长对集合的操作。所以java程序员在操作大量数据的时候要转变思维,采用集合的操作方式,说的总是抽象的。原创 2017-03-16 20:34:37 · 674 阅读 · 0 评论 -
关于前端的优化的一点感受
一直致力于后端数据库和java代码的优化,今天的一个会议完全颠覆了之前的看法。会议的内容是优化系统超过3s的请求,测试的结果是httpwatch展示。看了很多个文件,发现加载静态占据了一半或者一半以上的时间。 在测试环境再次测试,发现这些静态资源即便请求执行多次也不会缓存,如果能解决静态资源缓存到本地IE的问题,那请求的时间会有一半以上的提升。 在Spring的配置文件中,可以原创 2016-11-23 16:47:08 · 411 阅读 · 0 评论 -
dynatrace purepath数据转换到数据库
dynatrace的purepath捕获的数据,有利于我们整体测量性能,但由于是xml格式的,所以需要做一些转换才能到数据库。import java.util.Date;/* < pathinfo error_state="Transaction failed" purepath="/remind/soa/cxf/SyncLCAMWorkflowMsg#getWorkflowM原创 2016-07-29 17:47:09 · 1486 阅读 · 0 评论 -
velocity优化配置
会对该Resource定期进行是否已经进行了修改的扫描file.resource.loader.modificationCheckInterval=0 修改检查,0是不检查class.resource.loader.modificationCheckInterval=0 关闭autoreload,因为使用了同步锁,非常影响性能velocimacro.library.原创 2016-05-26 16:42:00 · 1845 阅读 · 0 评论 -
weblogic 多线程用相同的数据库连接导致的错误
现场做性能测试,第三方厂家报问题,说有锁表的信息,如下图日志。"[ACTIVE] ExecuteThread: '8' for queue: 'weblogic.kernel.Default (self-tuning)'" - Thread t@3460 java.lang.Thread.State: RUNNABLEat java.net.SocketInputStream.so原创 2015-10-23 15:38:57 · 2402 阅读 · 0 评论 -
Oracle create table as 的坑
开发反馈现场保存数据保存,是一个修改。错误信息为:EntityManager - 更新实体时出现异常! <org.springframework.orm.hibernate3.HibernateOptimisticLockingFailureException: Object of class [com.comtop.lcam.material.reqplan.requirement.model.原创 2015-09-18 12:11:50 · 5904 阅读 · 0 评论 -
浏览器并发处理请求个数一览表
版本HTTP1.0HTTP1.1 IE 6\742IE 866IE 91010IE 1066IE 1166chrome6原创 2015-11-05 08:16:14 · 6212 阅读 · 0 评论 -
记录一次移动系统诊断过程
现象:点击功能B不成功,过了一会在,整个系统反应很慢。 架构:dubbo zookeeper tomcat mysql 诊断过程: 1.检查应用日志,发现了功能B的很多锁超时,在mysql数据库中发现了锁等待,kill堵塞者之后,系统恢复正常,且功能B也能正常。但过1小时后,问题又出现了。 2.无意发现操作功能A失败,会导致功能B失败,系统慢。重复几次,每次必原创 2015-09-02 18:45:39 · 654 阅读 · 0 评论 -
oracle 存储过程最好的记录错误方式
当你的应用有调用存储过程,而节点有几十个或者上百个,找错是不是一个很麻烦的事情,这个时候,我建议写到数据库中,下面是我做的一个demo.1. 建立错误日志记录表drop table PUB_PROC_ERR_LOG purge;create table PUB_PROC_ERR_LOG( LOG_ID NUMBER, MODULE_NAME VARCHAR2(原创 2015-08-04 18:37:47 · 4380 阅读 · 0 评论 -
java如何将一组对象传入Oracle存储过程
java如何将一组对象传入Oracle存储过程,例子如下:CREATE OR REPLACE TYPE TEST_OBJECT AS OBJECT ( id number, name varchar2(32));CREATE OR REPLACE TYPE TABLES_ARRAY AS VARRAY(100) OF TEST_OBJECT;drop table test pu原创 2015-07-20 14:52:26 · 2404 阅读 · 0 评论 -
Java 传对象到Oracle存储过程
在大数据量处理方面,存储过程有着独特的优势,如果把数据加载到中间件处理,用户体验差不说,对系统也是灾难。测试中遇到几个问题:1.只有int能传到存储过程中,String 和date不行,是jar包的问题,解决方案:F:\app\Administrator\product\11.2.0\dbhome_1\jlib\orai18n.jarD:\program\weblogic\oracle原创 2017-04-20 09:58:17 · 1008 阅读 · 0 评论 -
压力测试事务率不高问题诊断
用loadrunner压测系统,保存单据的事务通过率总是80%,离99%差很远。1.分析应用的日志,并没有发现报错信息。2.分析中间件gc日志和数据库报告,压力并没有过载。3.分析loadrunner报告,发现302的请求比较多。陷入僵局。1.在代码的保存方法中打印出语句。发现1000个请求,只有800个打印语句。2.分析access.log,发现有1000个请求,其中有200个请求返...原创 2018-10-26 15:45:37 · 1142 阅读 · 0 评论 -
Oracle JDBC ResultSet参数测试
用jprofiler和jconsole测试下列四种组合,前三种组合消耗年轻代100M左右,老年代没影响。第四种组合伤心病狂,年轻代和老年代均消耗400M, 可以检查一下项目,看有没有踩雷。 prepareStatement(sql); prepareStatement(sql,ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); pre...原创 2018-10-12 16:25:32 · 819 阅读 · 0 评论 -
jdk1.7 org.springframework.web.util.UriUtils.decode CPU高
1.7.0_71-b14下,weblogic偶尔会造成服务器CPU 100%,定位到消耗CPU的线程如下:"[ACTIVE] ExecuteThread: '11' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=10 tid=0x00007fb3ec00c000 nid=0x179c runnable [0x00...原创 2018-04-10 17:12:52 · 1331 阅读 · 0 评论 -
Quartz定时框架产生行锁的解决方法
用开源工具包Quartz做定时框架,现在遇到一个问题。 当多个weblogic节点发布时,定时框架采用的是SELECT * FROM SP_QRTZ_LOCKS WHERE LOCK_NAME = :1 FOR UPDATE获取锁的形式,当能锁住记录则执行定时任务。多个节点执行会产生大量的行锁。 为了解决这个问题SELECT * FROM SP_QRTZ_LOCKS原创 2017-11-28 14:49:54 · 10409 阅读 · 1 评论 -
java框架的超时设置
代码中对超时的处理太重要了,如果不处理会造成程序卡住,在weblogic中会形成stuck线程,非常可能导致整个节点缓慢。下面来展示下原生的JDBC代码超时设置:package gg;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import jav原创 2017-12-20 10:51:16 · 2113 阅读 · 0 评论 -
配置hibernate trace日志会损耗多少性能?
配置logback会损耗多少性能? 实际测试,配置前使用hibernate单条操作数据大概在20-60ms,配置后140-300ms,实测功能性能下降了6-7倍。在这里打一个基线,hibernate操作一条数据的速度应该在100ms以下。原创 2017-10-17 09:31:51 · 969 阅读 · 0 评论 -
ibatis默认实现分页与Oracle SQL分页性能比较
一个使用比较多的小系统在使用高峰的时候出现缓慢的情况,一些被认为是很简单的功能都很慢,如选择部门和人员,weblogic后台还有很多stuck的线程。最后发现是使用ibatis默认分页导致,它是使用的游标进行分页,下面来通过实验来比较两种方式的区别。testPaging.jsp <%!原创 2017-09-28 14:41:53 · 905 阅读 · 0 评论 -
2017-06-28一次奇怪的慢问题诊断ERROR_INTERNET_CONNECTION_RESET
开发反馈,新增单据会一直hang着,等待300s就报页面找不到。 1.用httpwatch看到的结果是:+ 0.0001 299.461781 0 GET ERROR_INTERNET_CONNECTION_RESEThttps://10.10.5.5:12000/web/workticket/create?ticketType=11&bureauCode=02922原创 2017-06-29 10:42:40 · 3595 阅读 · 0 评论 -
架构设计中关于配置项放在哪里?
近期看数据库吓了一跳,负载是以前的3倍。8点到12点有一条SQL执行了两千万次,占用数据库负载30%。我看了以前的数据库报告,次数也是上千万次,不过平均执行时间是0.00s,现在变成0.01s。就是这么一点点变化导致高峰期数据库CPU从50%上升到80%,这是一个巨大隐患,这条SQL正是系统读取配置项的操作。如果这条SQL从0.01s变为0.02s,完全有可能,因为配置表是不断在增加的。原创 2017-07-25 16:47:04 · 677 阅读 · 0 评论 -
java 调用存储过程返回多个结果集
有时候有需求要通过存储过程返回多个结果集,样例如下:CREATE OR REPLACE PROCEDURE p_t_return_cursor( cursor_o_1 OUT SYS_REFCURSOR, cursor_o_2 OUT SYS_REFCURSOR) IS BEGIN OPEN cursor_o_1 FOR SELECT原创 2017-04-20 11:25:15 · 1846 阅读 · 0 评论 -
存储过程中控制事务带来的问题
最近碰到一个诡异的问题,功能完成,结果又部分表内容更新,部分表内容没有更新,程序也没有报错。 简单说下架构,spring + hibernate + mybatits + oracle, 中间件是weblogic 。前端页面 --> facade--> appservice --> mybatits, 模块之间的调用通过SOA,事务加在facade层,appsercie层写业务。原创 2015-07-29 16:22:14 · 2520 阅读 · 1 评论 -
java如何将一个List传入Oracle存储过程
java如何将一个List传入Oracle存储过程,例子如下:数据库端建一个PL/SQL的数组。CREATE OR REPLACE TYPE tables_array AS VARRAY(100) OF VARCHAR2(32) ;drop table test purge;create table test( name varchar2(32));create or原创 2015-07-16 14:16:16 · 4509 阅读 · 0 评论 -
eclipse使用debug无法看到变量中的信息
很久没有写代码了,今天配置发布一个系统,设置断点后要做debug调试,当点击变量信息时,变量中报错:org.eclipse.core.runtime.CoreException: Source lookup error。 解决方法:将三个位置的JDK版本设置为相同的版本即可。 properties->Java Compiler->compiler complianc原创 2013-08-30 17:22:36 · 1727 阅读 · 0 评论 -
oracle jdbc fetchsize取值对性能的影响
通过JDBC取数据时,默认是10条数据取一次,即fetch size为10,如果增大这个数字可以减少客户端与oracle的往返,减少响应时间,网上有建议这个数字不要超过100,要不然对中间件内存消耗大(没有做过实验)。package com.gg.test;import java.sql.Connection;import java.sql.DriverManager;impo原创 2013-08-28 17:24:37 · 4075 阅读 · 0 评论 -
java调用存储过程抛出的错误--具体到行
在java中调用procedure,procedure中往往会进行异常处理,这样会带来一个问题,当存储过程出错,其实程序是不知道的。通常的做法是讲错误的信息写入到日志表中。但对于我现在的环境,一是系统非常庞大,并无专业的DBA监控,数据库第三方维护,拿到weblogic日志很容易,所以把存储过程的错误抛到中间件这一级,相对来说是个不错的选择。原创 2013-08-30 09:47:20 · 2481 阅读 · 0 评论 -
Oracle JDBC内存管理--Oracle白皮书2009年8月 .
原文:http://www.oracle.com/technetwork/database/enterprise-edition/memory.pdf介绍Oracle JDBC驱动程序可能会使用大量的内存。这是一种有意识的设计选择,在使用大量内存与提高性能之前做出权衡。在大多数情况下,对于大多数用户,这已被证明是一个不错的选择。一些用户已经经历了JDBC驱动程序使用的大量内存的问题转载 2013-06-13 20:06:50 · 1005 阅读 · 0 评论 -
分享:从100PV到1亿级PV网站架构演变
【IT168 评论】一个网站就像一个人,存在一个从小到大的过程。养一个网站和养一个人一样,不同时期需要不同的方法,不同的方法下有共同的原则。本文结合我自已14年网站人的经历记录一些架构演变中的体会。 1:积累是必不可少的 架构师不是一天练成的。 1999年,我作了一个个人主页,在学校内的虚拟空间,参加了一次主页大赛,几个DREAMWEAVER的页面,几个TABLE作布转载 2013-06-09 17:04:40 · 1494 阅读 · 0 评论 -
缓存缺失一段代码引发的问题
2011年11月7日,现场的环境用沙盘多开几个窗口系统就卡的不行了。原因是现场的环境解析系统总配置文件,配置项没有找到一直等待。原因:当系统总配置文件中没有配置参数isAddPrefixion,重用库代码中会先到内存中读取此参数,如果读不到,则遍历整改系统总配置文件。一个用户登录,会读很多次配置文件,多的上百次。在windows、HP unix上不会有堵塞的问题(但性能上肯定会有影响),在IB原创 2013-05-31 15:44:53 · 1085 阅读 · 0 评论 -
ERROR_INTERNET_CANNOT_CONNECT的解决方法
今天系统有一个模块的一个功能非常慢,平常速度在1s以内,而现在需要25s之多。 1. 询问开发组最近有没有更新发布,得到的答案是没有; 2. 对数据库做了一个ASH报告,没有性能差的SQL; 3. 用httpwatch跟踪请求,得到有一个url为http://0.0.0.0/的请求化了接近21s,result为ERROR_INTERNET_CANNOT_CONN原创 2013-03-27 11:22:55 · 19930 阅读 · 0 评论 -
为什么百兆网卡只能传输速度只能为10M/s
在做性能测试的时候,我很奇怪为什么号称百兆网卡,传输速率最大通常只有10M? 这是因为两个速度的单位不一样,本地连接是100Mb/s,QQ传输文件时速度时10MB/s。小写的b是bit是二进制位的意思,大写的B是Byte字节的意思,1Byte=8bit,所以本地连接100Mb/s也就是12.5MB/s(最大值),一般达不到理想的最大值。原因是理论和实际总是会有差距的。和周围环境原创 2013-04-09 09:58:31 · 14653 阅读 · 0 评论 -
2013-03-28发现性能测试的瓶颈
做性能测试往往交给测试组,测完便了事,可能根本不关注性能测试的有效性。 今天做性能测试,测试组用loadrunner,我来配合用nmon监控应用服务器,同时也看数据库AWR报告。发现一个不正常的情况,应用服务器的CPU、IO消耗偏低且稳定,数据库方面基本没有压力。而场景压力从100个进程到150时,请求的响应时间从5s到14s。很明显,应用服务器和数据库资源没有得到充分的利用,测试原创 2013-04-08 17:05:45 · 1015 阅读 · 0 评论 -
windows下网络流量监控
今天做性能测试,分析得出测试遇到的瓶颈是本机的网络流量的限制。安装loadrunner软件的机器是windows XP的,网卡是百兆,那流量最大为10M。现在要监控下是否已经达到瓶颈。Windows下有自己的监控工具,比较方便,配置方法如下: 1. 【我的电脑】--》【管理】--》【系统工具】--》【性能日志和警报】--》【计算器日志】 2. 右原创 2013-03-29 17:38:02 · 4584 阅读 · 0 评论 -
ibatis 2.0分页方式的改进
ibatis 2.0采用的是游标的方式进行分页,这种分页我认为对数据库段的压力大,且SQL也不一定高效,特别是数据量大的时候进行翻页。所以在用ibatis 2.0的时候,建议使用SQL分页。下面来做一个实验:SQL> create table test as select * from dba_objects;SQL> insert into test select * from dba原创 2013-10-22 10:06:17 · 1355 阅读 · 0 评论 -
JXL创建Excel造成整个系统缓慢的解决方案
上午发现系统发现缓慢(数据库连接池不足),配置组定位可能是某某功能的问题,但因为上午有人在使用4个计划上报数据,我怀疑是4个计划的问题。中午测试了下,每次新增数据,后台就会报数据库连接错误。 false,isJTS=true,vendorID=100,connUsed=true,doInit=false,'null',destroyed=false,poolname=JDBC原创 2013-11-26 18:04:25 · 3501 阅读 · 0 评论 -
使用Oracle基于session的临时表要注意的问题
在Oracle中有两种临时表,一种是基于session,就是当出现commit之后,数据就会被清空;一种是基于session,当session断开后,数据会被清空。--基于事务的临时表create global temporary table test( ID number)on commit delete rows;--基于session的临时表cr原创 2014-10-15 20:51:54 · 3736 阅读 · 0 评论 -
2014-8-21的一次性能诊断--应用服务器瓶颈
今天现场实施反馈系统整体慢,已经接到用户非常多的投诉,要求现场发回weblogic日志和Oracle 数据库报告。简要说下系统的架构:典型的B/S三层架构,开发语言是java,中间件用的是weblogic,数据库用的是Oracle,用的都是pc server。 1.分析weblogic日志和数据库报告。weblogic日志里面没有stuck的请求,也没有连接池方面的问题,也没有OS方面的原创 2014-08-27 15:05:44 · 1377 阅读 · 0 评论 -
.net控件安装不成功导致功能慢
刚实施反馈,有个功能时快时慢,快的时候1s,慢的时候60s,有点奇怪。先说下部署结构: weblogic + Oracle , jsp struts mybatis。 中间件发布在两台物理机器上(windows的操作系统),在中间件服务器1上访问功能慢,在中间件服务器2上访问功能很快。 1.使用httpwatch,可以看到慢的地方 http://10.15.152原创 2014-09-09 16:29:17 · 1178 阅读 · 0 评论