在Linux上使用systemd启动进程:使用;su root-c“;

在Linux上使用systemd启动进程:使用;su root-c“;,linux,shell,mono,systemd,Linux,Shell,Mono,Systemd,我们在Linux Debian服务器上有一个使用Mono/Owin的SignalR推送服务器 我们执行了一个负载测试,根据在systemd上如何启动推送,我们得到了不同的行为 工作: ExecStart=/bin/su root-c'/usr/bin/mono--server mydaemon.exe-l:/var/run/mydaemon.pid' 连接约1k后挂起: ExecStart=/usr/bin/mono--server mydaemon.exe-l:/var/run/mydaemo

我们在Linux Debian服务器上有一个使用Mono/Owin的SignalR推送服务器

我们执行了一个负载测试,根据在systemd上如何启动推送,我们得到了不同的行为

工作: ExecStart=/bin/su root-c'/usr/bin/mono--server mydaemon.exe-l:/var/run/mydaemon.pid'

连接约1k后挂起: ExecStart=/usr/bin/mono--server mydaemon.exe-l:/var/run/mydaemon.pid

我们可以随时复制不同的行为:在第二种情况下,测试客户机停留在信号协商呼叫中,而没有收到任何应答。 我们还为这两种情况导出了Mono环境变量“max-thread”


所以问题是,在这两种情况下,资源系统使用率/可用性有什么不同?

在systemd服务定义中,可以指定打开文件的数量限制,因此如果添加一行:

LimitNOFILE=65536
在服务定义文件的
[Service]
部分,它应该将限制设置为该值,而不是通过systemd设置为
1024
的默认值


该文件定义了限制的默认参数(例如,
DefaultLimitNOFILE
),手册页面定义了可用于设置各种限制覆盖的参数。

使用类似于
plimit
的工具查看在每种情况下应用了哪些资源限制-对于普通用户,很可能存在一些限制,而对于root用户则没有。您好,感谢您的建议。即使我们在这两种情况下都以root用户身份运行,使用“su”我们也得到了更大的openFile限制(65536),而不使用它的限制是1024。因此,我们发现systemd的默认打开文件限制是1024,但是当我们在systemd中使用“su”启动进程时,这个限制并不适用。这就是解决办法。我不知道你是否可以把你的评论作为一个答案,我将非常乐意标记为anwered。谢谢!