Hello Everyone,

I use syslog to log locally and remotely via stunnel which is bound to
the loopback address.  It seems syslog will steadily use up FDs until
it runs into the per process limit on my oBSD boxes and then either
stops logging locally or forwarding traffic to stunnel, I don't know
if this is a problem with stunnel or syslog or how to tell, but
something is causing it to open a new file descriptor or unable to
re-use another one or something...?


I can just restart syslogd with a cron job weekly and increase the
file descriptor limit, but that's not really a path I want to go down
if I don't have to.

If you think it will be useful to run syslogd in debug mode, but it
can take a week for this problem to occur...

I have 4 hypothesis of why this might be hapening:
1) syslog's interaction with stunnel is causing it to just to use more
and more FDs
2) regarding #1, if there is a problem with stunnel accepting
connections or being too overloaded or not being able to connect to
the remote stunnel gateway then maybe its not accepting new conns to
it or something?
3) something with myconfiguration is instigating this behaviour...?
4) none of the above

Here is a box that will soon be in a broken state:

r...@hostname# /usr/sbin/syslogd -v
rsyslogd 1.12.2, compiled with:
        FEATURE_REGEXP
        FEATURE_LARGEFILE
        SYSLOG_INET (Internet/remote support)
r...@hostname# uname -a
OpenBSD hostname 4.1 GENERIC#1435 i386

# ulimit -a
time(cpu-seconds)    unlimited
file(blocks)         unlimited
coredump(blocks)     unlimited
data(kbytes)         1048576
stack(kbytes)        8192
lockedmem(kbytes)    153844
memory(kbytes)       460268
nofiles(descriptors) 128
processes            532

I am running ktrace on this pid until I see it use another file
descriptor being used by this process, right now at 109 it looks like.
Come to think of it maybe I should be tracing stunnel too?

