Fwd: systat -ip, socket buffer full

Eugene Grosbein eugen at grosbein.net
Fri May 25 14:10:10 UTC 2018


On 25.05.2018 18:28, Raimund Sacherer wrote:

>>> when checking systat -ip I see the value for "socket buffer full" with
>>> values different from 0, I see 1, 2, up to 55 in one occasion.
>>> I asked on IRC and it was mentioned I should try to up
>>> kern.ipc.soacceptqueue to 1024 from the default 128, but I could still see
>>> values over 0 in "socket buffer full".
>>> How can I tune this buffer?
>>>
>>> We have a lot of UDP traffic (the server is a PBX serving around 200 agents
>>> with avg 50 concurrent calls.
>>
>> Each (udp) socket has its own limit on receiving buffer size and it is
>> application's duty
>> to set its size to right value using setsockopt() function.
>> You should read your PBX manual on how to configure it to use larger
>> buffers.
>>
> I will check this out.

>> As last resort, you can raise sysctl kern.ipc.maxsockbuf that establishes
>> default value
>> for size of such buffers that is used when application does not change
>> defaults.
>> However, it may affect many applications in the system and lead to
>> overflow of kernel memory pools
>> unless you know what are you doing, has plenty of free physical memory and
>> raised kernel limits
>> accordingly, so better start with PBX documentation.
>>
> Thank you, I might try that, i checked and the value on my system is
> 2097152. How can I check if I hit this buffer wall? Is there a monitoring
> tool which can tell me more stats about this buffer use?

As I've already said, there is no such single buffer: each udp socket has its own.
You can use "netstat -nx" to see usage of buffers. Read "man netstat" to learn
how to read its output.

You should probably increase both of sysctl net.inet.udp.recvspace (effective size of per-socket buffer)
and sysctl kern.ipc.maxsockbuf (limit on sending + receiving socket buffers for several protocols).

Again, application settings should serve much better.


More information about the freebsd-net mailing list