I also had a look at the debug log, but it does look very normal, I do not
see any sign of a loop. Was that really created while rsyslog was looping?
All I see is that omoracle receives and stores data and then some new data
comes in via UDP ... and then the log ends. 

Rainer

> -----Original Message-----
> From: [email protected] [mailto:rsyslog-
> [email protected]] On Behalf Of bxu
> Sent: Tuesday, May 10, 2011 7:12 PM
> To: 'rsyslog-users'
> Subject: Re: [rsyslog] help : CPU high load of rsyslog writing to
> Oracle
> 
> Hi David,
>       Here are what I'm doing:
>       1. oracle configuration of rsyslogd.conf
> 
> ################
> #### ORACLE ####
> ################
> 
> $ModLoad omoracle
> $OmoracleDBUser syslog
> $OmoracleDBPassword syslog
> $OmoracleDB syslog
> $OmoracleBatchSize 1
> $OmoracleBatchItemSize 4096
> $OmoracleStatementTemplate OmoracleStatement
> 
> $template OmoracleStatement,"INSERT INTO TEST(Hostname,Message)
> VALUES(:hostname,:msg)"
> $template TestStmt,"%hostname%%msg%"
> $template TestStmtFile,"INSERT INTO TEST(Hostname,Message)
> VALUES('%hostname%','%msg%')\n"
> 
> #$WorkDirectory /rsyslog/work # default location for work (spool) files
> 
> #$ActionQueueType LinkedList # use asynchronous processing
> #$ActionQueueFileName dbq    # set file name, also enables disk mode
> #$ActionResumeRetryCount -1  # infinite retries on insert failure
> 
> :msg,contains,"SIP"             :omoracle:;TestStmt
> 
> & ~
> 
> *.*                             /var/log/syslog-test;TestStmtFile
> 
>       2. running command :  rsyslogd -c5 -nd > tt &
> 
>       3, TOP information
> 
>   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
> 
> 13470 root      25   0  244m  11m 7636 R 99.9  0.1   1:06.39 rs:main
> Q:Reg
> 
> 11410 root      15   0 12768 1144  832 R  0.3  0.0   0:13.52 top
> 
>     1 root      15   0 10372  692  580 S  0.0  0.0   0:00.51 init
> 
>       4. when CPU usage is keeping at 100%,the summary of strace by
> thread
> 13470:
> 
> % time     seconds  usecs/call     calls    errors syscall
> ------ ----------- ----------- --------- --------- ----------------
>  51.26    0.019996        9998         2           epoll_wait
>  46.12    0.017990        1799        10           read
>   2.56    0.000999         999         1           select
>   0.06    0.000022           2        12         2 recvfrom
>   0.00    0.000000           0        64           write
>   0.00    0.000000           0         1           recvmsg
>   0.00    0.000000           0        17           gettimeofday
>   0.00    0.000000           0        62           clock_gettime
> ------ ----------- ----------- --------- --------- ----------------
> 100.00    0.039007                   169         2 total
> 
>       5. when CPU usage is keeping at 100%,some of the call sequence of
> strace by thread 13470:
> 
> [pid 13469]      0.000000 select(1, NULL, NULL, NULL, {86097, 801000}
> <unfinished ...>
> [pid 13473]      0.000089 clock_gettime(CLOCK_REALTIME,  <unfinished
> ...>
> [pid 13472]      0.000054 select(9, [8], NULL, NULL, NULL <unfinished
> ...>
> [pid 13471]      0.000066 read(3,  <unfinished ...>
> [pid 13473]      0.000048 <... clock_gettime resumed> {1305046294,
> 274947000}) = 0 <0.000138>
> [pid 13473]      0.000067 write(1, "6294.274947000:43899940: imudp:
> "...,
> 66) = 66 <0.000042>
> [pid 13473]      0.000137 epoll_wait(12,  <unfinished ...>
> [pid 13471]      1.421497 <... read resumed> "<6>iptables: log and drop
> IN=eth"..., 4095) = 200 <1.421706>
> [pid 13471]      0.000095 gettimeofday({1305046295, 696914}, NULL) = 0
> <0.000022>
> [pid 13471]      0.000130 clock_gettime(CLOCK_REALTIME, {1305046295,
> 697046000}) = 0 <0.000022>
> [pid 13471]      0.000104 write(1, "6295.697046000:42497940: main
> Q:"...,
> 81) = 81 <0.000037>
> [pid 13471]      0.000127 clock_gettime(CLOCK_REALTIME, {1305046295,
> 697276000}) = 0 <0.000020>
> [pid 13471]      0.000102 write(1, "6295.697276000:42497940: main
> Q:"...,
> 65) = 65 <0.000031>
> [pid 13471]      0.000120 read(3, "<6>iptables: log and drop
> IN=eth"...,
> 4095) = 200 <4.250732>
> [pid 13471]      4.250863 gettimeofday({1305046299, 948362}, NULL) = 0
> <0.000021>
> [pid 13471]      0.000129 clock_gettime(CLOCK_REALTIME, {1305046299,
> 948491000}) = 0 <0.000021>
> [pid 13471]      0.000106 write(1, "6299.948491000:42497940: main
> Q:"...,
> 81) = 81 <0.000051>
> [pid 13471]      0.000140 clock_gettime(CLOCK_REALTIME, {1305046299,
> 948735000}) = 0 <0.000021>
> [pid 13471]      0.000101 write(1, "6299.948735000:42497940: main
> Q:"...,
> 65) = 65 <0.000031>
> [pid 13471]      0.000123 read(3, "<6>iptables: log and drop
> IN=eth"...,
> 4095) = 200 <2.178833>
> [pid 13471]      2.178931 gettimeofday({1305046302, 127891}, NULL) = 0
> <0.000022>
> [pid 13471]      0.000112 clock_gettime(CLOCK_REALTIME, {1305046302,
> 128003000}) = 0 <0.000021>
> [pid 13471]      0.000101 write(1, "6302.128003000:42497940: main
> Q:"...,
> 81) = 81 <0.000036>
> [pid 13471]      0.000121 clock_gettime(CLOCK_REALTIME, {1305046302,
> 128225000}) = 0 <0.000021>
> [pid 13471]      0.000102 write(1, "6302.128225000:42497940: main
> Q:"...,
> 65) = 65 <0.000031>
> [pid 13471]      0.000115 read(3, "<6>iptables: log and drop
> IN=eth"...,
> 4095) = 200 <2.431092>
> [pid 13471]      2.431228 gettimeofday({1305046304, 559672}, NULL) = 0
> <0.000022>
> [pid 13471]      0.000132 clock_gettime(CLOCK_REALTIME, {1305046304,
> 559803000}) = 0 <0.000021>
> [pid 13471]      0.000110 write(1, "6304.559803000:42497940: main
> Q:"...,
> 81) = 81 <0.000052>
> [pid 13471]      0.000140 clock_gettime(CLOCK_REALTIME, {1305046304,
> 560052000}) = 0 <0.000021>
> [pid 13471]      0.000102 write(1, "6304.560052000:42497940: main
> Q:"...,
> 65) = 65 <0.000031>
> [pid 13471]      0.000119 read(3, "<6>iptables: log and drop
> IN=eth"...,
> 4095) = 197 <0.678610>
> [pid 13471]      0.678704 gettimeofday({1305046305, 238976}, NULL) = 0
> <0.000021>
> [pid 13471]      0.000110 clock_gettime(CLOCK_REALTIME, {1305046305,
> 239087000}) = 0 <0.000024>
> [pid 13471]      0.000105 write(1, "6305.239087000:42497940: main
> Q:"...,
> 81) = 81 <0.000035>
> [pid 13471]      0.000120 clock_gettime(CLOCK_REALTIME, {1305046305,
> 239312000}) = 0 <0.000020>
> [pid 13471]      0.000102 write(1, "6305.239312000:42497940: main
> Q:"...,
> 65) = 65 <0.000030>
> [pid 13471]      0.000114 read(3, "<6>iptables: log and drop
> IN=eth"...,
> 4095) = 200 <3.058797>
> [pid 13471]      3.058929 gettimeofday({1305046308, 298458}, NULL) = 0
> <0.000022>
> [pid 13471]      0.000131 clock_gettime(CLOCK_REALTIME, {1305046308,
> 298589000}) = 0 <0.000021>
> [pid 13471]      0.000106 write(1, "6308.298589000:42497940: main
> Q:"...,
> 81) = 81 <0.000058>
> [pid 13471]      0.000148 clock_gettime(CLOCK_REALTIME, {1305046308,
> 298841000}) = 0 <0.000021>
> [pid 13471]      0.000101 write(1, "6308.298841000:42497940: main
> Q:"...,
> 65) = 65 <0.000093>
> [pid 13471]      0.000181 read(3, "<6>iptables: log and drop
> IN=eth"...,
> 4095) = 197 <0.213955>
> [pid 13471]      0.214082 gettimeofday({1305046308, 513206}, NULL) = 0
> <0.000021>
> [pid 13471]      0.000128 clock_gettime(CLOCK_REALTIME, {1305046308,
> 513335000}) = 0 <0.000021>
> [pid 13471]      0.000106 write(1, "6308.513335000:42497940: main
> Q:"...,
> 81) = 81 <0.000042>
> [pid 13471]      0.000130 clock_gettime(CLOCK_REALTIME, {1305046308,
> 513570000}) = 0 <0.000021>
> [pid 13471]      0.000102 write(1, "6308.513570000:42497940: main
> Q:"...,
> 65) = 65 <0.000030>
> [pid 13471]      0.000122 read(3, "<6>iptables: log and drop
> IN=eth"...,
> 4095) = 196 <0.835091>
> [pid 13471]      0.835187 gettimeofday({1305046309, 348980}, NULL) = 0
> <0.000021>
> [pid 13471]      0.000110 clock_gettime(CLOCK_REALTIME, {1305046309,
> 349091000}) = 0 <0.000021>
> [pid 13471]      0.000102 write(1, "6309.349091000:42497940: main
> Q:"...,
> 81) = 81 <0.000035>
> [pid 13471]      0.000121 clock_gettime(CLOCK_REALTIME, {1305046309,
> 349313000}) = 0 <0.000020>
> [pid 13471]      0.000102 write(1, "6309.349313000:42497940: main
> Q:"...,
> 65) = 65 <0.000030>
> [pid 13471]      0.000114 read(3,  <unfinished ...>
> [pid 13473]      2.018865 <... epoll_wait resumed> {{EPOLLIN, {u32=2,
> u64=2}}}, 10, 4294967295) = 1 <17.093033>
> [pid 13473]      0.000086 clock_gettime(CLOCK_REALTIME, {1305046311,
> 368481000}) = 0 <0.000020>
> [pid 13473]      0.000098 write(1, "6311.368481000:43899940: imudp:
> "...,
> 65) = 65 <0.000036>
> 
> 
>       6. Attached is the log file while rsyslogd is running in debug
> mode
>           In the log,after "omoracle insertion to DB succeeded",
> there's
> no more oracle log information related.
> 
> 
>       Thank you very much.
> 
> Best,
> Henry
> 
> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]] On Behalf Of [email protected]
> Sent: Tuesday, May 10, 2011 1:19 AM
> To: rsyslog-users
> Subject: Re: [rsyslog] help : CPU high load of rsyslog writing to
> Oracle
> 
> rsyslog uses multiple threads, if you can tell which thread is using
> all the
> CPU and then do a strace of it and dump the sequence of calls that it
> makes
> to process one of the messages it may help
> 
> I don't have any idea what's going on here, so I'm just working through
> the
> steps that I would be doing if I was running into the problem
> 
> try ps -eLf to list the different threads
> 
> in top, hit 'H' to run on per-thread reporting (at which point you may
> get
> some additional info on the right about what the thread is doing)
> 
> from the stats you are showing here, it looks like the thread you got
> with
> your strace is the parent that's receiving messages (lots of
> gettimeofday
> and receive/read type calls) the correct one should have write calls in
> it
> (among others)
> 
> the versions you are running are new enough that we shouldn't have any
> old,
> solved problems hitting us.
> 
>   On Tue, 10 May 2011, bxu
> wrote:
> 
> > Hi David,
> >     The rsyslogd version I tried are 5.8.0(stable) and 6.1.7(devel).
> >     I straced rsyslogd when CPU usage is keeping at 100%.
> >
> > % time     seconds  usecs/call     calls    errors syscall
> > ------ ----------- ----------- --------- --------- ----------------
> > 43.47    0.066967        2309        29           read
> > 38.28    0.058979         855        69           epoll_wait
> > 18.17    0.027994        9331         3           select
> >  0.05    0.000081           1       114           gettimeofday
> >  0.03    0.000041           0       178        69 recvfrom
> >  0.00    0.000000           0         3           recvmsg
> > ------ ----------- ----------- --------- --------- ----------------
> > 100.00    0.154062                   396        69 total
> >
> >
> > Best,
> > Henry
> >
> > -----Original Message-----
> > From: [email protected]
> > [mailto:[email protected]] On Behalf Of [email protected]
> > Sent: Tuesday, May 10, 2011 12:35 AM
> > To: rsyslog-users
> > Subject: Re: [rsyslog] help : CPU high load of rsyslog writing to
> > Oracle
> >
> > I accidently deleted your reply, so I am replying to my message
> >
> > 4-5 messages/secshould not be any problem at all.
> >
> > since writing a copy of the sql commands to a file doesn't show
> > anything strange, the next step will be to try and run it in debug
> > mode to see if it logs anything strange as you start having problems.
> >
> > the next step after that will probably be to do a strace of the
> thread
> > that is using all the CPU
> >
> > I don't see where you mention what version of rsyslog you are using.
> >
> > David Lang
> >
> > On Mon, 9 May 2011, [email protected] wrote:
> >
> >> Date: Mon, 9 May 2011 10:56:30 -0700 (PDT)
> >> From: [email protected]
> >> Reply-To: rsyslog-users <[email protected]>
> >> To: rsyslog-users <[email protected]>
> >> Subject: Re: [rsyslog] help : CPU high load of rsyslog writing to
> >> Oracle
> >>
> >> given that it only happens after a few messages, I would suspect
> that
> >> there is something odd with the messages.
> >>
> >> could you try writing the messages to a file using the Oracle
> >> template and then look and see if there is anything odd about the
> >> messages when it goes nuts?
> >>
> >> the other option is to get a debug dump, but unless it happens right
> >> away, that is likely to be a large dump.
> >>
> >> David Lang
> >>
> >> On Mon, 9 May 2011, bxu wrote:
> >>
> >>> Date: Mon, 9 May 2011 10:48:50 -0500
> >>> From: bxu <[email protected]>
> >>> Reply-To: rsyslog-users <[email protected]>
> >>> To: [email protected]
> >>> Subject: [rsyslog] help : CPU high load of rsyslog writing to
> Oracle
> >>>
> >>> Hi All,
> >>>
> >>>
> >>> I have configured rsyslog writing to Oracle.The writing was
> >>> successful.But after several messages have been made into
> Oracle,the
> >>> CPU use percentage of rsyslogd goes up to 99%-100%.It is abnormally
> >>> too
> > much high.
> >>> There's no problem with the cpu usage when writing to files.
> >>>
> >>> Here is my rsyslogd.conf:
> >>> #====================================================
> >>> #*.* >192.168.45.213,rsyslog
> >>>
> >>> # Use traditional timestamp format
> >>> $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
> >>>
> >>> # Provides kernel logging support (previously done by rklogd)
> >>> $ModLoad imklog # Provides support for local system logging (e.g.
> >>> via logger command) $ModLoad imuxsock
> >>>
> >>> # Log all kernel messages to the console.
> >>> # Logging much else clutters up the screen.
> >>> #kern.* /dev/console
> >>>
> >>> # Log anything (except mail) of level info or higher.
> >>> # Don't log private authentication messages!
> >>> *.info;mail.none;authpriv.none;cron.none /var/log/messages
> >>>
> >>> # The authpriv file has restricted access.
> >>> authpriv.* /var/log/secure
> >>>
> >>> # Log all the mail messages in one place.
> >>> mail.* -/var/log/maillog
> >>>
> >>> # Log cron stuff
> >>> cron.* /var/log/cron
> >>>
> >>> # Everybody gets emergency messages
> >>> *.emerg *
> >>>
> >>> # Save news errors of level crit and higher in a special file.
> >>> uucp,news.crit /var/log/spooler
> >>>
> >>> # Save boot messages also to boot.log
> >>> local7.* /var/log/boot.log
> >>>
> >>> #Load External Listender
> >>> $modload imudp
> >>>
> >>>
> >>> $UDPServerRun 514
> >>> #SPA Messages
> >>> #*.* /var/log/linksys.log
> >>> $template DynaFile,"/var/log/system-%HOSTNAME%.log"
> >>> *.* -?DynaFile
> >>>
> >>>
> >>> ################
> >>> #### ORACLE ####
> >>> ################
> >>>
> >>> $ModLoad omoracle
> >>> $OmoracleDBUser syslog
> >>> $OmoracleDBPassword syslog
> >>> $OmoracleDB syslog
> >>> $OmoracleBatchSize 1
> >>> $OmoracleBatchItemSize 4096
> >>> $OmoracleStatementTemplate OmoracleStatement
> >>>
> >>> $template OmoracleStatement,"INSERT INTO TEST(hostname,message)
> >>> VALUES(:hostname,:msg)"
> >>> $template TestStmt,"%hostname%%msg%"
> >>>
> >>> *.*      :omoracle:;TestStmt
> >>> #====================================================
> >>>
> >>> Really appreciate anyone's help!
> >>>
> >>> Best
> >>>
> >>> _______________________________________________
> >>> rsyslog mailing list
> >>> http://lists.adiscon.net/mailman/listinfo/rsyslog
> >>> http://www.rsyslog.com
> >>>
> >> _______________________________________________
> >> rsyslog mailing list
> >> http://lists.adiscon.net/mailman/listinfo/rsyslog
> >> http://www.rsyslog.com
> >>
> > _______________________________________________
> > rsyslog mailing list
> > http://lists.adiscon.net/mailman/listinfo/rsyslog
> > http://www.rsyslog.com
> >
> > --
> > This message has been scanned for viruses and dangerous content by
> > MailScanner, and is believed to be clean.
> >
> > _______________________________________________
> > rsyslog mailing list
> > http://lists.adiscon.net/mailman/listinfo/rsyslog
> > http://www.rsyslog.com
> >
> _______________________________________________
> rsyslog mailing list
> http://lists.adiscon.net/mailman/listinfo/rsyslog
> http://www.rsyslog.com
> 
> --
> This message has been scanned for viruses and dangerous content by
> MailScanner, and is believed to be clean.
_______________________________________________
rsyslog mailing list
http://lists.adiscon.net/mailman/listinfo/rsyslog
http://www.rsyslog.com

Reply via email to