Trying to achieve 100 concurrent users with an Orbeon web application

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

Trying to achieve 100 concurrent users with an Orbeon web application

PhilButler
Dear Alex, Erik and Orbeon community members,

First, thanks for all your efforts, Orbeon is truely a great product.

Please excuse my long post. Here at The University of Manchester Tom Grahame and I have got to a point in our developments using Orbeon that are fairly critical for us and that need some explanation. Although I've not previously posted to this list, Tom has and we've always been impressed by your responses.

In summary, my questions are two fold (but please read the background below to put these in context),

a) Are there any instances where Orbeon is being used to support a web application with around 100 (or more) concurrent users?

b) What more can we do, other than we outline below, to get to a position where our Orbeon based web application can support around 100 concurrent users?

My reasons for asking these questions are as follows.

We've been using Orbeon in a production environment now for around 9 months and in our developments for 18 months. We are runnning v3.8 and have kept up to date with latest releases. As we say above, this is because we truely believe Orbeon is great and it fits extremely well with our needs.

Our production environment essentially consists of Orbeon on top of a Java Struts layer and a digital object respository API (Fedora-commons, http://www.fedora-commons.org). We use Orbeon for our user interfaces, Struts for various aspects of our business logic and the repository to store metadata (in XML) and file uploads. Orbeon runs in a fairly configuration of Tomcat v5.5.27 with 1,024Mb of java heap (we can change these if needs be). We believe our hardware infrastructure is well specified and flexible (Sun Enterprise T5140 Server with 2*8 cores and 32GB RAM, running virtual servers which can be configured independently as required). So, for example, we can increase the memory allocated to a virtual machine, have multiple virtual machines (clustered if needs be) and/or multiple instances of Tomcat.

Normal load on our application is around 10 concurrent users and Orbeon performs OK in this situation. However, we can have peak periods of usage and we estimate this can involve 100 concurrent users. Under peak loads the performance of our application slows to a point it is unusable. Recently, we've been profiling our application (using JMeter, JConsole and iMacros). Our profiling and load testing work suggests we can confidently get our application to perform well with 15-20 concurrent users, however above this it appears that load times for pages delivered by Orbeon degrade noticeably. This is the case even for a simple part of our application, a single Orbeon view and model, with 3 input fields, a drop-down select and a submit button which performs a search against an eXist database of ~8,000 records, returning 10 results. We've applied many of the "performance and tuning" tips on the Orbeon wiki to get to this point (we haven't yet played with the epilogue.xpl). The other parts of our application (Struts, Fedora-commons) scale OK.

We recognise and appreciate that Orbeon does a lot of server-side processing. This is indicated by the high server memory usage during our load tests. Unfortunately, we've got to a point now where we are running out of ideas on what to do next. Plus we are still a long way off our target of ~100 concurrent users.

We are still very keen to use Orbeon, so much so we have now secured funds to purchase the recently released Professional Edition and associated support. However, we do wonder if we are asking too much of Orbeon and is our target of ~100 concurrent users realistic, irrespective of how much further performance/tuning work we do. Hence, our questions.

We hope the above makes sense and you can find the time to reply.

With regards,

Phil and Tom

***********************************
Dr Phil Butler
eScholarship Manager
Red 1.3 The John Rylands University Library,
The University of Manchester,
Oxford Road,
Manchester M13 9PP, UK
Tel: +44 (0)161 275 1514 (internal x51514)
Email: [hidden email]
Web: http://www.manchester.ac.uk/escholar
***********************************



--
You receive this message as a subscriber of the [hidden email] mailing list.
To unsubscribe: mailto:[hidden email]
For general help: mailto:[hidden email]?subject=help
OW2 mailing lists service home page: http://www.ow2.org/wws
Reply | Threaded
Open this post in threaded view
|

Passing data to a "static" Orbeon page

Steven Kerr
Experienced Orbeon developers

A web application I have been working on for some time is getting close
to finished.  I have been learning the various parts of the platform as
I go.  As the main form is working well I am developing the menu and
attempting to pass data into my form.  If I understand the Page Flow
documentation correctly, it is not possible for me to pass data into
into a "static" Orbeon page view (XHTML).  Is this correct?  I know the
page can be wrapped up as a XSLT View.  However when I tried this I get
lots of errors with parts of my form i.e.

<xhtml:div class="{if
(string(instance('labdb-form-instance')/resultsForm/@showTracing) =
'false') then 'xforms-disabled' else 'tracing'}">

Could someone please point me in the right direction?

Cheers

Steve



--
You receive this message as a subscriber of the [hidden email] mailing list.
To unsubscribe: mailto:[hidden email]
For general help: mailto:[hidden email]?subject=help
OW2 mailing lists service home page: http://www.ow2.org/wws
Reply | Threaded
Open this post in threaded view
|

Re: Passing data to a "static" Orbeon page

Louis Ratzesberger-2
Steve,

There is a lot of flexibility when building your pages.

You can use xinclude for things like footers, which themselves
can have xforms elements, or use xslt for this also.

There should be no reason to cast the xpath to a string, and
in any case the syntax is different, xs:string(...) and not simply
string(...), i.e., the constructor function most likely needs the
XML Schema namespace prefix.

Does the statement work with a simpler xpath selection?

--Hank

Quoting Steven Kerr <[hidden email]>:

> Experienced Orbeon developers
>
> A web application I have been working on for some time is getting close
> to finished.  I have been learning the various parts of the platform as
> I go.  As the main form is working well I am developing the menu and
> attempting to pass data into my form.  If I understand the Page Flow
> documentation correctly, it is not possible for me to pass data into
> into a "static" Orbeon page view (XHTML).  Is this correct?  I know the
> page can be wrapped up as a XSLT View.  However when I tried this I get
> lots of errors with parts of my form i.e.
>
> <xhtml:div class="{if
> (string(instance('labdb-form-instance')/resultsForm/@showTracing) =
> 'false') then 'xforms-disabled' else 'tracing'}">
>
> Could someone please point me in the right direction?
>
> Cheers
>
> Steve
>
>


--
Hank Ratzesberger
[hidden email]



--
You receive this message as a subscriber of the [hidden email] mailing list.
To unsubscribe: mailto:[hidden email]
For general help: mailto:[hidden email]?subject=help
OW2 mailing lists service home page: http://www.ow2.org/wws
Reply | Threaded
Open this post in threaded view
|

RE: Re: Passing data to a "static" Orbeon page

Steven Kerr
Hank

Thanks for your reply.  However I don't think I made my question clear.
I have a "static" form (.xhtml) that works nicely (including the code
sample I gave).  However I am now looking at passing information to it
using Page Flow.  From reading the documentation it looks like I can't
do that and need to convert it to a XSLT View first.  When I tried this
Orbeon didn't like some of my code i.e.  

 <xhtml:div class="{if
 (string(instance('labdb-form-instance')/resultsForm/@showTracing) =
 'false') then 'xforms-disabled' else 'tracing'}">

(However it works fine as a static page.)

So I guess my question is two part:

A) Can I pass info to my page as-is using Page Flow?
B) If not, how can I change the above code so it will pass through a
XSLT View?

Cheers

Steven




-----Original Message-----
From: Louis Ratzesberger [mailto:[hidden email]]
Sent: Wednesday, 30 June 2010 15:27
To: [hidden email]
Subject: [ops-users] Re: Passing data to a "static" Orbeon page

Steve,

There is a lot of flexibility when building your pages.

You can use xinclude for things like footers, which themselves can have
xforms elements, or use xslt for this also.

There should be no reason to cast the xpath to a string, and in any case
the syntax is different, xs:string(...) and not simply string(...),
i.e., the constructor function most likely needs the XML Schema
namespace prefix.

Does the statement work with a simpler xpath selection?

--Hank

Quoting Steven Kerr <[hidden email]>:

> Experienced Orbeon developers
>
> A web application I have been working on for some time is getting
> close to finished.  I have been learning the various parts of the
> platform as I go.  As the main form is working well I am developing
> the menu and attempting to pass data into my form.  If I understand
> the Page Flow documentation correctly, it is not possible for me to
> pass data into into a "static" Orbeon page view (XHTML).  Is this
> correct?  I know the page can be wrapped up as a XSLT View.  However
> when I tried this I get lots of errors with parts of my form i.e.
>
> <xhtml:div class="{if
> (string(instance('labdb-form-instance')/resultsForm/@showTracing) =
> 'false') then 'xforms-disabled' else 'tracing'}">
>
> Could someone please point me in the right direction?
>
> Cheers
>
> Steve
>
>


