磁盘用完,导致workerman启动失败,没有任何提示

zgh419566

问题描述

平时正常使用workerman 运行项目,输入 php start_ads_client_5mf.php start 会这样提示:

Workerman[start_ads_client_5mf.php] start in DEBUG mode
------------------------------------------- WORKERMAN --------------------------------------------
Workerman version:4.0.41          PHP version:7.4.28           Event-Loop:\Workerman\Events\Event
-------------------------------------------- WORKERS ---------------------------------------------
proto   user            worker             listen          processes    status           
tcp     www             ads_client_5mf    none            13            [OK]            
--------------------------------------------------------------------------------------------------
Press Ctrl+C to stop. Start success.

当磁盘用满时,程序无法启动,输入启动指令一直卡在这个界面,就算将磁盘空间释放后仍然无法解决,同时同一服务器上的多个项目均出现相同的问题。
只能使用root用户reboot服务器,然后又可以恢复正常
截图

请位各位是否有遇到过?要怎么解决?

操作系统及workerman/webman等框架组件版本

workerman 4.0.41
CentOS7.9
PHP7.4.28

797 2 0
2个回答

six

我遇到过这个问题,最后定位和workerman没关系,是因为磁盘没释放成功。
有些文件被一些进程引用着,虽然在磁盘上删除了文件,但实际文件还存在还占用着磁盘,只不过是通过文件系统看不到它而而已。引用着文件的进程仍然可以读写这个文件。除非把这些进程关掉,否则磁盘无法真正释放。

  • zgh419566 2022-10-26

    非常感谢! 我通过 lsof | grep deleted 定位到未删除的文件是日志文件 $logFile 和 $stdoutFile,将文件手动删除以后即恢复正常。

flycoo

1.可用strace 命令跟踪下看看 是卡在那里了
2.确认下文件 是不是deleted状态,清理掉
https://blog.csdn.net/weixin_43700866/article/details/124928929

  • zgh419566 2022-10-26

    你的方法非常有效,我通过 lsof | grep deleted 定位到未删除的文件是日志文件 $logFile 和 $stdoutFile,将文件手动删除以后即恢复正常。 非常感谢!

年代过于久远,无法发表回答
🔝