【问题标题】:wildfly as systemd serviceWildfly 作为系统服务
【发布时间】:2017-03-20 15:21:29
【问题描述】:

我想在 centos7 中将 wildfly-domain 作为系统服务 在 root 用户的作品中,但是当我以wilfly 用户身份启动它一段时间后它显示错误:

java.lang.OutOfMemoryError: 无法创建新的本地线程ESC

然后停止。即使停止服务也不起作用。

我试图改变 heap-memo 并且......但是用户是一个问题! 我该如何解决这个问题?

服务文件是ib wildfly8/bin/init.d/wildfly-init-redhat.sh 我在服务脚本的顶部尝试了“ulimit -n”,但没有任何改变! 我有 256Gb 内存和 64 核 CPU,但是 ....

【问题讨论】:

  • 在您的问题中包含您遇到问题的 systemd .service 文件
  • 你是什么意思?我应该在哪里添加什么?
  • 您说您正在使用systemd 服务。所以,/etc/systemd/system/ 中应该有一个扩展名为.service 的文件。如果您没有使用.service 文件,那么您就没有使用systemd。如果您是是,请将.service 文件的内容粘贴到您的问题中。
  • 我在 /etc/init.d/ 中完成了它,但我将其更改为 systemd 。现在我有一个 systemd wilfly 服务。当我用root用户运行它时,没问题,但是当我用wilfly用户启动它时我可以工作,但是5分钟后它就像我说的那样掉下来了,我怎样才能改变wilfly用户的限制?
  • 您使用的是 64 位 JDK 不是吗?

标签: java wildfly-8 systemd


【解决方案1】:

单位的正确位置是:

/etc/systemd/system/wildfly.service

这个最小值没问题

[Unit]
Description=WildFly application server
Wants=network-online.target 
After=network-online.target

[Service]
Type=simple
User=web
Group=web
ExecStart=/opt/wildfly-10.1.0.Final/bin/domain.sh
Restart=always
RestartSec=20

[Install]
WantedBy=multi-user.target

您应该只编辑 ExecStart 字段以匹配您的路径。

用

创建用户web
useradd web

也可以通过 root 执行:

chown -R web:web /opt/wildfly-10.1.0.Final/

当

systemctl start wildfly
systemctl enable wildfly

如果您收到 OOM,请检查您的限制

[Service] 部分 systemd 单元,如

LimitFSIZE=infinity
LimitCPU=infinity
LimitAS=infinity
LimitNOFILE=64000
LimitNPROC=64000

或 /etc/security/limits.d/ /etc/security/limits.conf

【讨论】:

  • network.target 可能为时过早(在使用 RHEL7 的快速机器上存在问题);使用Wants=network-online.target After=network-online.target,以便在操作系统端正确配置接口;取自这里:unix.stackexchange.com/questions/126009/…
  • 对于网络服务器来说应该没关系,但我想,无论如何也不会造成伤害。所以,编辑了我的帖子,谢谢。
猜你喜欢
  • 2017-02-09
  • 1970-01-01
  • 2012-04-21
  • 1970-01-01
  • 1970-01-01
  • 2021-03-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-03
相关资源
最近更新 更多