--
Hank Ratzesberger
[hidden email]




--
You receive this message as a subscriber of the [hidden email] mailing list.
To unsubscribe: mailto:[hidden email]
For general help: mailto:[hidden email]?subject=help
OW2 mailing lists service home page: http://www.ow2.org/wws
Reply | Threaded
Open this post in threaded view
|

Re: RE: Re: Passing data to a "static" Orbeon page

Jeremy Nix
Steven,

What kind of data are you wanting to pass/use?

If the data is request parameters, you have a few options.  You can
parse the request parameters out of the URL and set the values into an
input instance using the <setvalue> tags and the page pattern matching
capabilities.  You also can use the xxforms:get-request-parameter(...)
function to look up the request parameters.  Other options are available
if you were using dynamic pages that were produced by some sort of
pipeline.  In that case, you could look at
(http://www.orbeon.com/orbeon/doc/processors-generators-request) which
describes how to read the request paramters into an output variable
would could then be used as an input into another pipeline (say XSLT).

If the data is in the form of an XML post, then you would just need to
have an input:instance defined and reference the data through the
instance.  Ex: <instance id="labdb-form-instance" src="input:instance"/>.

------------------------------------------------------------------------
Jeremy Nix
Senior Application Developer
Cincinnati Children's Hospital Medical Center

On 06/30/2010 04:43 AM, Steven Kerr wrote:

> Hank
>
> Thanks for your reply.  However I don't think I made my question clear.
> I have a "static" form (.xhtml) that works nicely (including the code
> sample I gave).  However I am now looking at passing information to it
> using Page Flow.  From reading the documentation it looks like I can't
> do that and need to convert it to a XSLT View first.  When I tried this
> Orbeon didn't like some of my code i.e.
>
>   <xhtml:div class="{if
>   (string(instance('labdb-form-instance')/resultsForm/@showTracing) =
>   'false') then 'xforms-disabled' else 'tracing'}">
>
> (However it works fine as a static page.)
>
> So I guess my question is two part:
>
> A) Can I pass info to my page as-is using Page Flow?
> B) If not, how can I change the above code so it will pass through a
> XSLT View?
>
> Cheers
>
> Steven
>
>
>
>
> -----Original Message-----
> From: Louis Ratzesberger [mailto:[hidden email]]
> Sent: Wednesday, 30 June 2010 15:27
> To: [hidden email]
> Subject: [ops-users] Re: Passing data to a "static" Orbeon page
>
> Steve,
>
> There is a lot of flexibility when building your pages.
>
> You can use xinclude for things like footers, which themselves can have
> xforms elements, or use xslt for this also.
>
> There should be no reason to cast the xpath to a string, and in any case
> the syntax is different, xs:string(...) and not simply string(...),
> i.e., the constructor function most likely needs the XML Schema
> namespace prefix.
>
> Does the statement work with a simpler xpath selection?
>
> --Hank
>
> Quoting Steven Kerr<[hidden email]>:
>
>    
>> Experienced Orbeon developers
>>
>> A web application I have been working on for some time is getting
>> close to finished.  I have been learning the various parts of the
>> platform as I go.  As the main form is working well I am developing
>> the menu and attempting to pass data into my form.  If I understand
>> the Page Flow documentation correctly, it is not possible for me to
>> pass data into into a "static" Orbeon page view (XHTML).  Is this
>> correct?  I know the page can be wrapped up as a XSLT View.  However
>> when I tried this I get lots of errors with parts of my form i.e.
>>
>> <xhtml:div class="{if
>> (string(instance('labdb-form-instance')/resultsForm/@showTracing) =
>> 'false') then 'xforms-disabled' else 'tracing'}">
>>
>> Could someone please point me in the right direction?
>>
>> Cheers
>>
>> Steve
>>
>>
>>      
>
>
> --
> Hank Ratzesberger
> [hidden email]
>
>
>    


--
You receive this message as a subscriber of the [hidden email] mailing list.
To unsubscribe: mailto:[hidden email]
For general help: mailto:[hidden email]?subject=help
OW2 mailing lists service home page: http://www.ow2.org/wws
Reply | Threaded
Open this post in threaded view
|

