锁定老帖子 主题:Tomcat并发性能调优问题
精华帖 (0) :: 良好帖 (1) :: 新手帖 (1) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-05-06
zb1015 写道
一个简单的方法,把sql到sqlplus里执行一下,看看用时,其实20个连接,你的sql运行快的话,40并发是没问题的,如果你的sql执行慢的话,别说20,100也是不行的.
我刚刚遇到这个问题,还发了贴,他们说用缓存,但我还是把执行慢的sql用了存储过程,你可以试试
单个SQL执行的话,都不超过1秒,但是并发一多,时间就长了。我这里的SQL都是查询语句,虽然有子查询,但是使用存储过程是提高不了速度的。 |
|
返回顶楼 | |
发表时间:2008-05-06
引用
同意! lz的情形目前每遇到过,不过有差不多类似的大数据量 当前公司的系统存在4大系统连接到一个数据库上,某些地方使用sybase,其他使用oracle 至少v9,没有用过sql2XXX 数据量非常大,按照月表存储,存在5类数据存为月表,每个月表数据至少300W 其中web系统一般架构在tomcat 5.0,少量在weblogic v8或以上, 目前觉得楼主应该 1 采用连接池 2 数据库能够给web提供多少连接就设置web最大连接为那个数值,当前看你们的系统并发访问>>>当前设置的连接20,觉得有问题 3 数据库服务器cpu 80%~100%之间绝对有问题,我们公司同时存在4大系统访问同一个数据库,数据库服务器,只有在一个特定的时刻才会出现高占用率,而且非常平稳,我们客户的机器环境和你的相当,除开采集和后台计算有动作时cpu会飙升,一般web动作时,基本上cpu比较平稳的,不会长时间在高水平,一般<90%,稳定时在25%左右 4 tomcat设置有问题,看你所说内存占用仅仅200M有问题,记得前面有人说jvm配置512M~1.4G,一般jvm占用在800左右,这个比较正常,当前我们的系统都是使用768M~1.4G,其实很多时候是接近1.3G,无法设置到1.4G,我们的应用一般空闲时都会达到950M的样子,其中档案作了数据缓存大概要消耗150M左右内存 建议JVM有多少设置多少吧,我觉得你们的应用设置384M~768M应该够了,过大JVM gc回收时太耗时。 如果JVM经常消耗cpu非常高〉90%而且jvm内存占用接近设置的最大值,非常有可能就是存在内存泄露,或者程序存在非常巨大的内存请求导致的(4月初,一个现场出现web经常cpu〉90%,tomcat假死,解决原因:缓存方案不合理,导致频繁请求大内存进行数据缓存,优化缓存方案后解决) 5 利用数据库的监测工具检测耗时的操作,和当前的锁情况或连接情况
|
|
返回顶楼 | |
发表时间:2008-05-23
mobilefeather 写道
引用
同意! lz的情形目前每遇到过,不过有差不多类似的大数据量 当前公司的系统存在4大系统连接到一个数据库上,某些地方使用sybase,其他使用oracle 至少v9,没有用过sql2XXX 数据量非常大,按照月表存储,存在5类数据存为月表,每个月表数据至少300W 其中web系统一般架构在tomcat 5.0,少量在weblogic v8或以上, 目前觉得楼主应该 1 采用连接池 2 数据库能够给web提供多少连接就设置web最大连接为那个数值,当前看你们的系统并发访问>>>当前设置的连接20,觉得有问题 3 数据库服务器cpu 80%~100%之间绝对有问题,我们公司同时存在4大系统访问同一个数据库,数据库服务器,只有在一个特定的时刻才会出现高占用率,而且非常平稳,我们客户的机器环境和你的相当,除开采集和后台计算有动作时cpu会飙升,一般web动作时,基本上cpu比较平稳的,不会长时间在高水平,一般<90%,稳定时在25%左右 4 tomcat设置有问题,看你所说内存占用仅仅200M有问题,记得前面有人说jvm配置512M~1.4G,一般jvm占用在800左右,这个比较正常,当前我们的系统都是使用768M~1.4G,其实很多时候是接近1.3G,无法设置到1.4G,我们的应用一般空闲时都会达到950M的样子,其中档案作了数据缓存大概要消耗150M左右内存 建议JVM有多少设置多少吧,我觉得你们的应用设置384M~768M应该够了,过大JVM gc回收时太耗时。 如果JVM经常消耗cpu非常高〉90%而且jvm内存占用接近设置的最大值,非常有可能就是存在内存泄露,或者程序存在非常巨大的内存请求导致的(4月初,一个现场出现web经常cpu〉90%,tomcat假死,解决原因:缓存方案不合理,导致频繁请求大内存进行数据缓存,优化缓存方案后解决) 5 利用数据库的监测工具检测耗时的操作,和当前的锁情况或连接情况
查询比更新越频繁,性能差异会越大 |
|
返回顶楼 | |
发表时间:2008-07-17
mobilefeather 写道 robbin 写道 出现503错误是说明你的Apache HTTPD Server无法正确连接到后端的Tomcat,超时以后报错为503。这很可能是因为你的Apache转发请求给Tomcat的配置有问题。其实Tomcat现在性能已经相当好了,建议你去掉Apache,直接使用Tomcat,打开APR支持,这样已经足够好了。
你出现这个问题和数据库连接池没有关系。不过你可以考虑把数据库连接池的最大值开到50个,以应付峰值请求。另外不同的连接池还是有很明显的性能差异的,对高并发情况下的数据库访问性能有很大的影响。 有几点需要补充的。 系统前端的WEB服务器是IIS。出现的503错误,也是IIS返回的。在IIS返回503错误的时候,如果直接绕过IIS直接访问TOMCAT,会长时间没有返回。 在系统上线初期,曾经经常出现IIS和TOMCAT同时死掉的现象,后来把IIS转发的缓冲调大到32K就没再出现了。 因为用户需要实现集成WINDOWS身份验证,而且要在已经登录了域的客户端,使用IE访问系统可以自动登录,不需用户手工填写用户名密码登录。(IE可以自动通过Kerberos协议或NTLM协议把操作系统的登录信息发送给WEB服务器)。因此前端使用了IIS做这个集成身份验证的工作。再通过AJP把请求转给TOMCAT。 之前我们曾经尝试使用jcifs在JAVA直接实现集成WINDOWS身份验证,前端不使用IIS而直接用TOMCAT。但是jcifs的表现很不稳定,经常出现连续多次验证失败的现象。无奈之下才在前面重新加个IIS做身份验证。 我们公司也用 jcifs 作域认证的, 摸有表现不稳定的现象阿,你是不是用了 jcifs提供的 html filter啊? 别用那个,那个不太灵,而且集群的情况下会有问题, 自己调用 jcifs api 作认证好了。 用 iis +tomcat多别扭阿 |
|
返回顶楼 | |