В настоящее время я нажимаю жесткий лимит в 130688 байт. Если я попытаюсь отправить что-то большее в одном сообщении, я получаю ошибку ENOBUFS.
Я проверил параметры net.core.rmem_default, net.core.wmem_default, net.core.rmem_max, net.core.wmem_max и net.unix.max_dgram_qlen sysctl и увеличил их все, но они не влияют, потому что эти обрабатывать общий размер буфера, а не размер сообщения.
Я также установил опции сокета SO_SNDBUF и SO_RCVBUF, но это имеет ту же проблему, что и выше. Размер буфера сокета по умолчанию устанавливается в зависимости от параметров сокета _default.
Я посмотрел на источник ядра, где ENOBUFS возвращается в стек сокета, но мне было непонятно, откуда он. Единственные места, которые, похоже, возвращают эту ошибку, связаны с невозможностью выделения памяти.
Действительно ли максимальный размер 130688? Если это не может быть изменено без перекомпиляции ядра?
Спасибо!