systemd 里 service 启动 PHP -fpm 90 秒后终止,是怎么回事

2019-07-14 11:29:02 +08:00
 azev
文件 /etc/systemd/system/php53-fpm.service

[Unit]
Description=The PHP53 FastCGI Process Manager
After=syslog.target network.target

[Service]
Type=notify
PIDFile=/usr/local/php53/var/run/php53-fpm.pid
EnvironmentFile=/usr/local/php53/etc/sysconfig/php53-fpm
ExecStart=/usr/local/php53/sbin/php-fpm -c /usr/local/php53/etc/php.ini -y /usr/local/php53/etc/php-fpm.conf --nodaemonize
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

----------------

文件 /usr/local/php53/etc/php-fpm.conf
[global]
pid = /usr/local/php53/var/run/php53-fpm.pid
error_log = /usr/local/php53/var/log/php-fpm.log
; Pool Definitions ;
[www53]
user = nginx
group = nginx
listen = /usr/local/php53/var/run/php-fpm.sock
listen.owner = nobody
listen.group = nobody

日志

Jul 14 01:38:10 lasv5 systemd[1]: Starting The PHP53 FastCGI Process Manager...
Jul 14 01:38:10 lasv5 php-fpm[21696]: [14-Jul-2019 01:38:10] NOTICE: fpm is running, pid 21696
Jul 14 01:38:10 lasv5 php-fpm[21696]: [14-Jul-2019 01:38:10] NOTICE: ready to handle connections


Jul 14 01:39:40 lasv5 systemd[1]: php53-fpm.service start operation timed out. Terminating.
Jul 14 01:39:40 lasv5 php-fpm[21696]: [14-Jul-2019 01:39:40] NOTICE: Terminating ...
Jul 14 01:39:40 lasv5 php-fpm[21696]: [14-Jul-2019 01:39:40] NOTICE: exiting, bye-bye!
Jul 14 01:39:40 lasv5 systemd[1]: Failed to start The PHP53 FastCGI Process Manager.
Jul 14 01:39:40 lasv5 systemd[1]: Unit php53-fpm.service entered failed state.
Jul 14 01:39:40 lasv5 systemd[1]: php53-fpm.service failed.
1894 次点击
所在节点    问与答
9 条回复
azev
2019-07-14 11:37:24 +08:00
在 90 秒内
访问网站没有问题
90 秒时就终止了
怀疑是权限的问题 但没有看到这个错误
dot2017
2019-07-14 11:45:10 +08:00
Jul 14 01:39:40 lasv5 systemd[1]: php53-fpm.service start operation timed out. Terminating.
你这服务其实没起来啊
taolu
2019-07-14 12:47:59 +08:00
type 改成 simple 或者 forking,fpm 启动后不向 systemd 发送消息的吧
taolu
2019-07-14 12:50:04 +08:00
des
2019-07-14 12:58:12 +08:00
@dot2017 @azev
应该不是没起来,是 Type=notify 的问题,php 不支持 notify 模式,systemd 超时杀掉了,三楼说的是对的
oneisall8955
2019-07-14 13:17:20 +08:00
type 为 fork
azev
2019-07-14 14:32:23 +08:00
@taolu @des
多谢 确实是 type 的问题 目前改成 simple 就可以了
查了下 应该是在 php5.4 之后才可以使用 notify
而我部署的是 5.3 复制了其他机器 5.4 的配置 所以出错了

@oneisall8955
确定可以用 fork 吗?
这个 php-fpm 自己就会按照 php-fpm.conf 里的设置进行 fork 吧
oneisall8955
2019-07-14 15:05:59 +08:00
@azev 以前我创建 service 的设置用 fork 有效,simple 没试过噢,你用 simple 可以的话,那就行了吧~太久没搞过 systemd 的 service,怕是误导你了,抱歉😨
ryd994
2019-07-15 02:03:40 +08:00
simple 就是如果启动的前端进程退出了,那就是服务结束了,子进程会被杀掉。
forking 会检测还有没有子进程活着,如果还有,那就认为服务还在。
如果支持 foreground 模式的程序,建议用 simple,可以直接 log 输出内容到 journald
如果只支持传统的,前端进程 fork daemon 后前端自己返回退出,留下 daemon,那就只能用 simple

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/582813

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX