增加 systemd 单元文件中 Unix 域数据报套接字的缓冲区大小

增加 systemd 单元文件中 Unix 域数据报套接字的缓冲区大小

我使用 Unix 域数据报套接字进行单向守护进程通信。在计算的某些峰值处,写入套接字的进程可能会被阻塞write(),因为读取进程需要更多时间来计算单个数据报。由于写入过程会定期产生数据,因此解决问题的最干净方法就是增加套接字的缓冲能力。套接字是基于以下 systemd 单元文件创建的:

[Unit]
Description= Some Internal Socket

[Socket]
ListenDatagram=/run/foo/foo.sk
#ReceiveBuffer=10M
#SendBuffer=10M
#PipeSize=10M
#MessageQueueMaxMessages=1024
#MessageQueueMessageSize=1024

我查看了 systemd.socket 的 man 并发现了一些看起来很有希望的选项(注释掉的选项)。我尝试过这些的各种组合,但不幸的是都不起作用。更改光盘上的单元文件后,我总是重新启动系统(操作系统)以检查应用的更改是否有效。每次我都能在块之前写入大约相同数量的数据报。大约是因为数据报长度可能会随着几个字节的变化而变化,所以例如有时我能够写入 508 个数据报,有时可以写入 483 个数据报。

有谁知道正确的方法是什么?

相关内容