tomcat占用cpu很高

wodehongseupan2 2013-01-17 10:17:06
我用tomcat的datasource连接池,激活的是1000个连接,数据库用的是oracle10g。
现在遇到一个问题,linux进程里,java占得cpu基本是100%。
服务会很频繁的调用webservice接口,每次传100K左右的数据,
是不是服务器与webservice调用太频繁了,导致cpu升的很高呢??
大侠们 帮帮忙 谢谢啊!
...全文
1321 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
为啥呢 2013-01-24
  • 打赏
  • 举报
回复
可以通过tomcat实例逐层找到所有有效的Session数,这就是同时在线人数。 如果想更精确,http://www.docin.com/p-114417565.html 这里有Linux下看80端口请求数的方法。
wodehongseupan2 2013-01-24
  • 打赏
  • 举报
回复
引用 18 楼 xodbc 的回复:
cpu占用是计算导致的,ls们说的资源未释放的情况与此无关,一个未释放且未使用的资源只占内存和硬盘。 过多线程争抢资源也会导致cpu额外占用,如ls说cpu核数和线程数的比例应该设置合理。 如果只是jvm占cpu,那就与数据库无关,也就与数据交互无关。 更可能的原因是大并发web请求、大吞吐量的上传下载(或缓存设置不合理)导致的这个原因,建议统计一下web请求,并控制一下上传下载。
如何统计web请求呢?有什么工具吗?
为啥呢 2013-01-22
  • 打赏
  • 举报
回复
cpu占用是计算导致的,ls们说的资源未释放的情况与此无关,一个未释放且未使用的资源只占内存和硬盘。 过多线程争抢资源也会导致cpu额外占用,如ls说cpu核数和线程数的比例应该设置合理。 如果只是jvm占cpu,那就与数据库无关,也就与数据交互无关。 更可能的原因是大并发web请求、大吞吐量的上传下载(或缓存设置不合理)导致的这个原因,建议统计一下web请求,并控制一下上传下载。
IceArmour 2013-01-22
  • 打赏
  • 举报
回复
jmap -histo pid查看一下进程具体类消耗资源情况
skywoodsky 2013-01-22
  • 打赏
  • 举报
回复
引用 12 楼 wodehongseupan2 的回复:
引用 10 楼 Kanepan 的回复:连接池最大个数,一般是 CPU数的 3,到4倍。 你整这么多干嘛呢? 您指的cpu数是什么?能具体点吗?谢谢 因为每次与数据库交互100KB左右数据,而且要求很快返回,所以就把连接加到了1000, 网上写的好像都是1000,是最好的效果。
你的WebService并发数有多少,或者说需要做到多少,然后后在根据这个来考虑你的连接数,不是说网上说多少就多少的,要根据具体引用需求的
Kanepan 2013-01-22
  • 打赏
  • 举报
回复
引用 14 楼 wodehongseupan2 的回复:
引用 13 楼 Kanepan 的回复:引用 12 楼 wodehongseupan2 的回复: 引用 10 楼 Kanepan 的回复:连接池最大个数,一般是 CPU数的 3,到4倍。 你整这么多干嘛呢? 您指的cpu数是什么?能具体点吗?谢谢 因为每次与数据库交互100KB左右数据,而且要求很快返回,所以就把连接加到了1000, 网上写的好像都是1000,是……
是的
wodehongseupan2 2013-01-21
  • 打赏
  • 举报
回复
引用 13 楼 Kanepan 的回复:
引用 12 楼 wodehongseupan2 的回复: 引用 10 楼 Kanepan 的回复:连接池最大个数,一般是 CPU数的 3,到4倍。 你整这么多干嘛呢? 您指的cpu数是什么?能具体点吗?谢谢 因为每次与数据库交互100KB左右数据,而且要求很快返回,所以就把连接加到了1000, 网上写的好像都是1000,是最好的效果。 服务器核心数 设置个 4 X 8 =32 差……
您是说比如cpu是4核的:那就是4核 X 8(固定参数)=32个链接吗?
Kanepan 2013-01-21
  • 打赏
  • 举报
回复
引用 12 楼 wodehongseupan2 的回复:
引用 10 楼 Kanepan 的回复:连接池最大个数,一般是 CPU数的 3,到4倍。 你整这么多干嘛呢? 您指的cpu数是什么?能具体点吗?谢谢 因为每次与数据库交互100KB左右数据,而且要求很快返回,所以就把连接加到了1000, 网上写的好像都是1000,是最好的效果。
服务器核心数 设置个 4 X 8 =32 差不多了。
wapigzhu 2013-01-18
  • 打赏
  • 举报
回复
引用 5 楼 wodehongseupan2 的回复:
引用 2 楼 wapigzhu 的回复:找个工具查查是什么东西耗cpu最多呗.. 使用什么工具查呢?我没用过,可不可以介绍一个啊?谢谢啊!
VisualVM..jdk自带有
wodehongseupan2 2013-01-18
  • 打赏
  • 举报
回复
引用 4 楼 brucejia 的回复:
查看一下数据量,太大了肯定影响性能
您说的数据量,是指数据库的基数太大了吗?数据库目前单表的基数会有将近8千万吧。
wodehongseupan2 2013-01-18
  • 打赏
  • 举报
回复
引用 3 楼 Squall1009 的回复:
1000连接。。。 得多大的并发啊
tomcat的datasource我从网上查多数都数1000个连接是最优的,难道是这块连接数太大了吗? 并发的话,基本上3秒内,会有100KB的数据量。
wodehongseupan2 2013-01-18
  • 打赏
  • 举报
回复
引用 2 楼 wapigzhu 的回复:
找个工具查查是什么东西耗cpu最多呗..
使用什么工具查呢?我没用过,可不可以介绍一个啊?谢谢啊!
喝酒吃肉 2013-01-18
  • 打赏
  • 举报
回复
查看一下数据量,太大了肯定影响性能
wodehongseupan2 2013-01-18
  • 打赏
  • 举报
回复
引用 10 楼 Kanepan 的回复:
连接池最大个数,一般是 CPU数的 3,到4倍。 你整这么多干嘛呢?
您指的cpu数是什么?能具体点吗?谢谢 因为每次与数据库交互100KB左右数据,而且要求很快返回,所以就把连接加到了1000, 网上写的好像都是1000,是最好的效果。
wodehongseupan2 2013-01-18
  • 打赏
  • 举报
回复
引用 9 楼 lxy15329 的回复:
oracle本身启动起来就挺占CPU的,还那么多连接,受得了吗?再也许,你电脑配置太低了
电脑配置是8核cpu,8G内存
Kanepan 2013-01-18
  • 打赏
  • 举报
回复
连接池最大个数,一般是 CPU数的 3,到4倍。 你整这么多干嘛呢?
lxy15329 2013-01-18
  • 打赏
  • 举报
回复
oracle本身启动起来就挺占CPU的,还那么多连接,受得了吗?再也许,你电脑配置太低了
Squall1009 2013-01-17
  • 打赏
  • 举报
回复
1000连接。。。 得多大的并发啊
wapigzhu 2013-01-17
  • 打赏
  • 举报
回复
找个工具查查是什么东西耗cpu最多呗..
桃园闲人 2013-01-17
  • 打赏
  • 举报
回复
有可能是使用的资源没有及时释放。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