论坛首页 Java企业应用论坛

Spring性能小测,参其它技术

浏览 23031 次
精华帖 (2) :: 良好帖 (20) :: 新手帖 (0) :: 隐藏帖 (20)
作者 正文
   发表时间:2008-06-05  
lgx522 写道
并发100个thread(此并发情况下各种技术基本都不会出Error


??
0 请登录后投票
   发表时间:2008-06-05  
lgx522 写道

测试这种事情,本就是见仁见智。因为各种技术体系的牛人都有深钻硬挖的本事,比到极端之处,往往是不了了之。
早已声明测试是不严格的,测试所涉及的软件全是在同一台机器上跑,优化配置几乎为0,也就是只要跑得起来就成,这种测试的绝对数值,已经声明是没有意义的。


全部在单机上面跑,没有做任何优化,只要能跑起来就成,这种测试确实没有任何意义。

引用
如果真有兴趣,JE不妨集合几位各技术体系的代表性牛人,在同样的硬件条件下拼一下,也许才能让大家服点气。


不存在服气不服气的问题,反正又不是我发明的编程语言。PHP/Java/Ruby我都用过很长时间,不知道我算代表哪个技术体系?

引用
用意不在比试谁高谁低,而在于提醒大家关注性能问题。现在论坛上大多数帖只在关心开发效率和理论花样了,好像性能已经不再是问题了。可惜,现实中越有用的系统访问量越大,不及早考虑性能问题,早晚是要爆掉的。


大访问量系统的可扩展性问题主要取决于软件的架构,而不是软件究竟采用什么编程语言。关注性能没有错,但是性能好坏不取决于你用什么编程语言和什么开源框架,而是取决于你的软件架构。当然不同的编程语言实现可扩展性架构的难度有所不同,我觉得这个才是最值得探讨的地方。

引用
闲话:近些天发了些不对大家胃口的言论,一下子掉了不少分。此帖也快隐藏了,还是先撤了吧。不当之处敬请谅解,还是诚心祝愿大家的系统个个都能飞快。


大家的胃口是啥呢?

0 请登录后投票
   发表时间:2008-06-05  
这份测试数据相差也太远了吧~~~
0 请登录后投票
   发表时间:2008-06-05  

大访问量系统的可扩展性问题主要取决于软件的架构,而不是软件究竟采用什么编程语言。关注性能没有错,但是性能好坏不取决于你用什么编程语言和什么开源框架,而是取决于你的软件架构。当然不同的编程语言实现可扩展性架构的难度有所不同,我觉得这个才是最值得探讨的地方。

此句经典
0 请登录后投票
   发表时间:2008-06-06  
[quote="robbin]

大访问量系统的可扩展性问题主要取决于软件的架构,而不是软件究竟采用什么编程语言。关注性能没有错,但是性能好坏不取决于你用什么编程语言和什么开源框架,而是取决于你的软件架构。当然不同的编程语言实现可扩展性架构的难度有所不同,我觉得这个才是最值得探讨的地方。



既然robbin诚心讨论这个问题,那就一起探讨一下吧。
系统软件的性能的确是取决于软件架构,但“架构”不是个纯粹概念性的东西,而在建立在不同的编程语言和框架的基础之上,并最终还是要落实到语言和框架上的。

不同语言和框架实现可扩展性架构的难度不同,也意味着代价不同。不仅包括软件开发的代价,还包括硬件的代价,布署的代价。
三十左右的同道,相信都尝试过好几种语言和框架。大家如果能抛开门户之见,好好谈一谈在不同语言和框架下如何以有限的代价最大限度实现可扩展架构,那么笔者这种抛砖引玉的帖子才有些用处。

google的架构算是数一数二的吧,注意它是建立在python这种本身高效的语言之上的。而google是如何实现它的,至少我是不知道,有认识的同道可以说一下。
身为老大的yahoo是PHP的代表,人家如何做到这一点,花了多大的代价,有认识的也可以谈一下。
ebay是Java的代表,以前是以EJB闻名的。大家其实可以探讨一下钟爱的Spring在这方面的案例和经验。
包括.NET,尽管经常被指责性能和安全性问题,可人家MS就有本事让自己的网站挤身前几位。但本人实在是怀疑MS留了后手,不然那么多.NET的中间层实践怎么老是硬不起来。

还有就是RoR,老实说我真的很喜欢写RoR的代码,可总是担心性能。有经验的不妨谈一下RoR需要花费多少硬件和布署的代价才能达到上述主流技术同等的水平。

以上疑问,说实在的,不是笔者这种业余编程爱好者所能回答的问题。有经验的同道可以续帖,或另开专题讨论。
随着信息系统的应用日益广泛庞大,性能和可扩展性越来越成为现实中棘手的问题。
可以说,接单子靠的是忽悠、耍花样和功能全;接下单子实际干起来,性能和易用性才是最重要的。实际应用中用户最忍受不了的,第一是“慢”,第二是“难用”,第三是“变来变去”。至于你是用C/S还是B/S,是SQL还是ORM,是纯Web还是RIA,其实真的没有几个用户会关心。
由于本人正业是系统管理,某种角度上来说正是“旁观者”。建议大家不妨多考虑一下用户的真实要求,多关注一下性能问题。
0 请登录后投票
   发表时间:2008-06-06  
引用
不同语言和框架实现可扩展性架构的难度不同,也意味着代价不同。不仅包括软件开发的代价,还包括硬件的代价,布署的代价。
三十左右的同道,相信都尝试过好几种语言和框架。大家如果能抛开门户之见,好好谈一谈在不同语言和框架下如何以有限的代价最大限度实现可扩展架构,那么笔者这种抛砖引玉的帖子才有些用处。

google的架构算是数一数二的吧,注意它是建立在python这种本身高效的语言之上的。而google是如何实现它的,至少我是不知道,有认识的同道可以说一下。
身为老大的yahoo是PHP的代表,人家如何做到这一点,花了多大的代价,有认识的也可以谈一下。
ebay是Java的代表,以前是以EJB闻名的。大家其实可以探讨一下钟爱的Spring在这方面的案例和经验。
包括.NET,尽管经常被指责性能和安全性问题,可人家MS就有本事让自己的网站挤身前几位。但本人实在是怀疑MS留了后手,不然那么多.NET的中间层实践怎么老是硬不起来。


你声称要谈架构,结果还是在谈编程语言,而且这种编程语言的对比还是建立在道听途说上面的。比方说Google吧,Google用的最多的编程语言是C++,其次是Java,最后才是Python,而且和你想像的不一样,Google大部分底层设施都是用C/C++编写的,并不是用Python写的。实际上在Google内部,Python主要用来做应用的黏合剂,以及各种各样的小工具。这是06年的时候我和一位资深的Google工程师吃饭的时候他告诉我的。

引用
还有就是RoR,老实说我真的很喜欢写RoR的代码,可总是担心性能。有经验的不妨谈一下RoR需要花费多少硬件和布署的代价才能达到上述主流技术同等的水平。


你这人怎么一根筋呢。你以为Google只用Python一种语言,Yahoo只用PHP一种语言,ebay只用Java一种语言吗? Google就是混合C++/Java/Python三种语言用的,至于Yahoo更不用说,他的搜索引擎是用C++写的,Yahoo还大量的使用perl,eBay我不了解,但听说他用过Tuexdo,这是C++的交易中间件吧?你再看看Facebook刚刚开放的平台源代码,也是PHP和C的混合编程,而且Facebook还用到了Erlang。现在哪个软件项目不是混合多种语言编程? 就算用Ruby做这样的主流应用,那也不可能光用ruby一种语言阿,肯定是多种语言一起上:ruby,C++,erlang,Java一块用。

引用

以上疑问,说实在的,不是笔者这种业余编程爱好者所能回答的问题。有经验的同道可以续帖,或另开专题讨论。
随着信息系统的应用日益广泛庞大,性能和可扩展性越来越成为现实中棘手的问题。
可以说,接单子靠的是忽悠、耍花样和功能全;接下单子实际干起来,性能和易用性才是最重要的。实际应用中用户最忍受不了的,第一是“慢”,第二是 “难用”,第三是“变来变去”。至于你是用C/S还是B/S,是SQL还是ORM,是纯Web还是RIA,其实真的没有几个用户会关心。
由于本人正业是系统管理,某种角度上来说正是“旁观者”。建议大家不妨多考虑一下用户的真实要求,多关注一下性能问题。


性能问题主要还是看你软件系统的架构设计,这个架构的含义是指:整个系统的网络拓扑结构是什么样的;系统的各个部分怎么划分,例如Web怎么部署,应用怎么部署,缓存怎么部署,DB怎么部署;系统的数据怎么设计,例如什么数据放缓存,什么数据放文件系统,什么数据放数据库,以及数据文件怎么管理,怎么同步,备份方案是什么。而具体到每个部分例如Web服务器怎么分离动态静态访问,怎么负载均衡和故障切换,例如应用服务器怎么进行群集扩展,怎么处理Session同步,怎么监控系统负载,怎么减轻SQL压力,如何正确的把各种不同类型的应用用最合适的方案去解决,而缓存系统如何分布式部署,最后是数据库如何分担IO负载,如何设计表结构来实现大数据量的扩展性。

所有这些问题我以为都是系统管理人员应该去考虑的,而不是整天去比较啥啥解析器哪个循环快一点,哪个循环慢一点。
9 请登录后投票
   发表时间:2008-06-06  
首先感谢robbin的指教。这类知识其实过去也看过不少了,包括JE上的各种文章,常识也还是有一点的。

综合下来这类巨型网站其实都是一致的,也就是C/C++做底层,Java、PHP这类的做前端显示,再生成静态页面等等。
所谓架构,扯来扯去基本上是一回事,最后还是要靠C这个老妖精。

但是大多数应用是不会达到如此海量的访问,以至于需要这类架构的程度,也付不起这样的成本。
我们绝大多数的程序员所面对的,还是中型应用,还是那种在大多数情况下应用同一种编程语言和框架,访问关系数据库的应用。
没有上万的用户和足够的资金,没有一堆的服务器可以分来分去,没有强悍的架构师把各种语言、框架融合得很精彩,也没有资深的部署人员可以把性能调到最优。
绝大多数的程序员和用户,需要的是很快就可以学会用起来的布署和配置方式。说得庸俗一点,是像Tomcat、wamp、IIS、InstantRails那类的东西。在这样的现实和条件下,不要说性能差异是没有意义的。

产生这些争论,其实主要是缘于大家工作的领域和关注点不同所致。robbin和很多同道主要是做互联网的,本人和周围的同事朋友则是做企业传统应用的多。大家都有要面对和解决的问题,还是取长补短,互相多包容些吧。
0 请登录后投票
   发表时间:2008-06-06  
我就喜欢和robbin抬杠

1,google用python是做什么?粘合剂?太模糊了吧,google用c++作为主力是真的,要求性能的分布式系统都是c++写的,而python是他们的管理系统,至于java是用来干什么的,我不知道,不过我知道他们有40%左右的java开发人员,当然这些人也非常擅长于c++以及python,甚至很多还是js高手,我是说他们一些部门的开发人员。比如mountain view的很多是混混。

2,至于java php ruby性能比拼!我觉得我们不是在写火星车导航系统,计算慢一点没关系的。同时也不是在写apache火力控制系统,稳定性也不用考虑。我们只是在做web app,所以我们看中的不是谁跑的快,而是用那种语言来做,容易跑的快,这个差别很大的。毕竟计算1+2+3。。。+100很快,不代表写一百个模块的系统也很快,反之亦然。

3,ebay里面没听说有牛人,估计只好请咨询啦,看java的要看walmart的,毕竟terracotta的老大来自哪里
0 请登录后投票
   发表时间:2008-06-06  
robbin 写道


性能问题主要还是看你软件系统的架构设计,这个架构的含义是指:整个系统的网络拓扑结构是什么样的;系统的各个部分怎么划分,例如Web怎么部署,应用怎么部署,缓存怎么部署,DB怎么部署;系统的数据怎么设计,例如什么数据放缓存,什么数据放文件系统,什么数据放数据库,以及数据文件怎么管理,怎么同步,备份方案是什么。而具体到每个部分例如Web服务器怎么分离动态静态访问,怎么负载均衡和故障切换,例如应用服务器怎么进行群集扩展,怎么处理Session同步,怎么监控系统负载,怎么减轻SQL压力,如何正确的把各种不同类型的应用用最合适的方案去解决,而缓存系统如何分布式部署,最后是数据库如何分担IO负载,如何设计表结构来实现大数据量的扩展性。

所有这些问题我以为都是系统管理人员应该去考虑的,而不是整天去比较啥啥解析器哪个循环快一点,哪个循环慢一点。


不过更多时候在讨论构架不是在考虑如何提高性能,而是在讨论如何修补些细节,让操作起来更加方便,或者拿些测试报告出来,让老板付钱觉得值得,只有少数时候是讨论如何扩展,

至于哪个循环快点?这个问题一般的答案是,“就算你写个死循环,我们也能很快速跑完它”
0 请登录后投票
   发表时间:2008-06-06  
williamy 写道

我们只是在做web app,所以我们看中的不是谁跑的快,而是用那种语言来做,容易跑的快,这个差别很大的。


终于遇到个知音,这个帖要讨论的就是这个。

扯来扯去都快跑题了,在此重申一下。

至于前面所提到的绝对数值,早已声明是没有考究意义的,就连我自己也不太当回事。
其中也就Spring那部分有点现实意义,毕竟运行条件和配置是完全一样的,对于SQL vs ORM还是有点参考意义。
大家有兴趣可以测测自己的系统,这倒是很有必要的。以免过于追新而陷入性能泥潭。

另外有点有趣的是,别看Spring体系下的数值不高,却相当稳当。也就是说,笔者做这些极端测试时,CPU占用必然是99%-100%。在这种极端情况下,用其它客户端访问几乎不见慢,不知是不是共享实例的好处。至于其它的,数值高是高,压力测试下还是见慢了,怀疑是“虚高”。

由此大大恢复了对Spring的信心。近期在筹划一个区域卫生信息共享的计划。琢磨下来,Spring jdbc方案辅以适量的存储过程应该可以搞得定。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics