【问题标题】:Play Framework Ubuntu Rogue ProcessPlay Framework Ubuntu 流氓进程
【发布时间】:2016-01-29 16:58:27
【问题描述】:

我已经使用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 看不到它 - 它没有列出。

【问题讨论】:

    标签: scala ubuntu playframework sbt sbt-native-packager


    【解决方案1】:

    ERR_CONNECTION_REFUSED 错误可能是由于错过了游戏配置。请参阅sbt-native-packager docsplay 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,否则播放无法启动。

    【讨论】:

    • 我进行了适当的更改 - 请参阅我的 build.sbt。所有目录均使用适当的权限正确创建。当我安装它时,java进程启动但/var/run/tyrion是空的。
    • 你在哪个 ubuntu 版本上运行? Ubuntu 在 14.10 到 15.04 之间从 upstart 切换到 systemd。
    • 我使用的是 Ubuntu 14.04 LTS。
    • top,看起来PID正在改变,所以进程一遍又一遍地启动和死亡,因此固定CPU。
    • 有效!!我更改了 PID 的名称 - 这破坏了一切。将其改回 play.pid 即可。
    猜你喜欢
    • 1970-01-01
    • 2010-10-12
    • 2014-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    相关资源
    最近更新 更多