这是有关 Apache 和 Samba 之间交互问题的问题。
我们的 Linux 服务器(位于私有内联网上)安装了一个物理上距离数千英里的 Windows 共享,并通过 Apache 为其提供服务。这样,我们的用户就可以通过 HTTP 而不是 file:// URL 查看共享上的文件。但是,有时,单个 HTTP 命中会产生多个 Apache 线程,它们同时访问同一个 SMB 文件,并处于“发送回复”(“W”)状态 10 分钟或更长时间。Apache 的服务器状态页面显示许多相同的线程,如下所示,这些线程已有 1434 秒历史,所有线程的生命周期都略有不同(在“SS”列中):
Srv PID Acc M CPU SS Req Conn Child Slot Client VHost Request
33-1 28411 0/146/27463 W 9.20 1434 0 0.0 0.56 689.97 192.168.0.25 someserver GET /share/foo/myfile.xlsx HTTP/1.1
有人知道为什么会发生这种情况以及我们如何防止这种情况发生吗?有没有更好的方法来实现我们与 Windows 共享建立 HTTP 连接的目标?
我们的 /etc/fstab 条目是:
//server//sharename /mnt/foo cifs ro,auto,credentials=/my/file,nosuid,nodev 0 0
httpd.conf 条目是:
Alias /share/foo "/mnt/foo"
<Directory "/mnt/foo">
EnableSendfile Off
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
我们还看到该服务器上的负载峰值,其中平均负载从正常值(1.00)跳升至 20.00 或更高,这可能是由于该问题造成的。
非常感谢。