From b3c30403853dcc1e8c1e3e2177ad8f9d4eee1441 Mon Sep 17 00:00:00 2001 From: markt Date: Tue, 16 Nov 2010 17:13:29 +0000 Subject: [PATCH] Session manager performance Narrow sync - few % improvement git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1035699 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/catalina/session/ManagerBase.java | 8 +++++--- test/org/apache/catalina/session/Benchmarks.java | 8 ++++---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/java/org/apache/catalina/session/ManagerBase.java b/java/org/apache/catalina/session/ManagerBase.java index 4b2acd5f8..08c60faac 100644 --- a/java/org/apache/catalina/session/ManagerBase.java +++ b/java/org/apache/catalina/session/ManagerBase.java @@ -980,7 +980,7 @@ public abstract class ManagerBase extends LifecycleMBeanBase /** * Generate and return a new session identifier. */ - protected synchronized String generateSessionId() { + protected String generateSessionId() { byte random[] = new byte[16]; String jvmRoute = getJvmRoute(); @@ -996,8 +996,10 @@ public abstract class ManagerBase extends LifecycleMBeanBase } while (resultLenBytes < this.sessionIdLength) { - getRandomBytes(random); - random = getDigest().digest(random); + synchronized (this) { + getRandomBytes(random); + random = getDigest().digest(random); + } for (int j = 0; j < random.length && resultLenBytes < this.sessionIdLength; j++) { diff --git a/test/org/apache/catalina/session/Benchmarks.java b/test/org/apache/catalina/session/Benchmarks.java index 99dd1d68e..53d98f975 100644 --- a/test/org/apache/catalina/session/Benchmarks.java +++ b/test/org/apache/catalina/session/Benchmarks.java @@ -108,10 +108,10 @@ public class Benchmarks extends TestCase { /* * Results on markt's 4-core dev box - * 1 thread - 2,422ms - * 2 threads - 5,047ms - * 4 threads - 13,188ms - * 16 threads - 54,422ms + * 1 thread - ~2,400ms + * 2 threads - ~4,700ms + * 4 threads - ~12,600ms + * 16 threads - ~53,700ms */ public void testManagerBaseCreateSession() { doTestManagerBaseCreateSession(1, 100000); -- 2.11.0