So just a "heads-up" on what I plan to knock out in the next couple of
days.

I just gave a demo on Jetspeed running in a tweaked configuration (from
CVS).  I was upset at it's performance.  It wasn't as fast as I wanted
and this needs to be fixed.

Basically this involves some significant core changes:

- RunData will be removed from as many places as possible.  This is
necessary so that Jetspeed can instantiate Portlets in the background so
that client performance can be maximized.  The RunData is attached to a
specific HTTP request so this won't really work.  Things like expiring
of Portlets should not happen while the user waits.  Jetspeed should
return the expired portlet and do the expiration in the background.  

- Portlets need to be thread safe.  I am going be creating these left
and right within the Engine.  In the future we might have a tag
interface which Jetspeed can use to buffer up multiple Portlets in a
pool and then have only one thread process these at once... but not
right now.

- BadURLRequestor:  Right now if a URL is requested and the server isn't
available for some reason (routing, server down), Jetspeed will time out
every time this is requested.  The fixed JetspeedDiskCache will put all
invalid URLs into a hashtable.  If this URL is requested again Jetspeed
will immediately throw an IOException and serve the content.  There will
be a low priority thread that will download the invalid URLs and try to
update the cache as the URLs become available.

- Smarter Disk Cache:  This is an area which is clearly a problem but I
am not sure how to fix.  Right when Jetspeed is started it fetches XML
from the FeedDaemon and tries to put as much in the cache as possible. 
This isn't such a *huge* problem because this happens within one or two
minutes.  The problem is that when a client requests something like an
RSS channel (or anything that wants to pull content form the Disk Cache)
it might need to fetches a remote URL.  The problem is that this may
time out (DOS).  So there are two alternatives:

        - Allow Jetspeed to time out because delivering correct content is more
important.

        - Don't allow Jetspeed to time out because delivering *fast* content is
more important.  
        At this point Jetspeed would throw an IOException and then create a
thread to fetch a URL
        so that the next request doesn't have to throw an IOException because
the URL will be in 
        cache at this point.

    If anyone has any comments here it would be appreciated.  It could
perhaps be a property that the user could choose.

- Pre-instantiating all Portlets:  If you turn on a property, and
Jetspeed has enough memory, I am going to instantiate all Portlets from
the PortletRegistry and from the FeedDaemon.  This should basically make
Jetspeed run right from memory and much faster.  Smaller installations
can turn this off.  There are only 1700 or so possible Portlets even
with OCS turned on.  Maybe this will change in the future but hopefully
this will grow while memory becomes cheaper.

I am sure there is more stuff I have forgotten/missed.

Kevin

-- 
Kevin A Burton ([EMAIL PROTECTED])
http://relativity.yi.org
Message to SUN:  "Please Open Source Java!"
"For evil to win is for good men to do nothing."


--
--------------------------------------------------------------
Please read the FAQ! <http://java.apache.org/faq/>
To subscribe:        [EMAIL PROTECTED]
To unsubscribe:      [EMAIL PROTECTED]
Archives and Other:  <http://java.apache.org/main/mail.html>
Problems?:           [EMAIL PROTECTED]

Reply via email to