on 01-07-2015 3:07 PM
I have a COM component build by PowerBuilder 11.2. This was used by Web application. The COM component has core business logic used to interface between web UI and database. We have an issue when the WEB application is used by more than 30 users concurrently the application is slows down. The network bandwidths are looks good.
Is there any limitation on the PBVM? or the COM component cause this slowness?
We found the same issue with our COM objects when the server was loaded up with about 15/25 connections using Windows Server 2003 and 2008. The problem was memory. Each connection will instantiate the COM and the PBVM along with any supporting DLLs. We increased the memory in the 2008 Server to 16GB and this seems to support about 40 users max.
If your COM uses ODBC to connect to the DB, you can turn on Connection Pooling (run ODBCAD32) and that does help a little.
Randy
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Yes RAM was the issue.
Not sure how you can prove it to them other than using Performance monitor and logging the data then reviewing the log for the time period where the number of concurrent users exceeds your threshold.
The server may not exceed the amount of memory available. It all depends on how it is setup and memory is allocated to the server processes. When a process exceeds its allocation it starts swapping out to disk thus slowing down.
RAM is cheap and any Windows Server can always use more.
Randy
Hi Senthil;
It could be one of many reasons ...
1) Memory issues due to the PBVM loaded for each instance of the OLE.
2) DBMS client connection limitation.
3) DBMS locking issue.
4) No DBMS connection pooling
5) Multi-threading issue (or lack there of) in the PBVM / OLE implementation
etc
I think that this could be a hard one to pinpoint.
Regards ... Chris
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Q1: DBMS Client connection limitations
A1: Check with your DBA. Monitor the situation from the DBMS console; check your DBMS configurations; Check the DB logs for anomalies; etc.
Q2: No DBMS connection pooling information?
A2: If your OLE object runs inside of IIs - it may need to use the ADO.Net or ODBC database client driver for this. These access methods have4 connection polling options.
Suggestion: You might want to put some code into the OLE object to capture the time it is taking for each work flow (process), DBMS interaction; O/S calls (if any), etc. At least you could start to narrow down where the trouble area(s) are.
It is not an OLE object. I am access the COM component through vb.net code (interop.COMcompnoent.dll). We open the connection, call the COM component method then close the connection and release the COM object as well. We use oracle native driver to connect to the database inside the COM object.
The DBA's see only one connection from w3wp.exe.
User | Count |
---|---|
101 | |
13 | |
13 | |
11 | |
11 | |
7 | |
6 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.