| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> c.d.o.misc -> Re: Huge problem with COM+ performace?
On Tue, 30 Oct 2001 11:38:34 +0100, "Adam Boczek"
<adam.boczek_at_NO_SPAM_gft-solutions.de> wrote:
>I have huge problem :-|. I've written software which uses COM+ as midletier
>and Oracle8i as datatier. All business components are VB dlls. All clients
>are VB exes. Everything seems to be ok (transactions etc.). But when I start
>long-lastig process (for example accounting for 300.000 clients) all other
>processes are locked (or very, very slow). I can NOT connect from client to
>my business components in COM+ (I receive no errors, only information that
>process is pending) . Hardware is ok (2-Procesor server Compaq with 1,2 GB
>RAM etc.), database parameters also (I can connect to database without COM+
>and run without problems any query), network 100MB/s and hi-end switches.
>I've tried different component configurations (all dll in one package or in
>groups) but without success.
>
>Any ideas?
>
>Win2k Srv SP2, Oracle8i (8.1.7.2), VB6 SP5, ADO 2.6 SP1, all clients Win2k
>Pro SP2.
>
>Greets,
>Adam
>
>-------------------------------------------
>Adam Boczek
>IT Consultant
>GFT Solutions GmbH
>adam.boczek_at_gft-solutions.de
>-------------------------------------------
>
>
>
The lock is probably normal for the type of lock you have on the database. You should either consider moving this process off-line (after work hours) or changing the lock. Of course, changing the lock could create problems of its own.
Make sure you are only keeping connections open when you need them. See if you can do some of the work in procedures and have the database server handle some of the work (participate in the data tier), which will reduce the amount of time the lock is present.
You should also consider how you are connected to Oracle. Hopefully, you are using OLEDB and not ODBC (ie, using a DSN). Adding the extra layer can bog down an application.
As far as how to set up COM+, try to keep the DLLs for the same process in the same package. It reduces the likelihood of having to marshall across process boundaries.
One other thing, which is MTS/COM+ architecture related. If you are using New to instantiate an object switch to CreateInstance (CreateObject can be okay, but is not preferred). With New, you are creating a new process, with create instance, you are attaching the new object to the running process. This is much more efficient. If you have a lot of communication between your objects or are passing objects (like recordsets), this could make a difference in performance.
Gregory A. Beamer
MVP; MCP: +I, SE, SD, DBA
Author: ADO.NET and XML: ASP.NET on the Edge (4Q 2001)
![]() |
![]() |