项目里有一只APPLET程序,每隔5秒会请求一次DB。客户在测试中发生一种现象,就是这个APPLET程序启动后,ORACLE的PROCESS在1分钟内启动了12个,导致不能连接DB。
由于小弟我实在是菜,连PROCESS在哪儿看都不知道 。对于这个问题,一点头绪都没有。 先谢谢各位了!!!
[b]问题补充:[/b]
感谢两位大大的回答。我又看了一下,好像就是没有关闭连接导致的,我等会改了再试下。
但这个现象怎么再现呢?
我以前测试这支程序的时候,一分钟12次请求都正常的。是不是要把DB关掉后,APPLET的请求才会产生12个连接呢??
[b]问题补充:[/b]
再补充一下,怎么样才能看到服务端的PROCESS?? 服务器是LINUX
[b]问题补充:[/b]
才看了下,连接每次都关闭了的。下面是APPLET中请求DB的代码。
[code="java"]
byte buf[] = new byte[40];
try {
URL url = new URL(urlStr.toString());
URLConnection con = url.openConnection();
con.setRequestProperty("Content-type", "text/xml");
con.setDoOutput(true);
con.setAllowUserInteraction(true);
con.setDefaultUseCaches(false);
con.setUseCaches(false);
con.setDoInput(true);
con.connect();
InputStream in = con.getInputStream();
buf = new byte[in.available()];
int size=buf.length;
while(size != -1 || size >= buf.length){
size = in.read(buf);
}
in.close();
System.out.println("ajax result: " + new String(buf, "UTF-8"));
} catch (IOException e) {
e.printStackTrace();
throw e;
}
[/code]
[b]问题补充:[/b]
回Lucas Lee: URLConnection没有close()方法 啊
后台的Session应该都是固定的吧? 采用连接池方式;
Process不会那么容易随便创建的吧? EMC看看都是哪些进程在使用.
Oracle 的Process启动了12个---这个不对吧?我怎么觉得应该是Oracle的Connection启动了12个?
如果是这样,那么Applet可能是每次请求DB后没有关闭Connection导致的。
oracle启动server端的process instance,是因为连客户端的程序启动了客户instance,从你这里看每5秒请求一次,60秒正好是12次,当然12个服务端的process,你每次连db是否都关闭了连接呢?看样子是没关闭。
[quote]再补充一下,怎么样才能看到服务端的PROCESS?? 服务器是LINUX[/quote]
EMC登陆进去就可以看后台进程的.
[quote]再补充一下,怎么样才能看到服务端的PROCESS?? 服务器是LINUX[/quote]
在Linux或者Unix下,用ps auxx就可查看什么Process,有多少个process。
你这代码哪里是请求DB的代码,这个是URLConnection啊,是HTTP请求啊。
而且这里的URLConnection看样子也没有关闭,每调用它的close(),只调用了InputStream的close。