播放框架 Ubuntu 流氓进程

Play Framework Ubuntu Rogue Process

我已经使用 sbt-native-packager Debian Plugin 打包了我的 Play 应用程序。我使用典型的 sudo dpkg -i tyrion_1.0-SNAPSHOT_all.deb 安装了 .deb 文件。一旦我这样做了,它就创建了守护进程用户和组,并按照以下方式启动了该过程:

aczerwon@vps57610:~/work/tyrion/target$ sudo dpkg -i tyrion_1.0-SNAPSHOT_all.deb 
Selecting previously unselected package tyrion.
(Reading database ... 53135 files and directories currently installed.)
Preparing to unpack tyrion_1.0-SNAPSHOT_all.deb ...
Unpacking tyrion (1.0-SNAPSHOT) ...
Setting up tyrion (1.0-SNAPSHOT) ...
Creating system group: tyrion
Creating system user: tyrion in tyrion with tyrion user-daemon and shell /bin/false
tyrion start/running, process 30525
Processing triggers for ureadahead (0.100.0-16) ...

我看到一个 java 进程 运行 处于 50% - 这太疯狂了,因为应用程序应该处于空闲状态。我假设它使用的是 application.conf 配置,但当我尝试访问该网站时,我得到了 ERR_CONNECTION_REFUSED

进程正在启动和停止

看着 top,我现在看到 CPU 被固定了,因为这个过程一遍又一遍地开始和结束。 pid 正在更改,VisualVM 看不到它 - 它未列出。

一个ERR_CONNECTION_REFUSED错误可能是由于游戏配置错误造成的。参见 sbt-native-packager docs and play pid configuration

示例配置

javaOptions in Universal ++= Seq(
  // Since play uses separate pidfile we have to provide it with a proper path
  s"-Dpidfile.path=/var/run/${packageName.value}/play.pid",

  // setting the http port explicitly
  "-Dhttp.port=9000"
)

对于 CPU 的高利用率,我建议使用 VisualVM 或 MissionControl 分析应用程序以查看发生了什么。

更新

对于播放应用程序,PID 文件必须命名为 play.pid 否则播放不会启动。