有一个用 C/C++ 编写的小型服务器程序,使用 nginx 和 Postgres,目前都托管在同一个 ubuntu 系统上。我通常从 bash 命令行运行服务器程序。
\n最近在较新版本的 Ubuntu 上,当服务器程序运行时,大约半分钟后我无法执行任何其他命令;如果屏幕保存,则我无法重新登录。终止我的服务器程序将恢复正常行为。
\n在 bash 中:按 ENTER 键输入任意命令:
\nbash: fork: retry: Resource temporarily unavailable\nRun Code Online (Sandbox Code Playgroud)\n并将以下内容写入 /var/log/syslog:
\nSep 5 09:46:08 ubuntu kernel: [ 145.614883] cgroup: fork rejected by pids controller in /user.slice/user-1000.slice/user@1000.service\nRun Code Online (Sandbox Code Playgroud)\n系统重新启动后启动服务器程序与系统运行一段时间后启动服务器程序的体验是不同的。具体来说,重新启动后,服务器程序将正常运行。如果服务器程序重新启动,它将以 60% 的利用率运行半分钟,然后跳至 80% 约 5 秒,然后降至 20% 的利用率。看起来好像有什么东西直接限制了应用程序。C组?
\nPAM 配置: \n在 /etc/pam.d/common-session 中有以下行:
\nsession required pam_unix.so \nsession optional pam_systemd.so \nRun Code Online (Sandbox Code Playgroud)\n我不认为这有什么区别,但在 /etc/security/limits.d/91-nofile.conf 中我设置了以下 PAM 设置:
\n* soft nofile …Run Code Online (Sandbox Code Playgroud)