Details
-
Type:
Improvement
-
Status:
Closed
-
Priority:
Blocker
-
Resolution: Fixed
-
Affects Version/s: 1.6, 1.6.1, 1.5.8, 1.6.2, 1.6.3
-
Fix Version/s: 1.9-beta-4, 1.8.4
-
Component/s: None
-
Labels:None
-
Environment:Linux, Java 1.6, Tomcat
-
Number of attachments :
Description
Sscalability seems to suffer as a result of TagLibs being implemented as singletons and locking occurring on ExpandoMetaClass.isModified() when the server is processing multiple requests concurrently.
Performance is fine when there is a small number of concurrent requests, but as the number of concurrent requests increases response times increase dramatically.
Locking was noticed by profiling a running application using Your Kit Java Profiler and JMeter to simulate load.
More details are available here:
http://digitalmorphosis.blogspot.com/2009/05/grails-scalability.html
Obvious fix would be to create new instances of taglibs for each request/thread, but not sure what side effects this would have?
Activity
Graeme Rocher
made changes -
| Field | Original Value | New Value |
|---|---|---|
| Fix Version/s | 1.1.2 [ 15289 ] |
Lari Hotari
made changes -
| Attachment | 0001-request-scope-for-TagLib-beans-GRAILS-4594.patch [ 42234 ] |
Graeme Rocher
made changes -
| Project | Grails [ 11063 ] | groovy [ 10242 ] |
| Affects Version/s | 1.6.3 [ 15251 ] | |
| Affects Version/s | 1.1 [ 15043 ] | |
| Fix Version/s | 1.6.4 [ 15291 ] | |
| Affects Version/s | 1.6.2 [ 15151 ] | |
| Fix Version/s | 1.1.2 [ 15289 ] | |
| Affects Version/s | 1.6 [ 14981 ] | |
| Key | GRAILS-4594 |
|
| Fix Version/s | 1.7-beta-1 [ 14014 ] | |
| Affects Version/s | 1.5.8 [ 14630 ] | |
| Component/s | TagLib [ 12106 ] | |
| Affects Version/s | 1.6.1 [ 14852 ] |
Graeme Rocher
made changes -
| Summary | Thread Locking under in grails tag libs | Remove synchronization of isModified method in ExpandoMetaClass to improve performance |
blackdrag blackdrag
made changes -
| Assignee | Graeme Rocher [ graemerocher ] | Jochen Theodorou [ blackdrag ] |
| Issue Type | Bug [ 1 ] | Improvement [ 4 ] |
| Priority | Critical [ 2 ] | Major [ 3 ] |
Guillaume Laforge
made changes -
| Fix Version/s | 1.6.x [ 15537 ] | |
| Fix Version/s | 1.6.4 [ 15291 ] |
blackdrag blackdrag
made changes -
| Fix Version/s | 1.7-beta-x [ 15538 ] | |
| Fix Version/s | 1.7-beta-1 [ 14014 ] |
blackdrag blackdrag
made changes -
| Fix Version/s | 1.7-beta-2 [ 15540 ] | |
| Resolution | Fixed [ 1 ] | |
| Status | Open [ 1 ] | Closed [ 6 ] |
| Fix Version/s | 1.7-beta-x [ 15538 ] | |
| Fix Version/s | 1.6.x [ 15537 ] | |
| Fix Version/s | 1.6.5 [ 15539 ] |
Graeme Rocher
made changes -
| Resolution | Fixed [ 1 ] | |
| Status | Closed [ 6 ] | Reopened [ 4 ] |
Graeme Rocher
made changes -
| Fix Version/s | 1.6.5 [ 15539 ] | |
| Fix Version/s | 1.7-beta-2 [ 15540 ] | |
| Fix Version/s | 1.6.6 [ 15781 ] |
Graeme Rocher
made changes -
| Priority | Major [ 3 ] | Blocker [ 1 ] |
blackdrag blackdrag
made changes -
| Resolution | Fixed [ 1 ] | |
| Status | Reopened [ 4 ] | Closed [ 6 ] |
Graeme Rocher
made changes -
| Resolution | Fixed [ 1 ] | |
| Status | Closed [ 6 ] | Reopened [ 4 ] |
Graeme Rocher
made changes -
| Fix Version/s | 1.6.6 [ 15781 ] | |
| Fix Version/s | 1.6.7 [ 16012 ] |
blackdrag blackdrag
made changes -
| Status | Reopened [ 4 ] | Closed [ 6 ] |
| Resolution | Fixed [ 1 ] |
Graeme Rocher
made changes -
| Resolution | Fixed [ 1 ] | |
| Status | Closed [ 6 ] | Reopened [ 4 ] |
Graeme Rocher
made changes -
| Fix Version/s | 1.8.1 [ 17223 ] | |
| Fix Version/s | 1.6.7 [ 16012 ] |
Guillaume Laforge
made changes -
| Fix Version/s | 1.8.2 [ 17495 ] | |
| Fix Version/s | 1.8.1 [ 17223 ] |
Guillaume Laforge
made changes -
| Fix Version/s | 1.8.3 [ 17657 ] | |
| Fix Version/s | 1.8.2 [ 17495 ] |
Guillaume Laforge
made changes -
| Status | Reopened [ 4 ] | Closed [ 6 ] |
| Fix Version/s | 1.8.4 [ 17852 ] | |
| Fix Version/s | 1.9-beta-4 [ 17656 ] | |
| Fix Version/s | 1.8.3 [ 17657 ] | |
| Resolution | Fixed [ 1 ] |