We've had similar issues as well in the past. This memory issue has reared it's ugly head in several different instances. We currently have 3 foreground MethodServer's(1.5 gb allocated to each) running. For some reason we can't allocate more than 1.5 gb per methodserver. We also have 1 background server running. This has definitely helped us, however, the memory issue remains if multiple users hit the system with these queries at once.
One other thing, watch out for those circular references within the model. This can cause Windchill to surpass the query limit veryquickly.
Here's a brief desc ofa few wt.properties and db.properties:
wt.manager.monitor.start.MethodServer - The number of foreground method servers to be started. The optimal number or method servers must consider the number of CPUs and the quantity of physcal memory installed. The OOTB default is fine for single user development environments but is generally insufficient for multi-user production use.
wt.manager.monitor.start.BackgroundMethodServer - The number of background Method Servers to be started.
wt.manager.monitor.services - Defines the set of services instantiated and monitored by the StandardServerMonitor class. If wt.manager.monitor.start.BackgroundMethodServer > 0 then "MethodServer, BackgroundMethodServer" else "MethodServer"
wt.queue.executeQueues - Property used in an environment with multiple method servers to establish the default behavior of a method server.
wt.method.loadbalance.maxRedirects - Maximum number of times a client call will be redirected to another server. This property specifies the maximum number of times a single method call will be redirected. The default setting is 1. A setting of 0 causes method calls to be redirected until a server that falls below the threshold has been identified. Should be set to the # of MS -1 if wt.manager.monitor.start.MethodServe>2 or 2 if wt.manager.monitor.start.MethodServer=2
wt.method.loadbalance.activeContext - Defines a threshold for load balancing multiple method servers on a single host. Should be 60% of db connections.
wt.pom.maxDbConnections - Depends on method server heap size. Please consult WCA documentation WCConfigAssistant.pdf for more information.
wt.pom.minDbConnections - Depends on method server heap size. Please consult WCA documentation WCConfigAssistant.pdf for more information.
You better place a additional background method server to handle your publishing from your already packed system. I would allocated a min of 768meg to each and a max of 3 to 4 gig. It all depends on you OS (better be 64 bit), amount of ram (hopefully 24GIG to 48 GIG). 4 to 6GIG per core is good. So 2X quad core is 48GIG and 3 to 4 methodservers and 2 background. I advise to have at least 1 CAD worker per 10 users. Thus, 60 concurrent users = 6 CAD workers. You can place all the workers on one machine with a 2X quad core with 48GIG of ram windows 2008 R2 64bit.
You can upgrade to JDK 1.6.24 to solve the Windchill security issue with Java and hopefully have less issues with hanging MethodServer issues.
As for oracle, check to make sure you have at least 24GIG of ram with 40% allocation to memory for oracle. We have 48GIGs of ram with 40% memory allocation (SGA and PGA) 2X quad cores. I have no issues with my systems in terms of performance.
We are also on WC9.1M050 and Oracle 11.02.01 running on 2 separate HP 460CG6 blades with 48GIGs of ram with RedHat 5.4 ES.
Check this out:
Hope this helps,