Re: RE: Re: Passing data to a "static" Orbeon page

Louis Ratzesberger-2
In reply to this post by Steven Kerr

Steven,

Like Jeremy says, you can GET or POST to the url the page element  
defines in your page-flow.xml.  The POST data is available as the  
instance and the url parameters available through the request  
processor (now you need a model to run the request processor).

http://orbeon.com/orbeon/doc/reference-xforms-guide#xforms-instance-initialization-pfc

Cheers
--Hank

Quoting Steven Kerr <[hidden email]>:

> Hank
>
> Thanks for your reply.  However I don't think I made my question clear.
> I have a "static" form (.xhtml) that works nicely (including the code
> sample I gave).  However I am now looking at passing information to it
> using Page Flow.  From reading the documentation it looks like I can't
> do that and need to convert it to a XSLT View first.  When I tried this
> Orbeon didn't like some of my code i.e.
>
>  <xhtml:div class="{if
>  (string(instance('labdb-form-instance')/resultsForm/@showTracing) =
>  'false') then 'xforms-disabled' else 'tracing'}">
>
> (However it works fine as a static page.)
>
> So I guess my question is two part:
>
> A) Can I pass info to my page as-is using Page Flow?
> B) If not, how can I change the above code so it will pass through a
> XSLT View?
>
> Cheers
>
> Steven
>
>
>
>
> -----Original Message-----
> From: Louis Ratzesberger [mailto:[hidden email]]
> Sent: Wednesday, 30 June 2010 15:27
> To: [hidden email]
> Subject: [ops-users] Re: Passing data to a "static" Orbeon page
>
> Steve,
>
> There is a lot of flexibility when building your pages.
>
> You can use xinclude for things like footers, which themselves can have
> xforms elements, or use xslt for this also.
>
> There should be no reason to cast the xpath to a string, and in any case
> the syntax is different, xs:string(...) and not simply string(...),
> i.e., the constructor function most likely needs the XML Schema
> namespace prefix.
>
> Does the statement work with a simpler xpath selection?
>
> --Hank
>
> Quoting Steven Kerr <[hidden email]>:
>
>> Experienced Orbeon developers
>>
>> A web application I have been working on for some time is getting
>> close to finished.  I have been learning the various parts of the
>> platform as I go.  As the main form is working well I am developing
>> the menu and attempting to pass data into my form.  If I understand
>> the Page Flow documentation correctly, it is not possible for me to
>> pass data into into a "static" Orbeon page view (XHTML).  Is this
>> correct?  I know the page can be wrapped up as a XSLT View.  However
>> when I tried this I get lots of errors with parts of my form i.e.
>>
>> <xhtml:div class="{if
>> (string(instance('labdb-form-instance')/resultsForm/@showTracing) =
>> 'false') then 'xforms-disabled' else 'tracing'}">
>>
>> Could someone please point me in the right direction?
>>
>> Cheers
>>
>> Steve
>>
>>
>
>
>
> --
> Hank Ratzesberger
> [hidden email]
>
>
>


--
Hank Ratzesberger
[hidden email]



--
You receive this message as a subscriber of the [hidden email] mailing list.
To unsubscribe: mailto:[hidden email]
For general help: mailto:[hidden email]?subject=help
OW2 mailing lists service home page: http://www.ow2.org/wws
Reply | Threaded
Open this post in threaded view
|

RE: Re: RE: Re: Passing data to a "static" Orbeon page

Steven Kerr
In reply to this post by Jeremy Nix
Jeremy

Thanks for that!  I ended up using:

<xforms:instance id="my-params" src="input:instance"/>

And using default-submission & setvalue in the page flow to pass data
in.  Now that I can see it is working I am confident I can get it to do
what I need.

Cheers

Steven
 

-----Original Message-----
From: Jeremy Nix [mailto:[hidden email]]
Sent: Wednesday, 30 June 2010 21:54
To: [hidden email]
Subject: [ops-users] Re: RE: Re: Passing data to a "static" Orbeon page

Steven,

What kind of data are you wanting to pass/use?

