如何提高系统的并发响应性能?? 400 报错
最近公司在开发一款代理服务器,简单来讲就是一个代理工厂,对真实服务再次封装,起到过滤安全作用及请求格式转换等作用。
这几天一直再弄JVM性能方面的问题,几经调整下来响应与请求比始终都只能在1:10左右,打个比方
写了个java类来模拟客户端请求,最后封装好,放到loadRunner里去压其并发响应效果,但几天下来没什么大的成效
有过类似经历的,能否谈谈经验受教受教啊。
用异步实现,具体可以看下netty或者xsocket,两者都有proxy的实现
######JVM调整只是一方面,最重要的还是从代码入手,使用并发包、NIO等,另外在linux上java程序的性能比在windows上好得多。
######问题补充说明下:
操作系统:linux 内存:8G CUP: 两块 JDK:1.5
程序以经没什么可调整的了(我自个觉得,最主要是想从JVM这方面把它往上调,能调多少调多少),现在主要是布署在服务器上我的JVM如何调整认其响应速度更快,就目前,(非专业)我自个测下来的情况下2*24H 400个并发(最起码保证有200个足的并发下),接收请求2亿多次,响应才2千多万多点差不多三千那个样子,这个响应比太小了,能否优化JVM把这一性能再往上走进一步呢,(已试过优化JVM确实能提高,之前没优前更差),
但就目前,本人能力和限优不下去了:
-server -Xms2048m -Xmx2048m -Xmn768m -XX:+UseTLAB -XX:+UseParNewGC \
目前的设置如上,朋友们可否指点指点啊!
######把JDK升级到1.6,因为支持epoll
######回头去试试
######一般来说,考虑性能问题,都先要分析清楚到底性能的瓶颈在哪里,哪几个阶段的性能不够,如何针对这几个阶段进行优化,这样大家也才好给你更具体的建议
######把JDK升级到1.6,因为支持epoll
试了,JDK换了个1.6的性能确实有了点变化
######你先把性能瓶颈找到再考虑其他的。
例如你这个例子,2亿多的请求,实际只响应了几千万条,说明程序的处理能力不够,资源不够。导致程序只能处理一部分的请求,多余的请求丢掉了。是每一个请求的处理时间和资源消耗太大,还是说怎么?如果一定要同步的请求和响应,那么如果你认为你程序没问题的话,也就是加资源的问题。CPU,内存,该加的加吧。
如果不一定非要请求响应同步,可以把请求和响应异步起来,这样你的并发就可以达到一个很可关的数字。
######类似的压力己做过,现在我主要的任务是调JVM,因为其它情况下的模拟以经做,最主要原因还是想在现有的硬件配置基础上,把JVM调到最优,对于这个应用而言
之所以才有这么些响应(应该更多一些,请求是人为做的,目的是让程序在里边做处理过滤掉没意义的部分),但按照预测,不应该这么低,在调试中,遇到JVM有崩掉情况,后发现是内存泄漏导致所至,现在主要是想把JVM调到最优化,有相关经验的可否能分享分享
######个人觉得还是找到瓶颈,有时候一句不正确的代码都有可能使你的内存用光,可以用jprofile调试下
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。