Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.misc -> Re: Multi-threaded OCI Application Does Not Scale
"SQL*Net more data from client"
is usually related to things like array inserts,
or large lists of bind variables. It is similar
to 'SQL*Net message from client' in that
the server cannot proceed until a message
comes in from the client.
As Alexander suggested in his last post, this looks like some sort of scheduling/blocking issue with the way that threads are working - particularly with regard to global memory. Certainly it seems to be a client-library issue, and has nothing to do with the server-side code.
One 'trick' that might help is to reduce the array size you are using, and increase the SDU (session data unit) size in the tnsnames.ora and listener.ora. If you can set these so that a complete array can pass in one unit, it may bypass the issue. This, by the way, is just a guess and something to fiddle with - and not an observation based on experience.
-- Regards Jonathan Lewis http://www.jlcomp.demon.co.uk Coming soon a new one-day tutorial: Cost Based Optimisation (see http://www.jlcomp.demon.co.uk/tutorial.html ) ____UK_______March ____USA_(FL)_May Next Seminar dates: (see http://www.jlcomp.demon.co.uk/seminar.html ) ____USA_(CA, TX)_August The Co-operative Oracle Users' FAQ http://www.jlcomp.demon.co.uk/faq/ind_faq.html Cary Lapoint wrote in message <6b0e1783.0301271317.7bc97598_at_posting.google.com>...Received on Mon Jan 27 2003 - 15:45:21 CST
>Acting upon previous suggestions, I have monitored V$SESSION_WAIT and
>V$SESSION_EVENT during program execution and have learned the
>following. The primary wait events in decreasing order of
TIME_WAITED
>are "SQL*Net more data from client", "SQL*Net message from client,"
>"log file sync," and "log buffer space." Together these wait events
>account for over 98% of total TIME_WAITED. To compare the behavior
of
>threads vs. processes, I tested once using 1 process (3
>threads/process) and once with 3 processes (1 thread/process). For
>most of the wait events, there was only slight variation in the
>average wait time. However, for the most important wait event the
>average wait time was 42.4 ms using multiple threads and only 17.3 ms
>using multiple processes. This finding suggests that the scaling of
>the "SQL*Net more data from client" wait event is responsible for the
>poor scaling behavior of my program's import rate (plan to verify
this
>by studying N = 1, 2, and 4). Can anyone else (Jonathan?) provide
>further insight? Thanks.
>
>Cary
>
>