On Apr 4, 2011, at 5:37 PM, Kevin Hinkson wrote:

> Hi all,
> I am a bit puzzled about how WO handles concurrent requests.
> 
> I have a request that can run for a very long time, let's say 30 minutes.

That sounds more like a periodic task than a real request.


> After looking around at other posts, the options for allowing this to run 
> without the adaptor and apache complaining after a minute or so are:
> 
> * implement WOLongResponsePage
> * Adjust the adaptor timeout settings
> * make it run faster

* Do what Mike said.  Which in this case is The Right Answer.


> Since I could not make the data crunching any faster and I'm lazy, I opted to 
> adjust the adaptor timeout settings. This worked fine I thought. 

That is not doing yourself any favors.  That is just going to hide the problem 
with your app gets overloaded and seriously annoy your users.


> I am also running my app with the argument 
> -WOAllowsConcurrentRequestHandling=YES (among others settings) which I 
> thought would mean that one instance can handle multiple incoming requests.

Yes, but it does not make EOF multi-threaded.  If your long request was sending 
email instead of doing database access, then things would be different.


> But that does not seem to be the case. My app is running with one local 
> instance that should allow concurrent request handling but that one request 
> (the long running one) blocks, preventing others from running (they just 
> timeout). My solution has been to just add another instance and then schedule 
> them to restart 12 hours apart.

The preference is to run more than a single instance for load balancing, fault 
tolerance, and scheduling.


> So, my questions.
> 
> 1. Is changing the adaptor timeout setting the best option or is 
> WOLongResponse inherently better in some way?

See above.


> 2. What does WOAllowsConcurrentRequestHandling do or not do? Did I 
> misunderstand this argument?

It affects how HTTP requests are dispatched.  It does not prevent bottlenecks 
downstream in your code.

> 3. Why do we have to schedule restarts of instances? I suspect it has to do 
> with memory usage but I've never seen a clear answer on this.

The main reason is to allow the JVM to return memory to the OS.  It can also 
help to coverup bugs in your code.



> 4. How many instances should I really be running per app? Maybe some examples 
> of how you guys handle deciding how many to run would be great.


I'd say a minimum of two and a maximum of how many are needed.  If two provides 
the response time you are looking for, then that is enough.  Too many wastes 
system resources.  It is a balancing act.


Chuck

-- 
Chuck Hill             Senior Consultant / VP Development

Practical WebObjects - for developers who want to increase their overall 
knowledge of WebObjects or who are trying to solve specific problems.    
http://www.global-village.net/products/practical_webobjects







Attachment: smime.p7s
Description: S/MIME cryptographic signature

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to