If the data is request parameters, you have a few options.  You can
parse the request parameters out of the URL and set the values into an
input instance using the <setvalue> tags and the page pattern matching
capabilities.  You also can use the xxforms:get-request-parameter(...)
function to look up the request parameters.  Other options are available
if you were using dynamic pages that were produced by some sort of
pipeline.  In that case, you could look at
(http://www.orbeon.com/orbeon/doc/processors-generators-request) which
describes how to read the request paramters into an output variable
would could then be used as an input into another pipeline (say XSLT).

If the data is in the form of an XML post, then you would just need to
have an input:instance defined and reference the data through the
instance.  Ex: <instance id="labdb-form-instance"
src="input:instance"/>.

------------------------------------------------------------------------
Jeremy Nix
Senior Application Developer
Cincinnati Children's Hospital Medical Center

On 06/30/2010 04:43 AM, Steven Kerr wrote:
> Hank
>
> Thanks for your reply.  However I don't think I made my question
clear.
> I have a "static" form (.xhtml) that works nicely (including the code
> sample I gave).  However I am now looking at passing information to it

> using Page Flow.  From reading the documentation it looks like I can't

> do that and need to convert it to a XSLT View first.  When I tried
> this Orbeon didn't like some of my code i.e.
>
>   <xhtml:div class="{if
>   (string(instance('labdb-form-instance')/resultsForm/@showTracing) =
>   'false') then 'xforms-disabled' else 'tracing'}">
>
> (However it works fine as a static page.)
>
> So I guess my question is two part:
>
> A) Can I pass info to my page as-is using Page Flow?
> B) If not, how can I change the above code so it will pass through a
> XSLT View?
>
> Cheers
>
> Steven
>
>
>
>
> -----Original Message-----
> From: Louis Ratzesberger [mailto:[hidden email]]
> Sent: Wednesday, 30 June 2010 15:27
> To: [hidden email]
> Subject: [ops-users] Re: Passing data to a "static" Orbeon page
>
> Steve,
>
> There is a lot of flexibility when building your pages.
>
> You can use xinclude for things like footers, which themselves can
> have xforms elements, or use xslt for this also.
>
> There should be no reason to cast the xpath to a string, and in any
> case the syntax is different, xs:string(...) and not simply
> string(...), i.e., the constructor function most likely needs the XML
> Schema namespace prefix.
>
> Does the statement work with a simpler xpath selection?
>
> --Hank
>
> Quoting Steven Kerr<[hidden email]>:
>
>    
>> Experienced Orbeon developers
>>
>> A web application I have been working on for some time is getting
>> close to finished.  I have been learning the various parts of the
>> platform as I go.  As the main form is working well I am developing
>> the menu and attempting to pass data into my form.  If I understand
>> the Page Flow documentation correctly, it is not possible for me to
>> pass data into into a "static" Orbeon page view (XHTML).  Is this
>> correct?  I know the page can be wrapped up as a XSLT View.  However
>> when I tried this I get lots of errors with parts of my form i.e.
>>
>> <xhtml:div class="{if
>> (string(instance('labdb-form-instance')/resultsForm/@showTracing) =
>> 'false') then 'xforms-disabled' else 'tracing'}">
>>
>> Could someone please point me in the right direction?
>>
>> Cheers
>>
>> Steve
>>
>>
>>      
>
>
> --
> Hank Ratzesberger
> [hidden email]
>
>
>    


--
You receive this message as a subscriber of the [hidden email] mailing list.
To unsubscribe: mailto:[hidden email]
For general help: mailto:[hidden email]?subject=help
OW2 mailing lists service home page: http://www.ow2.org/wws
Reply | Threaded
Open this post in threaded view
|

Re: Trying to achieve 100 concurrent users with an Orbeon web application

Alessandro  Vernet
Administrator
In reply to this post by PhilButler
Phil, Tom,

With the type of hardware you have (2*8 cores and 32GB RAM), we should
be able to get you to support 100 concurrent users. Now, let's do it!
:) First, let's start with the obvious: doing load testing, do you
notice a scalability issue, in the sense that you can handle less
requests per unit of time as you increase the number of concurrent
users? I am trying to gauge if this is a scalability issue or just
that requests take to much time, and need to be optimized
independently of the fact that you have a lot concurrent users.

Alex

On Tue, Jun 29, 2010 at 4:24 PM, Philip Butler
<[hidden email]> wrote:

> Dear Alex, Erik and Orbeon community members,
>
> First, thanks for all your efforts, Orbeon is truely a great product.
>
> Please excuse my long post. Here at The University of Manchester Tom Grahame and I have got to a point in our developments using Orbeon that are fairly critical for us and that need some explanation. Although I've not previously posted to this list, Tom has and we've always been impressed by your responses.
>
> In summary, my questions are two fold (but please read the background below to put these in context),
>
> a) Are there any instances where Orbeon is being used to support a web application with around 100 (or more) concurrent users?
>
> b) What more can we do, other than we outline below, to get to a position where our Orbeon based web application can support around 100 concurrent users?
>
> My reasons for asking these questions are as follows.
>
> We've been using Orbeon in a production environment now for around 9 months and in our developments for 18 months. We are runnning v3.8 and have kept up to date with latest releases. As we say above, this is because we truely believe Orbeon is great and it fits extremely well with our needs.
>
> Our production environment essentially consists of Orbeon on top of a Java Struts layer and a digital object respository API (Fedora-commons, http://www.fedora-commons.org). We use Orbeon for our user interfaces, Struts for various aspects of our business logic and the repository to store metadata (in XML) and file uploads. Orbeon runs in a fairly configuration of Tomcat v5.5.27 with 1,024Mb of java heap (we can change these if needs be). We believe our hardware infrastructure is well specified and flexible (Sun Enterprise T5140 Server with 2*8 cores and 32GB RAM, running virtual servers which can be configured independently as required). So, for example, we can increase the memory allocated to a virtual machine, have multiple virtual machines (clustered if needs be) and/or multiple instances of Tomcat.
>
> Normal load on our application is around 10 concurrent users and Orbeon performs OK in this situation. However, we can have peak periods of usage and we estimate this can involve 100 concurrent users. Under peak loads the performance of our application slows to a point it is unusable. Recently, we've been profiling our application (using JMeter, JConsole and iMacros). Our profiling and load testing work suggests we can confidently get our application to perform well with 15-20 concurrent users, however above this it appears that load times for pages delivered by Orbeon degrade noticeably. This is the case even for a simple part of our application, a single Orbeon view and model, with 3 input fields, a drop-down select and a submit button which performs a search against an eXist database of ~8,000 records, returning 10 results. We've applied many of the "performance and tuning" tips on the Orbeon wiki to get to this point (we haven't yet played with the epilogue.xpl). The other parts of our application (Struts, Fedora-commons) scale OK.
>
> We recognise and appreciate that Orbeon does a lot of server-side processing. This is indicated by the high server memory usage during our load tests. Unfortunately, we've got to a point now where we are running out of ideas on what to do next. Plus we are still a long way off our target of ~100 concurrent users.
>
> We are still very keen to use Orbeon, so much so we have now secured funds to purchase the recently released Professional Edition and associated support. However, we do wonder if we are asking too much of Orbeon and is our target of ~100 concurrent users realistic, irrespective of how much further performance/tuning work we do. Hence, our questions.
>
> We hope the above makes sense and you can find the time to reply.
>
> With regards,
>
> Phil and Tom
>
> ***********************************
> Dr Phil Butler
> eScholarship Manager
> Red 1.3 The John Rylands University Library,
> The University of Manchester,
> Oxford Road,
> Manchester M13 9PP, UK
> Tel: +44 (0)161 275 1514 (internal x51514)
> Email: [hidden email]
> Web: http://www.manchester.ac.uk/escholar
> ***********************************
>
>
>
> --
> You receive this message as a subscriber of the [hidden email] mailing list.
> To unsubscribe: mailto:[hidden email]
> For general help: mailto:[hidden email]?subject=help
> OW2 mailing lists service home page: http://www.ow2.org/wws
>
>


--
Orbeon Forms - Web forms, open-source, for the Enterprise -
http://www.orbeon.com/
My Twitter: http://twitter.com/avernet


--
You receive this message as a subscriber of the [hidden email] mailing list.
To unsubscribe: mailto:[hidden email]
For general help: mailto:[hidden email]?subject=help
OW2 mailing lists service home page: http://www.ow2.org/wws
--
Follow Orbeon on Twitter: @orbeon
Follow me on Twitter: @avernet