r...@host# fstat -n |grep syslog
USER     CMD          PID   FD MOUNT        INUM MODE       R/W    DV|SZ
root     syslogd    20085   wd  0,0         2       40755  r      512
root     syslogd    20085    0* unix dgram 0xd14f6a00
root     syslogd    20085    1* internet stream tcp
root     syslogd    20085    2* internet stream tcp
root     syslogd    20085    3* internet stream tcp
root     syslogd    20085    4* internet stream tcp
root     syslogd    20085    5* internet stream tcp
root     syslogd    20085    6* internet stream tcp
root     syslogd    20085    7* internet stream tcp
root     syslogd    20085    8* internet stream tcp
root     syslogd    20085    9* internet stream tcp
root     syslogd    20085   10* internet stream tcp
root     syslogd    20085   11* internet stream tcp
root     syslogd    20085   12* internet stream tcp
root     syslogd    20085   13* internet stream tcp
root     syslogd    20085   14* internet stream tcp
root     syslogd    20085   15* internet stream tcp
root     syslogd    20085   16* unix dgram 0xd14048c0
root     syslogd    20085   17* internet dgram udp *:514
root     syslogd    20085   18* internet stream tcp
root     syslogd    20085   19* internet stream tcp
root     syslogd    20085   20* internet stream tcp
root     syslogd    20085   21* internet stream tcp
root     syslogd    20085   22* internet stream tcp
root     syslogd    20085   23* internet stream tcp
root     syslogd    20085   24* internet stream tcp
root     syslogd    20085   25* internet stream tcp
root     syslogd    20085   26* internet stream tcp
root     syslogd    20085   27* internet stream tcp
root     syslogd    20085   28* internet stream tcp
root     syslogd    20085   29* internet stream tcp
root     syslogd    20085   30* internet stream tcp
root     syslogd    20085   31* internet stream tcp
root     syslogd    20085   32* internet stream tcp
root     syslogd    20085   33* internet stream tcp
root     syslogd    20085   34* internet stream tcp
root     syslogd    20085   35* internet stream tcp
root     syslogd    20085   36* internet stream tcp
root     syslogd    20085   37* internet stream tcp
root     syslogd    20085   38* internet stream tcp
root     syslogd    20085   39* internet stream tcp
root     syslogd    20085   40* internet stream tcp
root     syslogd    20085   41* internet stream tcp
root     syslogd    20085   42* internet stream tcp
root     syslogd    20085   43* internet stream tcp
root     syslogd    20085   44* internet stream tcp
root     syslogd    20085   45* internet stream tcp
root     syslogd    20085   46* internet stream tcp
root     syslogd    20085   47* internet stream tcp
root     syslogd    20085   48* internet stream tcp
root     syslogd    20085   49* internet stream tcp
root     syslogd    20085   50* internet stream tcp
root     syslogd    20085   51* internet stream tcp
root     syslogd    20085   52* internet stream tcp
root     syslogd    20085   53* internet stream tcp
root     syslogd    20085   54* internet stream tcp
root     syslogd    20085   55* internet stream tcp
root     syslogd    20085   56* internet stream tcp
root     syslogd    20085   57* internet stream tcp
root     syslogd    20085   58* internet stream tcp
root     syslogd    20085   59* internet stream tcp
root     syslogd    20085   60* internet stream tcp 0xd6906648
127.0.0.1:4392 --> 127.0.0.1:5140
root     syslogd    20085   61* internet stream tcp
root     syslogd    20085   62* internet stream tcp
root     syslogd    20085   63  0,4    844952      100644  w    81695
root     syslogd    20085   64* internet stream tcp
root     syslogd    20085   65* internet stream tcp
root     syslogd    20085   66  0,4    844952      100644  w    81695
root     syslogd    20085   67* internet stream tcp
root     syslogd    20085   68* internet stream tcp
root     syslogd    20085   69  0,4    844984      100644  w       73
root     syslogd    20085   70* internet stream tcp
root     syslogd    20085   71* internet stream tcp
root     syslogd    20085   72  0,4    844984      100644  w       73
root     syslogd    20085   73* internet stream tcp
root     syslogd    20085   74* internet stream tcp
root     syslogd    20085   75* internet stream tcp
root     syslogd    20085   76  0,4    844984      100644  w       73
root     syslogd    20085   77* internet stream tcp
root     syslogd    20085   78* internet stream tcp
root     syslogd    20085   79* internet stream tcp
root     syslogd    20085   80  0,4    844969      100644  w  3437673
root     syslogd    20085   81* internet stream tcp
root     syslogd    20085   82* internet stream tcp
root     syslogd    20085   83  0,4    844976      100644  w      442
root     syslogd    20085   84* internet stream tcp
root     syslogd    20085   85* internet stream tcp
root     syslogd    20085   86  0,4    844976      100644  w      442
root     syslogd    20085   87* internet stream tcp
root     syslogd    20085   88* internet stream tcp
root     syslogd    20085   89  0,4    844930      100640  w    18747
root     syslogd    20085   90* internet stream tcp
root     syslogd    20085   91* internet stream tcp
root     syslogd    20085   92  0,4    844936      100600  w       74
root     syslogd    20085   93* internet stream tcp
root     syslogd    20085   94* internet stream tcp
root     syslogd    20085   95  0,4   2328711      100600  w    46522
root     syslogd    20085   96* internet stream tcp
root     syslogd    20085   97* internet stream tcp
root     syslogd    20085   98  0,4    844972      100640  w      476
root     syslogd    20085   99* internet stream tcp
root     syslogd    20085  100* internet stream tcp
root     syslogd    20085  101  0,4    844941      100640  w        0
root     syslogd    20085  102* internet stream tcp
root     syslogd    20085  103* internet stream tcp
root     syslogd    20085  104  0,4    844935      100640  w        0
root     syslogd    20085  105* internet stream tcp
root     syslogd    20085  106* internet stream tcp
root     syslogd    20085  107  0,4    844931      100600  w       74
root     syslogd    20085  108* internet stream tcp 0xd694c7d4
127.0.0.1:19723 --> 127.0.0.1:5140
root     syslogd    20085  109* internet stream tcp 0xd694c964
127.0.0.1:42849 --> 127.0.0.1:5140


r...@host# netstat -an
Active Internet connections (including servers)
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)
tcp        0     32  172.20.20.51.22        remote.63117     ESTABLISHED
tcp        0      0  172.20.20.51.38090     remote.443        ESTABLISHED
tcp        0      0  127.0.0.1.5140         127.0.0.1.42849        ESTABLISHED
tcp        0      0  127.0.0.1.42849        127.0.0.1.5140         ESTABLISHED
tcp        0      0  172.20.20.51.19898     remote.443        ESTABLISHED
tcp        0      0  127.0.0.1.5140         127.0.0.1.19723        ESTABLISHED
tcp        0      0  127.0.0.1.19723        127.0.0.1.5140         ESTABLISHED
tcp        0      0  172.20.20.51.5494      remote.443        ESTABLISHED
tcp        0      0  127.0.0.1.5140         127.0.0.1.4392         ESTABLISHED
tcp        0      0  127.0.0.1.4392         127.0.0.1.5140         ESTABLISHED
tcp        0      0  *.22                   *.*                    LISTEN
tcp        0      0  127.0.0.1.5140         *.*                    LISTEN
tcp        0      0  127.0.0.1.587          *.*                    LISTEN
tcp        0      0  127.0.0.1.25           *.*                    LISTEN
tcp        0      0  *.37                   *.*                    LISTEN
tcp        0      0  *.13                   *.*                    LISTEN
tcp        0      0  *.113                  *.*                    LISTEN
Active Internet connections (including servers)
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)
udp        0      0  172.20.20.51.2947      172.20.20.92.123
udp        0      0  172.20.20.51.12927     172.20.20.91.123
udp        0      0  *.514                  *.*
udp        0      0  10.144.73.23.123       *.*
udp        0      0  10.144.73.21.123       *.*
udp        0      0  172.20.20.51.123       *.*
udp        0      0  127.0.0.1.123          *.*
udp        0      0  127.0.0.1.512          *.*


