设为首页 收藏本站
查看: 569|回复: 0

[经验分享] tomcat session with tomcat的几个测试

[复制链接]

尚未签到

发表于 2017-1-16 11:57:20 | 显示全部楼层 |阅读模式
花了一点时间,测试了一下jetty/tomcat对session持久化的一些做法。
测试环境: 运行在我的T60上的Virtualbox linux, ubuntu server 8.10,安装在独立硬盘分区上。jdk是sun 的1.6.0.10.用 ab来测试。只比较每秒执行的url请求这一项。
session.jsp是一个很简单的文件:
<%  session.setAttribute("name",System.currentTimeMillis()+""); %>
<%= session.getId()%> <br>
<%= session.getCreationTime()%>
<% session.invalidate();%>


nosession.jsp更简单:
<%=5%>


jetty 6.1.14
thread pool = 200
-n 5000 -c 500  session.jsp , 460/s
-n 5000 -c 500  nosession.jsp , 480/s
-n 5000 -c 2000  session.jsp , 450/s,约1/3几率无法完成 (connection reset by server)
-n 5000 -c 2000  nosession.jsp , 450/s,约1/3几率无法完成

作为对照,先搞了个jdbcSessionManager进来:
jetty 6.1.14 with jdbcSessionManager( take from 7.0.0 pre 5)
   -n 5000 -c 50  session.jsp , 28/s

-c超过50都无法完成。
仔细一看代码,里面去进行jdbc session save的代码居然是同步的….简直是无语….本来就是拿来做对比的,所以也没有去折腾改写代码。

tomcat 6.0.18
thread pool = 150(设为200没有明显变化)
-n 5000 -c 500  session.jsp , 680/s
-n 5000 -c 500  nosession.jsp , 680/s
-n 5000 -c 2000  session.jsp , 614/s  超过半数几率无法完成
-n 5000 -c 2000  nosession.jsp , 618/s 超过半数几率无法完成


试一下laoer(http://www.iteye.com/topic/82565)的代码。首先,不支持session.invalidate是个很大的问题。再看一下效率:
tomcat 6.0.18 with laoer's memcached session filter, ( whalm memcached client v2.0.1), sockIOPool max size = 250
-n 5000 -c 250  session.jsp , 108/s (max)
-n 5000 -c 250  nosession.jsp , 146/s (max)
-n 5000 -c 500  session.jsp , 无法完成
-n 5000 -c 500  nosession.jsp , 无法完成

问题可能是出在filter的效率上。没有认真分析。
再试一下codeutil(http://www.iteye.com/topic/81641)的代码。因为是直接替换掉defaultSessionManager,效率是有保证的。
tomcat 6.0.18 with codeutil's memcached session manager( whalm memcached client v2.0.1) ,sockIOPool max size = 250
-n 5000 -c 250  session.jsp , 570/s
-n 5000 -c 500  session.jsp , 577/s
-n 5000 -c 500  nosession.jsp , 575/s
-n 5000 -c 250  nosession.jsp , 568/s

可以看到memcached调用产生了一些拖累。效率降低在17%左右。
好吧,换用一下spymemecached。
tomcat 6.0.18 with codeutil's memcached session manager( spy memcached client 2.2 )
-n 5000 -c 250  session.jsp , 367/s
-n 5000 -c 500  session.jsp , 360/s
-n 5000 -c 500  nosession.jsp , 429/s
-n 5000 -c 250  nosession.jsp , 430/s

结果居然更慢了….奇怪ing …



时间所现,未仔细分析各方面的问题产生的原因。以上测试每个都是重启tomcat/jetty,每隔10秒运行因此,运行5次,取后三次的平均。仅供参考。

当然,web 2.0网站使用的时候,最好是不用session。也就是说直接在cookie里面放userid。真的当用户要进行敏感操作的时候再来用session。memcached未必适合这种存储session的操作,因为memcached本身会成为单点。但是别忘了还有一大陀的其他东东,比如memcachedb和TT(tokyo tryant)都是可以用memcached protocol的呀….而tokyo tryant是可以复制的,也会永久存储….

invalidate的部分,为了避免多个tomcat自己计时的问题,可以设置把时间戳记到TT里面,然后用lua去进行invalidate 。
看了几个关于session with memcached的帖子,说的最好的是acdc.(http://www.iteye.com/topic/135066)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-329261-1-1.html 上篇帖子: [#0x0024] Tomcat 6.0环境变量和Tomcat Manager Account 下篇帖子: tomcat自启动脚本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表