如何提高系统的并发响应性能?

V 发布于 2010/09/06 14:33
阅读 1K+
收藏 1

最近公司在开发一款代理服务器,简单来讲就是一个代理工厂,对真实服务再次封装,起到过滤安全作用及请求格式转换等作用。

这几天一直再弄JVM性能方面的问题,几经调整下来响应与请求比始终都只能在1:10左右,打个比方

写了个java类来模拟客户端请求,最后封装好,放到loadRunner里去压其并发响应效果,但几天下来没什么大的成效

有过类似经历的,能否谈谈经验受教受教啊。

加载中
0
欧德高
欧德高

用异步实现,具体可以看下netty或者xsocket,两者都有proxy的实现

0
老盖
老盖

JVM调整只是一方面,最重要的还是从代码入手,使用并发包、NIO等,另外在linux上java程序的性能比在windows上好得多。

0
V
V

问题补充说明下:

操作系统:linux   内存:8G  CUP: 两块 JDK:1.5

程序以经没什么可调整的了(我自个觉得,最主要是想从JVM这方面把它往上调,能调多少调多少),现在主要是布署在服务器上我的JVM如何调整认其响应速度更快,就目前,(非专业)我自个测下来的情况下2*24H  400个并发(最起码保证有200个足的并发下),接收请求2亿多次,响应才2千多万多点差不多三千那个样子,这个响应比太小了,能否优化JVM把这一性能再往上走进一步呢,(已试过优化JVM确实能提高,之前没优前更差),

但就目前,本人能力和限优不下去了:

-server -Xms2048m -Xmx2048m -Xmn768m -XX:+UseTLAB -XX:+UseParNewGC \

目前的设置如上,朋友们可否指点指点啊!

0
老盖
老盖

把JDK升级到1.6,因为支持epoll

0
V
V

回头去试试

0
黑桃
黑桃

一般来说,考虑性能问题,都先要分析清楚到底性能的瓶颈在哪里,哪几个阶段的性能不够,如何针对这几个阶段进行优化,这样大家也才好给你更具体的建议

0
V
V

把JDK升级到1.6,因为支持epoll

试了,JDK换了个1.6的性能确实有了点变化

0
王慧

你先把性能瓶颈找到再考虑其他的。

例如你这个例子,2亿多的请求,实际只响应了几千万条,说明程序的处理能力不够,资源不够。导致程序只能处理一部分的请求,多余的请求丢掉了。是每一个请求的处理时间和资源消耗太大,还是说怎么?如果一定要同步的请求和响应,那么如果你认为你程序没问题的话,也就是加资源的问题。CPU,内存,该加的加吧。

如果不一定非要请求响应同步,可以把请求和响应异步起来,这样你的并发就可以达到一个很可关的数字。

0
V
V

       类似的压力己做过,现在我主要的任务是调JVM,因为其它情况下的模拟以经做,最主要原因还是想在现有的硬件配置基础上,把JVM调到最优,对于这个应用而言

       之所以才有这么些响应(应该更多一些,请求是人为做的,目的是让程序在里边做处理过滤掉没意义的部分),但按照预测,不应该这么低,在调试中,遇到JVM有崩掉情况,后发现是内存泄漏导致所至,现在主要是想把JVM调到最优化,有相关经验的可否能分享分享

0
shijacky
shijacky

个人觉得还是找到瓶颈,有时候一句不正确的代码都有可能使你的内存用光,可以用jprofile调试下

返回顶部
顶部