r...@host# fstat|grep stunnel
USER     CMD          PID   FD MOUNT        INUM MODE       R/W    DV|SZ
_stunnel stunnel    32055 root /var      6141184 drwxr-xr-x   r      512
_stunnel stunnel    32055   wd /var      6141184 drwxr-xr-x   r      512
_stunnel stunnel    32055    0 /          166117 crw-rw-rw-  rw     null
_stunnel stunnel    32055    1 /          166117 crw-rw-rw-  rw     null
_stunnel stunnel    32055    2 /          166117 crw-rw-rw-  rw     null
_stunnel stunnel    32055    3 pipe 0xe9505e10 state:
_stunnel stunnel    32055    4 pipe 0xe9505e10 state:
_stunnel stunnel    32055    5 /          165853 crw-rw-rw-  rw   crypto
_stunnel stunnel    32055    6* internet stream tcp 0xd6906e18
127.0.0.1:5140 <-- 127.0.0.1:4392
_stunnel stunnel    32055    7 pipe 0xe95057e0 state:
_stunnel stunnel    32055    8 pipe 0xe95057e0 state:
_stunnel stunnel    32055    9* internet stream tcp 0xd694cc84 127.0.0.1:5140
_stunnel stunnel    32055   10* internet stream tcp 0xd694c644
172.20.20.51:5494 --> remote:443
_stunnel stunnel    32055   11* internet stream tcp 0xd694c4b4
127.0.0.1:5140 <-- 127.0.0.1:19723
_stunnel stunnel    32055   12* internet stream tcp 0xd694ce14
172.20.20.51:19898 --> remote:443
_stunnel stunnel    32055   13* internet stream tcp 0xd694caf4
127.0.0.1:5140 <-- 127.0.0.1:42849
_stunnel stunnel    32055   14* internet stream tcp 0xd68cb19c
172.20.20.51:38090 --> remote:443

# ulimit -a
time(cpu-seconds)    unlimited
file(blocks)         unlimited
coredump(blocks)     unlimited
data(kbytes)         1048576
stack(kbytes)        8192
lockedmem(kbytes)    153844
memory(kbytes)       460268
nofiles(descriptors) 128
processes            532

r...@hostname# /usr/sbin/syslogd -v
rsyslogd 1.12.2, compiled with:
        FEATURE_REGEXP
        FEATURE_LARGEFILE
        SYSLOG_INET (Internet/remote support)
r...@hostname# uname -a
OpenBSD hostname 4.1 GENERIC#1435 i386

Here is how its getting started out of rc:

syslogd_flags="-h -i /var/run/syslog.pid -m 0 -r 514"  # flags for rsyslogd

Process Entries:
# ps -axwww|egrep '[s]yslog|[s]tunnel'
32055 ??  Is      2:22.48 /usr/local/sbin/stunnel
20085 ??  Is      4:50.88 syslogd -h -i /var/run/syslog.pid -m 0 -r
514 -a /var/empty/dev/log

Here is the config:

/etc/rsyslog.conf
# Template to include time received by the Admin Server when forwarded
to the Data Center.
# Juniper Messages are not passed with a timestamp.

$template MissingDate,"<%PRI%>%timegenerated% %HOSTNAME% %syslogtag%%msg%"

# Template to remove the syslog tag "root:" for the heartbeat and
checks when forwarded to the Data Center.

$template NoSyslogTag,"<%PRI%>%timegenerated% %HOSTNAME% %msg%"

# Template to allow for easier reading of the Cisco logs.
# Include a text designation for the type of Cisco equipment.
# Start the message at position at offset 19 to strip out time stamp.

$template CiscoSW1,"%TIMESTAMP% %HOSTNAME% Switch1: %msg:19:500:drop-last-lf%\n"
$template CiscoSW2,"%TIMESTAMP% %HOSTNAME% Switch2: %msg:19:500:drop-last-lf%\n"
$template CiscoTS1,"%TIMESTAMP% %HOSTNAME% Term1: %msg:19:500:drop-last-lf%\n"

