DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=22314>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=22314

Performance Enhancement

           Summary: Performance Enhancement
           Product: Struts
           Version: Unknown
          Platform: All
        OS/Version: Other
            Status: NEW
          Severity: Enhancement
          Priority: Other
         Component: Controller
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


The enhancement I present below in intended to address the problem of 
performance when it relates to a particular user (or group of users) or a 
particular request (or group of requests).

There are a number of reasons why a particular user may require better 
performance than the overall user base.  Examples include: a user demonstrating 
application functionality to a group of executives or a potential client, a 
user processing a high volume of transactions during the course of a day and a 
user that frequently complains about the application’s performance.  In the 
last scenario, performance for the particular user could be improved 
immediately, while more generalized performance improvements could be 
accomplished during a number of weeks or months.           

There are also a number of reasons why a particular transaction may require 
better performance that others.  If a user has to fill out ten screens to 
complete a logical business transaction, she is more likely to take her 
business elsewhere if the first screen performs poorly than if the last screen 
performs poorly.  Once she has invested the time of entering in a number of 
screens, she will be more willing to wait for the application to respond.  Some 
requests may require closer monitoring than others requests.  If a query that 
is not part of a session performs poorly, it could be rerouted to an overflow 
server.  If the application performs poorly in general, many non-session 
requests could be rerouted.            

My concept centers around a class I call RequestThrottle.  RequestThrottle 
would be called from ActionServlet.  Upon receiving a request, ActionServlet 
would pass the request as a method parameter to RequestThrottle.  
RequestThrottle would return a request.  The request passed from ActionServlet 
and the request returned from RequestThrottle may or may not be the same, 
depending on a number of criteria.  Immediately prior to sending a response, 
ActionServlet would pass the response as a method parameter to RequestThrottle.

RequestThrottle would look at request/response pairs and analyze them based on 
configured parameters.  Users and transactions could be put into a 
configuration file along with maximum response times and priorities.  If actual 
response times approach the maximum, RequestThrottle would take action.  
RequestThrottle would begin queuing low-priority requests to free up 
application resources for high priority requests.  It would begin sending some 
non-session requests to an overflow server.  It may begin logging requests.  It 
may send messages to certain users giving them an estimate of how long their 
transactions are expected to take.  If actual response times are lower than the 
maximum, RequestThrottle would be begin releasing queued requests.  
RequestThrottle would continually monitor and adjust the number of requests 
that are queued and released.  

The core concept behind RequestThrottle is having a class that can analyze 
response times and queue some requests to enable others to process more quickly.

Please let me know if you have any interest in this enhancement.

Thank you,

Robert W. Dahl
[EMAIL PROTECTED]
(847) 478-8455

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to