FreeBSD: syslog-ng: I/O error occurred while writing;
fd='xx', error='No buffer space available (yy)'
John Baldwin
jhb at freebsd.org
Fri Mar 23 12:03:32 UTC 2012
On Thursday, March 22, 2012 11:00:35 am Traiano Welcome wrote:
> Hi John
>
>
>
> On 22/03/2012 14:16, "John Baldwin" <jhb at freebsd.org> wrote:
>
> >On Thursday, March 22, 2012 6:03:21 am Traiano Welcome wrote:
> >> Hi List
> >>
> >> I've been seeing the following in the messages log of my freebsd syslog
> >> server for quite some time now:
> >>
> >> ---
> >> Mar 20 12:19:12 syslog2 syslog-ng[35313]: I/O error occurred while
> >> writing; fd='12', error='No buffer space available (55)'
> >> Mar 20 12:19:12 syslog2 syslog-ng[35313]: Connection broken;
> >> time_reopen='60'
> >> Mar 20 12:19:12 syslog2 syslog-ng[35313]: I/O error occurred while
> >> writing; fd='13', error='No buffer space available (55)'
> >> Mar 20 12:19:12 syslog2 syslog-ng[35313]: Connection broken;
> >> time_reopen='60'
> >> ---
> >>
> >> These happen at a frequency of about 7 per minute on average. See
> >>attached
> >> trend graphs for an idea of the volume of traffic we're doing, as well
> >>as
> >> the memory and cpu utilisation trends on this server during this period.
> >> As can be seen from the graphs, load does not seem to be the issue.
> >> Occasionally during the week, the system freezes and requires a reboot,
> >>I
> >> think it's related to the above message, though I'm not sure.
> >>
> >> My question is: What does this error mean, and how can I resolve it?
> >>
> >> I have tried to frame this as an operating system kernel resource issue,
> >> and experimented with increasing the freebsd kernel sysctls for UDP
> >> performance:
> >
> >It means that the network driver has "filled" up with packets. Are you
> >using
> >igb(4)? We have to crank the number of descriptors assigned to igb to
> >the max
> >to workaround this at work (we get DNS timeouts during a simple boot
> >otherwise). hw.igb.maxtxd is the tunable you would set. The max value
> >you
> >can set it to is 4096.
>
>
> Thanks for the clue. It seems igb is indeed being used. However, I not
> that when I try to list this tunable, I don't get anything:
>
> ---
> [root at syslog2]# sysctl -a | grep igb
> [root at syslog2]#
> ---
>
>
> ---
> [root at syslog2 /boot]# sysctl hw.igb.maxtxd=4000
> sysctl: unknown oid 'hw.igb.maxtxd'
> ---
>
>
> Is this due to the way igb is compiled into the kernel, or am I tuning in
> the wrong place :-)
You need to put it in /boot/loader.conf and then reboot. Do try using 4096
rather than 4000.
--
John Baldwin
More information about the freebsd-net
mailing list