# Forward messages from the admin server heartbeat and checks based on
message id
:msg, contains, "NHB10001:"
@@127.0.0.1:5140;NoSyslogTag
:msg, contains, "CHK10002:"
@@127.0.0.1:5140;NoSyslogTag
:msg, contains, "CHK10003:"
@@127.0.0.1:5140;NoSyslogTag
:msg, contains, "CHK10004:"
@@127.0.0.1:5140;NoSyslogTag
:msg, contains, "CHK10005:"
@@127.0.0.1:5140;NoSyslogTag
:msg, contains, "ATH10006:"
@@127.0.0.1:5140;NoSyslogTag
:msg, contains, "ATH10007:"
@@127.0.0.1:5140;NoSyslogTag
:msg, contains, "ATH10008:"
@@127.0.0.1:5140;NoSyslogTag
:msg, contains, "ATH10009:"
@@127.0.0.1:5140;NoSyslogTag
:msg, contains, "ATH10011:"
@@127.0.0.1:5140;NoSyslogTag
:msg, contains, "ATH10012:"
@@127.0.0.1:5140;NoSyslogTag
:msg, contains, "ATH10015:"
@@127.0.0.1:5140;NoSyslogTag
:msg, contains, "ATH10016:"
@@127.0.0.1:5140;NoSyslogTag
:msg, contains, "ATH10017:"
@@127.0.0.1:5140;NoSyslogTag
:msg, contains, "CLP10020:"
@@127.0.0.1:5140;NoSyslogTag
:msg, contains, "CLP10021:"
@@127.0.0.1:5140;NoSyslogTag

# Forward messages from juniper nodes basd on message id
:msg, contains, "ADM10310:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "ADM20255:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "ADM20928:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "ADM22798:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "ADM23046:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "ADM24336:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "ADM24337:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "ARC22051:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "ARC23037:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "ARC23038:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "ARC23039:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "AUT10301:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "AUT21060:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "AUT21089:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "AUT22677:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "AUT22678:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "AUT22696:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "AUT23391:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "AUT23551:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "AUT23552:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "AUT24080:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "AUT24417:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "AUT24418:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "ERR20146:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "ERR20147:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "ERR20148:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "ERR20149:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "ERR20150:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "ERR20151:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "ERR20152:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "ERR20153:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "ERR20154:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "ERR20155:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "ERR20643:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "ERR20644:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "ERR20645:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "ERR24016:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "ERR24019:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "ERR24076:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "LIC10200:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "SYS10062:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "SYS10087:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "SYS10088:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "SYS10089:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "SYS10090:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "SYS10091:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "SYS10092:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "SYS10093:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "SYS10094:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "SYS10298:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "SYS10299:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "SYS10314:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "SYS23041:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "SYS23402:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "SYS23409:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "SYS24015:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "SYS24020:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "SYS24316:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "SYS24317:"
@@127.0.0.1:5140;MissingDate
:msg, contains, "SYS24348:"
@@127.0.0.1:5140;MissingDate

# Forward messages from F5 nodes based on lb hostnames
:HOSTNAME, contains, "lb1-"                             @@127.0.0.1:5140
:HOSTNAME, contains, "lb2-"                             @@127.0.0.1:5140

# Log F5 messages locally for archival purposes based on lb hostnames
:HOSTNAME, contains, "lb1-"                             /var/log/f5.log
:HOSTNAME, contains, "lb2-"                             /var/log/f5.log

# Log Cisco messages locally for archival purposes based on ip hostnames
:HOSTNAME, contains, "172.20.20.101"                    /var/log/cisco.log
:HOSTNAME, contains, "172.20.20.102"                    /var/log/cisco.log
:HOSTNAME, contains, "172.20.20.227"                    /var/log/cisco.log

# Discard lb1/2 and cisco messages from further processing
:HOSTNAME, contains, "lb1-"                             ~
:HOSTNAME, contains, "lb2-"                             ~
:HOSTNAME, contains, "172.20.20.101"                    ~
:HOSTNAME, contains, "172.20.20.102"                    ~
:HOSTNAME, contains, "172.20.20.227"                    ~

# Log local7 messages locally for archival purposes
local7.*                                                /var/log/local7.log

*.notice;\
auth,authpriv,cron,ftp,kern,lpr,mail,user,local7.none   /var/log/messages
kern.debug;syslog,user.info                             /var/log/messages
auth.info                                               /var/log/authlog
authpriv.debug                                          /var/log/secure
cron.info                                               /var/cron/log
daemon.info                                             /var/log/daemon
ftp.info                                                /var/log/xferlog
lpr.debug                                               /var/log/lpd-errs
mail.info                                               /var/log/maillog
#uucp.info                                              /var/log/uucp

# Everyone gets emergency messages.
*.emerg

I've tried to look on the net for anything that had to do with syslog
and file descriptors and or how these problems happen and coming out
with pretty much squat..

Thank you,
Dennis O.
_______________________________________________
rsyslog mailing list
http://lists.adiscon.net/mailman/listinfo/rsyslog
http://www.rsyslog.com

Reply via email to