java+linux+oracel,应用时快时慢,请各位大神帮忙指点,谢谢

stlong_zl 2015-07-25 11:09:51
版本 linux 5
系统环境 双CPU各4核 内存16G,硬盘80G,oracle 10g
服务上安装了两个Java应用服务,自己写了的,名字叫做RA和CA,还有oracle 10g数据库,RA和CA的数据库是分开的,因为是测试环境,所以把RA、CA,RA的数据库,CA的数据库都部署在这台服务器上,客户端是winds,使用php访问服务器的RA 应用服务的web接口,RA从数据库中做简单校验通过后,再与CA应用服务建立连接,进行数据处理,处理成功后,保存数据库,返回给RA,RA也保存数据库,再把结果返回给客户端。一个客户端可以同时发多个请求,每个请求,RA和CA都会有一个线程处理。Java访问数据库采用的是连接池

现在的问题是:
客户端在访问服务器时有时0.3s就返回接口,有时需要50多秒才返回结果。
1)把RA和CA拆开部署,问题一样
2)把RA和CA部署在一起,与数据库分开部署,问题也一样

定位了一下,发现
1)出现问题慢时,CA和RA的各自的所有线程都同时慢。出现慢的时间点都一样
2)经过多次测试,发现出现慢的代码段是不一样的
3)采用top看了下资源,CPU再80%以下,内存也还剩很多
4)客户端用40个/秒发起请求,发现CA与数据库的链接在140左右,正常应该40个,每个请求建一个连接才对。

基于以上原因,考虑可能是linux系统配置或者是Java的oracle的连接池处理的有问题,但不知道怎么解决,请各位高手帮忙指点,对linux系统实在不熟悉,感谢感谢!!
...全文
92 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
疯狂熊猫人 2015-07-26
楼主可以开着debug跟踪一下代码。 一般来说考虑以下两点: 1、数据库操作语句是否存在出现死锁的可能 2、数据库连接使用完后是否及时归还到了连接池中,因为连接池一般都有最大连接数,如果你不归还,那么当取不到连接并且连接数未到达配置的最大连接数的时候就会重新创建数据库连接,而创建数据库连接是非常耗时的。
回复
stlong_zl 2015-07-26
自己顶,请问有人遇到过吗?
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2015-07-25 11:09
社区公告
暂无公告