我们有一个网络服务器,可以执行用户提交的科学计算。计算可能需要长时间运行,因此我们使用Torque资源管理器(又名 pbs_server)在少数计算节点上分发/调度它们。Torque 使用目录中的 unix 域套接字/tmp
进行通信,但 http 服务器(以及从中派生出来的进程)无法访问真正的/tmp
目录,因此对于这些进程,套接字似乎丢失,从而导致错误。
细节:
PrivateTmp=true
集的服务运行。这导致服务拥有自己的/tmp
目录,与“真正的”根目录 /tmp 无关。qsub
,这是提交作业的 Torque 命令。因为qsub
是从 PHP 调用的,所以它继承了/tmp
Apache的“fake”目录。qsub
在内部尝试连接到位于 的 unix 套接字/tmp/trqauthd-unix
。但由于它没有看到真正的 /tmp 目录,它失败并出现以下错误: Error in connection to trqauthd (15137)-[could not connect to unix
socket /tmp/trqauthd-unix: 2]
我能实现的唯一解决方案是编辑 systemd 下的 httpd.service 文件并将其更改PrivateTmp
为 false。这确实解决了问题。但我宁愿不这样做,因为(我假设) PrivateTmp 被设置为 true 是有充分理由的。
我想知道的是,是否有任何方法可以在不同的位置创建套接字,或者以某种方式建立到可以从 Apache(及其分叉进程)内部使用的套接字的链接。
创建到套接字的链接是微不足道的,但它并不能解决问题,因为我不知道有什么方法可以配置qsub …