tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Struberg <strub...@yahoo.de>
Subject Re: measure session size?
Date Mon, 09 Feb 2015 10:26:43 GMT
Often both numbers are interesting. 


The complete session size is important to know as it tells you how much memory you need (before
having to swap sessions to disc). And often devs put way too much stuff into the session without
noticing.

The delta-size is important for the network traffic on 'real' clustering. But be aware that
there is no specified way to know what parts of the session account for a delta. In Tomcat
an attribute gets delta-replicated ONLY if the attribute gets set. 


E.g. if you have a Map<String, String> vals; and set this into the session once and
then just change the content, then this attribute will NOT get delta-replicated by Tomcat!
(Despite it's content did change). You will need an explicit set on that attribute. 

But be aware that this might trigger another dead spot in the servlets spec. Tomcat does detect
that you set the same attribute instance again and will NOT fire a attribute destroyed event.
So Tomcat _actively_ suppresses the destroy event in that very case. But other containers
do not. They will simply destroy your 'old' attribute value (which is actually the same as
the 'new' one) and your application might blow up.

Long story short: if you activate delta-replication then you leave the portable route and
you need to know excactly what YOUR container does in that case.

LieGrue,
strub





> On Wednesday, 4 February 2015, 20:38, Romain Manni-Bucau <rmannibucau@gmail.com>
wrote:
> > after all this effort you'll maybe be disappointed. For clustering (in
> particular tomcat one) what is important is not session size but delta
> size and throughoutput. typically if your session does 10M but only
> 200b are moving between nodes once a user is conencted for instance
> this is fine. About 1.5K then it depends as usual of your contraints
> and infra. Best way to know is to measure performances and "cost"
> (cloud network is not always free for instance). Once you have it you
> can compare it to what you would like / what you can accept. There is
> no general rule sadly
> 
> 
> Romain Manni-Bucau
> @rmannibucau
> http://www.tomitribe.com
> http://rmannibucau.wordpress.com
> https://github.com/rmannibucau
> 
> 
> 2015-02-04 20:31 GMT+01:00 Karl Kildén <karl.kilden@gmail.com>:
>>  OK so I did
>> 
>>  grant codeBase "file:${catalina.home}/webapps/myapp/-" 
> {
>>          permission java.security.AllPermission;
>> 
>>  };
>> 
>> 
>>  https://gist.github.com/karlkilden/51233a012071a8f82c26
>> 
>>  It works... Thanks - I was not very comfortable editing the security policy
>>  then again we do hosting and one app per TomEE so it hardly matters anyway.
>> 
>>  My session size seems to be 1.5KB I wonder if that's to large for a
>>  clustering setup? I think I will use the JDBC storage one for clustering
>>  and use sticky sessions
>> 
>>  cheers
>> 
>>  On 4 February 2015 at 20:01, Romain Manni-Bucau 
> <rmannibucau@gmail.com>
>>  wrote:
>> 
>>>  sure
>>> 
>>> 
>>>  Romain Manni-Bucau
>>>  @rmannibucau
>>>  http://www.tomitribe.com
>>>  http://rmannibucau.wordpress.com
>>>  https://github.com/rmannibucau
>>> 
>>> 
>>>  2015-02-04 19:59 GMT+01:00  <karl.kilden@gmail.com>:
>>>  > Tried it, tomcat kills the thread and logs a security something
>>>  exception. Guess i would need to turn off security manager
>>>  >
>>>  > Skickat från min iPhone
>>>  >
>>>  >> 4 feb 2015 kl. 19:52 skrev Romain Manni-Bucau 
> <rmannibucau@gmail.com>:
>>>  >>
>>>  >> @Karl: if you didnt wrap it just use session fielf of the 
> session you
>>>  >> get (by reflection). Should be serializable
>>>  >>
>>>  >>
>>>  >> Romain Manni-Bucau
>>>  >> @rmannibucau
>>>  >> http://www.tomitribe.com
>>>  >> http://rmannibucau.wordpress.com
>>>  >> https://github.com/rmannibucau
>>>  >>
>>>  >>
>>>  >> 2015-02-04 19:49 GMT+01:00  <karl.kilden@gmail.com>:
>>>  >>> Hello Mark, httpsession does not implement Serializable 
> and tomcat
>>>  sessionholder does not. The actual session is not obtainable :(
>>>  >>>
>>>  >>> Skickat från min iPhone
>>>  >>>
>>>  >>>> 4 feb 2015 kl. 16:52 skrev Mark Struberg 
> <struberg@yahoo.de>:
>>>  >>>>
>>>  >>>> did that via a SerlvetFilter and just serialized the 
> session into a
>>>  byte[] and output the size. As benefit you also see early on whether 
> you
>>>  have something which is not properly Serializable and would fail on a
>>>  cluster.
>>>  >>>>
>>>  >>>> LieGrue,
>>>  >>>> strub
>>>  >>>>
>>>  >>>>
>>>  >>>>
>>>  >>>>
>>>  >>>>
>>>  >>>>>> On Monday, 2 February 2015, 20:01, Karl Kildén 
> <
>>>  karl.kilden@gmail.com> wrote:
>>>  >>>>>> Hello!
>>>  >>>>>
>>>  >>>>> Anyone got some ideas on how to measure session 
> size?
>>>  >>>>>
>>>  >>>>> I serialized the JSF sessionmap and it gave some 
> hints but seems not
>>>  >>>>> everything is there. If I CDI scope with Session 
> and put a lot of
>>>  stuff in
>>>  >>>>> my bean the JSF map does not grow and I can't 
> figure out how to
>>>  serialize
>>>  >>>>> the session manually...
>>>  >>>>>
>>>  >>>>> If anyone knows exactly how viewstate and 
> sessionstate is stored for
>>>  a
>>>  >>>>> modern CDI/JSF application I would be glad to hear 
> about some
>>>  internals.
>>>  >>>>>
>>>  >>>>> I have no issues - just want to know this so I can 
> keep tabs as my
>>>  app grows
>>>  >>>>>
>>>  >>>>> cheers
>>>  >>>>>
>>> 
>

Mime
View raw message