Re: [Sqlrelay-discussion] Multiple sqlr-listener processes and no connections
Brought to you by:
mused
|
From: Ville S. <vil...@gm...> - 2013-03-05 16:19:58
|
Hi Dave,
I noticed the sqlrelay-0.50 src/connections/oracle8/oracle8connection.cpp
has following Oracle error codes:
// check for dead connection or shutdown in progress
switch (errcode) {
case 22: // invalid session ID; access denied
case 28: // your session has been killed
case 604: // error occurred at recursive SQL level ...
case 1012: // not logged on
case 1033: // oracle init/shutdown in progress
case 1041: // internal error. hostdef extension doesn't exist
case 1089: // immediate shutdown in progress -
// no operations are permitted
case 2067: // transaction or savepoint rollback required
case 3114: // not connected to ORACLE
case 3113: // end-of-file on communication channel
case 3135: // connection lost contact
case 14452: // attempt to create, alter or drop an index on
// temporary table already in use
// (see note below)
*liveconnection=false;
break;
default:
*liveconnection=true;
break;
}
I'm just wondering if this list should include "case 20" for ORA-00020, so
the liveconnection is set to false?
Thanks,
Ville
On 5 March 2013 15:11, Ville Silventoinen <vil...@gm...>wrote:
> Hi Dave,
>
> Sorry it has taken so long to get back on this. I haven't been able to
> reproduce the problem reliably until now.
>
> Since last time, I've switched to Oracle 11g database. I noticed if Oracle
> has quite a low maximum number of processes (150) and if I configure too
> many max connections in SQL Relay, this same problem happens.
>
> If you want to reproduce it, you could deliberately set the processes in
> Oracle quite low (alter system set processes = N) and then configure SQL
> Relay to use max connections > N. My application is a FUSE-based filesystem
> that I implemented, which keeps the filesystem metadata in Oracle by using
> SQL Relay. When I run some stress tests (fs_racer from Linux Test Project
> package does this nicely when I run it for few minutes), I can easily get
> SQL Relay to reach the max numbers.
>
> What I'm seeing (with sqlrelay-0.50) is that after Oracle has reach the
> max number of processes,, the number of sqlr-listeners grows and doesn't
> back down (until I kill my application). You can see when Oracle has
> encountered the error from the alter log:
>
> # pwd
> /u01/app/oracle/diag/rdbms/unofsdev/UNOFSDEV/trace
>
> # tail alert_UNOFSDEV.log
> ...
> Tue Mar 05 11:16:24 2013
> ORA-00020: maximum number of processes (150) exceeded
> ORA-20 errors will not be written to the alert log for
> the next minute. Please look at trace files to see all
> the ORA-20 errors.
> Tue Mar 05 11:16:39 2013
> Process m000 submission failed with error = 20
>
> I'm not sure what exactly happens in sqlr-listener or sqlr-connection when
> they get ORA-00020 error (or if they even receive the error), I never see
> it in my application. From my point of view, my application just hangs when
> it tries to connect.
>
> The only fix I've found so far is to avoid ORA-00020 like plague by making
> sure the max SQL Relay connections never reaches the max Oracle processes.
> You also need to note that Oracle has a set of its own server processes
> that are included in this total (35 in my case), so if your Oracle has max
> 150 processes, you actually have 115 to use for the SQL Relay connections.
> I got my test working by configuring max 25 connections from 4 test
> machines (4 * 25 + 35 = 135).
>
> I just thought I'd report this in case anyone else has been struggling
> with similar issues. Here is the SQL Relay configuration I'm using:
>
> <instance id="unofs" port="9011"
> socket="/var/sqlrelay/tmp/sockets/unofs.socket" dbase="oracle8"
> connections="5" maxconnections="25" maxqueuelength="0" growby="1" ttl="60"
> endofsession="rollback" sessiontimeout="600" runasuser="w3secure"
> runasgroup="systems" cursors="5" authtier="listener" handoff="pass"
> debug="none">
> <users>
> <user user="unofs" password="secret"/>
> </users>
> <connections>
> <connection connectionid="unofsdev"
> string="user=USER;password=PWD;oracle_sid=UNOFSDEV;oracle_home=/usr/lib64/oracle/
> 10.2.0.3/client" metric="1"/>
> </connections>
> </instance>
>
> If anyone has any experiences with ORA-00020 and SQL Relay, and how to
> configure SQL Relay to cope with it, I'd be very grateful to learn more.
>
> Thanks,
> Ville
>
>
> On 26 September 2012 13:38, David Muse <dav...@fi...> wrote:
>
>> Hi Ville,
>>
>> Sorry for not responding earlier.
>>
>> SQL Relay should automatically re-log in if it loses connection to the
>> database. I recently added a parameter to disable that behavior, but it
>> should do it by default.
>>
>> It sounds like the sqlr-connection-mysql process is crashing for some
>> reason but the semaphores are in such a state that the sqlr-scaler
>> doesn't realize this and doesn't spawn any new processes.
>>
>> I've actually tried to reproduce this and gone through the code, looking
>> for some semi-obvious thing that could cause it, but I can't find
>> anything. My guess is that there is some particular query that crashes
>> the process.
>>
>> The last time I encountered a problem like this, it was with oracle and
>> the problem was that I misinterpreted characters for bytes and if OCI
>> said "allocate 100 characters", I'd allocate a buffer of 100 bytes,
>> which was fine until somebody started using unicode and the query
>> returned multi-byte characters. Something like that. I looked again
>> for that kind of thing, but I didn't see anything.
>>
>> Nevertheless, I suspect something like that is the problem. It would be
>> helpful if you could find the query or condition that's causing the
>> connections to crash, though I imagine that would be like looking for a
>> needle in a haystack.
>>
>> I'll be out of town for the next few days, but I can look into it again
>> when I get back.
>>
>> Dave
>> dav...@fi...
>>
>> On 09/25/2012 06:00 AM, Ville Silventoinen wrote:
>> > Hi,
>> >
>> > Just few more details on this:
>> >
>> > - I run SQL Relay 0.46 with two different instances configured in
>> > sqlrelay.conf; one for Oracle and one for MySQL.
>> >
>> > - When the problem happens, it's always with the MySQL connections. All
>> > the sqlr-connection-mysql processes have stopped/crashed and there are
>> > several sqlr-listener processes for the MySQL instance. They seem to be
>> > unable to start any sqlr-connection-mysql processes.
>> >
>> > - Just guesswork, but could the problem be caused if for whatever reason
>> > SQL Relay fails to login to MySQL? Would that stop the
>> > sqlr-connection-mysql process? I've asked the MySQL admin, but we don't
>> > log the failed login attempts. I could turn on the connection debug mode
>> > in SQL Relay, but last time we did that, it filled the /var filesystem
>> > very fast, so I'd need to find some disk space for that.
>> >
>> > - I'm waiting when the problem happens next time so I can run the
>> > "sqlr-status -id INSTANCE" command to see what the raw semaphore numbers
>> > are. I saw an old thread that seems quite similar to this, but I'm not
>> > sure if it's related.
>> >
>> > Cheers,
>> > Ville
>> >
>> > On 4 September 2012 12:15, Ville Silventoinen
>> > <vil...@gm... <mailto:vil...@gm...>>
>> wrote:
>> >
>> > Hi,
>> >
>> > I'm using SQL Relay 0.45 on RedHat 6. Sometimes SQL Relay goes into
>> > a state where it starts several sqlr-listener processes, but there
>> > are no sqlr-connection processes. The application that uses SQL
>> > Relay hangs. There may be a problem with RedHat and the network card
>> > we are using, which can cause temporary loss of network
>> > connectivity. The only cure that I've found is to restart SQL Relay.
>> >
>> > Today I decided to try SQL Relay 0.46. As I was running tests, our
>> > DBAs shutdown the test Oracle database (I wasn't aware of this).
>> > Again, the same situation happened: Several sqlr-listener processes
>> > and no connections.
>> >
>> > I'm looking for some insight into how I could configure SQL Relay so
>> > it would automatically recover from the temporary loss of network
>> > connectivity or database availability. Is this possible? Would it
>> > help if I set maxlisteners to 0, listenertimeout to 60, or tweak
>> > some other configuration variable?
>> >
>> > Thanks for any advice,
>> > Ville
>> >
>> >
>> >
>> >
>> >
>> >
>> ------------------------------------------------------------------------------
>> > Live Security Virtual Conference
>> > Exclusive live event will cover all the ways today's security and
>> > threat landscape has changed and how IT managers can respond.
>> Discussions
>> > will include endpoint security, mobile security and the latest in
>> malware
>> > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
>> >
>> > _______________________________________________________
>> > Unlimited Disk, Data Transfer, PHP/MySQL Domain Hosting
>> > http://www.doteasy.com
>> >
>> >
>> >
>> > _______________________________________________
>> > Sqlrelay-discussion mailing list
>> > Sql...@li...
>> > https://lists.sourceforge.net/lists/listinfo/sqlrelay-discussion
>> >
>> >
>> > _______________________________________________________
>> > Unlimited Disk, Data Transfer, PHP/MySQL Domain Hosting
>> > http://www.doteasy.com
>> >
>>
>>
>> ------------------------------------------------------------------------------
>> Live Security Virtual Conference
>> Exclusive live event will cover all the ways today's security and
>> threat landscape has changed and how IT managers can respond. Discussions
>> will include endpoint security, mobile security and the latest in malware
>> threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
>> _______________________________________________
>> Sqlrelay-discussion mailing list
>> Sql...@li...
>> https://lists.sourceforge.net/lists/listinfo/sqlrelay-discussion
>>
>
>
|