jul 31
用于附件下载的几台服务器中,有一台是 I386 架构,今天发现网络响应很慢,但系统负载一点都不高,看了看 netstat -rm 发现:
6065/6656/6656 sfbufs in use (current/peak/max) 705762 requests for sfbufs delayed 295194 requests for I/O initiated by sendfile
原来系统的 nsfbufs 满了。 man tuning 后,发现主要是 sendfile(2) 系统调用需要占用 nsfbufs,而现在越来越多的应用开始依靠 sendfile(2) 来传送文件,比如 Lighttpd 等。而我在服务器上使用 Lighttpd 作为静态附件的下载服务,可见对 sendfile(2) 的调用非常之频繁(netstat -rm 中有70万次的请求被延迟,只顺利完成近30万次)。
由此,增大 nsfbufs 参数即可解决此问题,在 /boot/loader.conf 文件中设置:
kern.ipc.nsfbufs="32768"
注:
- AMD64 架构系统没有此问题;
- kern.ipc.nsfbufs 的值应根据系统实际情况调整;
- kern.ipc.nsfbufs 参数调整需要重启动系统;



Recent Comments