webman运行出现了一个很奇怪的现象 php100%

fan15500

问题描述

webman使用的是最新版,一个星期之前安装部署的,系统是centos 7.5 宝塔环境 php start.php start -d 方式运行
最近这3天有一个奇怪,就是每天早晨都访问不了,然后连接服务器发现两个php进程都是100%,这个时候只要运行php start.php status就会得到一个结果,如下

Workerman version:4.1.14          PHP version:7.4.33
start time:2024-01-13 04:50:43   run 4 days 5 hours   
load average: 2.1, 2.12, 1.95    event-loop:\Workerman\Events\Select
2 workers       3 processes
worker_name  exit_status      exit_count
webman       0                30
webman       65280            2
monitor      0                0
----------------------------------------------PROCESS STATUS---------------------------------------------------
pid     memory  listening             worker_name  connections send_fail timers  total_request qps    status
2090    4.26M   none                  monitor      0           0         3       0             0      [idle]
10379   N/A     http://127.0.0.1:8002 webman       N/A         N/A       N/A     N/A           N/A    [busy] 
10380   N/A     http://127.0.0.1:8002 webman       N/A         N/A       N/A     N/A           N/A    [busy] 
----------------------------------------------PROCESS STATUS---------------------------------------------------
Summary 4M      -            -            0           0         3       0             0      [Summary] 

接着第二次

a:3:{i:4465;a:2:{s:4:"name";s:6:"webman";s:6:"listen";s:21:"http://127.0.0.1:8002";}i:4466;a:2:{s:4:"name";s:6:"webman";s:6:"listen";s:21:"http://127.0.0.1:8002";}i:2090;a:2:{s:4:"name";s:7:"monitor";s:6:"listen";s:4:"none";}}
----------------------------------------------GLOBAL STATUS----------------------------------------------------
Workerman version:4.1.14          PHP version:7.4.33
start time:2024-01-13 04:50:43   run 4 days 5 hours   
load average: 1.67, 2.03, 1.93   event-loop:\Workerman\Events\Select
2 workers       3 processes
worker_name  exit_status      exit_count
webman       0                30
webman       65280            4
monitor      0                0
----------------------------------------------PROCESS STATUS---------------------------------------------------
pid memory  listening             worker_name  connections send_fail timers  total_request qps    status
2090    4.26M   none                  monitor      0           0         3       0            
4465    5.78M   http://127.0.0.1:8002 webman       8           0         2       67           
4466    5.79M   http://127.0.0.1:8002 webman       8           0         2       66           

然后紧接着php的cpu使用率立马下降到了1%的正常水平,因为是家庭内网用的.所以不存在大流量多连接.
然后也没有任何错误提示出现.也无法进行下一步分析了.然后这一天哪怕是使用压测工具,最高的时候也就能用到56%的cpu.
我查看stdout.log 有如下错误,但是不知道什么时候出现的

Fatal error: Uncaught ErrorException: file_put_contents(/www/wwwroot/llwd.hh/runtime/logs/workerman.log): failed to open stream: Too many open files in /www/wwwroot/llwd.hh/vendor/workerman/workerman/Worker.php:2232
Stack trace:
#0 [internal function]: support\App::{closure}()
#1 /www/wwwroot/llwd.hh/vendor/workerman/workerman/Worker.php(2232): file_put_contents()
#2 /www/wwwroot/llwd.hh/vendor/workerman/workerman/Worker.php(2200): Workerman\Worker::log()
#3 [internal function]: Workerman\Worker::checkErrors()
#4 {main}
  thrown in /www/wwwroot/llwd.hh/vendor/workerman/workerman/Worker.php on line 2232

我应该如何做呢

511 1 0
1个回答

walkor

报错 Too many open files 需要优化下linux内核。
https://www.workerman.net/doc/workerman/appendices/kernel-optimization.html

  • fan15500 2024-01-17

    现在已经提高打开文件数为102400了,明天看看怎么样.比较奇怪的是 内网的网站,连接的设备只有几个.不知道为什么还能够出现Too many open files,同一个服务器上的thinkphp用nginx的又正常.

  • fan15500 2024-01-18

    大佬,情况还是和昨天一样,lianggphp进程都是100%的.只要不运行php start.php status就不会降下来

  • fan15500 2024-01-18

    总算是获取到了 . 如下内容
    epoll_wait(4, [{EPOLLIN, {u32=5, u64=5}}], 256, 45698) = 1 请帮忙看下是怎么回事

  • walkor 2024-01-18

    估计还是 Too many open files ,优化内核后要重启webman。
    还有检查业务是否有打开文件或者网络请求的,是不是句柄被保存起来了没释放。
    如果还搞不定,发一个能重现你这个问题的demo的业务代码。你要保证能重现再发出来。

🔝