[Topaz-dev] Mulgara Performance Woes

Andrae Muys andrae at netymon.com
Mon Mar 3 17:47:23 PST 2008


On 03/03/2008, at 9:47 PM, Life is hard, and then you die wrote:

>
> [warning: the rest here is _not_ applicable to our current mulgara
> usage which is via soap, but to the future usage which is via RMI]
>
> On Sat, Mar 01, 2008 at 09:51:46PM +1000, Andrae Muys wrote:
>>
>> On 01/03/2008, at 3:45 AM, Russell Uman wrote:
>>
>>>
>>>> We need some idea of A) how long transactions are being kept
>>>> open,
>>>
>>> because certain things take a long time to serve (search, feeds,
>>> etc.).
>>> because once the pub-app times out its connection to mulgara,  
>>> mulgara
>>> keeps the transaction open for a long time, hopefully waiting.
>>
>> There's been a pending feature request to provide some sort of
>> keepalive on session connections for quite a while now, maybe this is
>> the impetus needed to push it to the front of the queue.
>
> Hmm, I thought RMI controlled connections? Is there a way to manage
> them? Or are you talking about having mulgara issue some sort no-op on
> the client side periodically in hopes of keeping the underlying
> rmi/tcp connection open? Do you know, does Sun's RMI implementation
> multiplex different requests over a single tcp connection, or does it
> use a separate connection for each request in progress?

Not so much a question of keeping the connection open, as detecting  
when the other-side goes away. I haven't taken the time to  
investigate exactly what is happening on the wire - although 10- 
minutes and a copy of ethereal will resolve that if we need to :).

>> On the other hand, if we used a two-level lock for the write-lock we
>> could support a preemptive close operation on session - allowing you
>> to clear the queue as app's timeout.
>
> Not sure if that will buy much: if a session is waiting on the
> write-lock can't you already go and close() it from another thread?
> (Ok, I believe it'll still acquire the lock but then it'll quickly
> notice the session has been closed and release it again - at least
> that was my understanding).

Yeah, you're right - there's no reentrancy check on session.close(),  
so while the resulting abort isn't as clean as a two-level lock, the  
outcome is the same.

Andrae

P.S. As I'm reading/writing email again this means I am finally in  
SF :)  Hopefully I'll get a chance to meet many of you while I'm up.

-- 
Andrae Muys
andrae at netymon.com
Senior RDF/SemanticWeb Consultant
Netymon Pty Ltd




More information about the Topaz-Dev mailing list