间歇性出现报错,重启就能解决,已调整linux 内核
ErrorException: scandir(/www/wwwroot/110.42.57.86_3111/app): Failed to open directory: Too many open files in /www/wwwroot/110.42.57.86_3111/vendor/workerman/webman-framework/src/Util.php:38
Stack trace:
#0 [internal function]: {closure}()
#1 /www/wwwroot/110.42.57.86_3111/vendor/workerman/webman-framework/src/Util.php(38): scandir()
#2 /www/wwwroot/110.42.57.86_3111/vendor/workerman/webman-framework/src/App.php(871): Webman\Util::scanDir()
#3 /www/wwwroot/110.42.57.86_3111/vendor/workerman/webman-framework/src/App.php(840): Webman\App::getController()
#4 /www/wwwroot/110.42.57.86_3111/vendor/workerman/webman-framework/src/App.php(820): Webman\App::getControllerAction()
#5 /www/wwwroot/110.42.57.86_3111/vendor/workerman/webman-framework/src/App.php(777): Webman\App::guessControllerAction()
#6 /www/wwwroot/110.42.57.86_3111/vendor/workerman/webman-framework/src/App.php(163): Webman\App::parseControllerAction()
#7 /www/wwwroot/110.42.57.86_3111/vendor/workerman/workerman/src/Connection/TcpConnection.php(741): Webman\App->onMessage()
#8 [internal function]: Workerman\Connection\TcpConnection->baseRead()
#9 /www/wwwroot/110.42.57.86_3111/vendor/workerman/workerman/src/Events/Event.php(250): EventBase->loop()
#10 /www/wwwroot/110.42.57.86_3111/vendor/workerman/workerman/src/Worker.php(1740): Workerman\Events\Event->run()
#11 /www/wwwroot/110.42.57.86_3111/vendor/workerman/workerman/src/Worker.php(1545): Workerman\Worker::forkOneWorkerForLinux()
#12 /www/wwwroot/110.42.57.86_3111/vendor/workerman/workerman/src/Worker.php(1525): Workerman\Worker::forkWorkersForLinux()
#13 /www/wwwroot/110.42.57.86_3111/vendor/workerman/workerman/src/Worker.php(593): Workerman\Worker::forkWorkers()
#14 /www/wwwroot/110.42.57.86_3111/vendor/workerman/webman-framework/src/support/App.php(147): Workerman\Worker::runAll()
#15 /www/wwwroot/110.42.57.86_3111/start.php(5): support\App::run()
#16 {main}
[2025-12-22 06:19:09] default.ERROR: 140.240.36.153 GET 110.42.57.86:3111/admin/auth/vercode
ErrorException: scandir(/www/wwwroot/110.42.57.86_3111/app): Failed to open directory: Too many open files in /www/wwwroot/110.42.57.86_3111/vendor/workerman/webman-framework/src/Util.php:38
Stack trace:
#0 [internal function]: {closure}()
#1 /www/wwwroot/110.42.57.86_3111/vendor/workerman/webman-framework/src/Util.php(38): scandir()
#2 /www/wwwroot/110.42.57.86_3111/vendor/workerman/webman-framework/src/App.php(871): Webman\Util::scanDir()
#3 /www/wwwroot/110.42.57.86_3111/vendor/workerman/webman-framework/src/App.php(840): Webman\App::getController()
#4 /www/wwwroot/110.42.57.86_3111/vendor/workerman/webman-framework/src/App.php(820): Webman\App::getControllerAction()
#5 /www/wwwroot/110.42.57.86_3111/vendor/workerman/webman-framework/src/App.php(777): Webman\App::guessControllerAction()
#6 /www/wwwroot/110.42.57.86_3111/vendor/workerman/webman-framework/src/App.php(163): Webman\App::parseControllerAction()
#7 /www/wwwroot/110.42.57.86_3111/vendor/workerman/workerman/src/Connection/TcpConnection.php(670): Webman\App->onMessage()
#8 [internal function]: Workerman\Connection\TcpConnection->baseRead()
#9 /www/wwwroot/110.42.57.86_3111/vendor/workerman/workerman/src/Events/Event.php(250): EventBase->loop()
#10 /www/wwwroot/110.42.57.86_3111/vendor/workerman/workerman/src/Worker.php(1740): Workerman\Events\Event->run()
#11 /www/wwwroot/110.42.57.86_3111/vendor/workerman/workerman/src/Worker.php(1545): Workerman\Worker::forkOneWorkerForLinux()
#12 /www/wwwroot/110.42.57.86_3111/vendor/workerman/workerman/src/Worker.php(1525): Workerman\Worker::forkWorkersForLinux()
#13 /www/wwwroot/110.42.57.86_3111/vendor/workerman/workerman/src/Worker.php(593): Workerman\Worker::forkWorkers()
#14 /www/wwwroot/110.42.57.86_3111/vendor/workerman/webman-framework/src/support/App.php(147): Workerman\Worker::runAll()
#15 /www/wwwroot/110.42.57.86_3111/start.php(5): support\App::run()
#16 {main}
Debian 12
"workerman/webman-framework": "^2.1",
linux内核没优化好,或者优化没生效。
执行 ulimit -n 看下
root@RainYun-oR1Fi1A7:~# ulimit -n
1000001
php start.php status
随便找一个webman进程的pid,然后执行
cat cat /proc/pid/limits
内核优化看下对进程生效没
cat /proc/1267967/limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 63785 63785 processes
Max open files 1024 524288 files
Max locked memory 8388608 8388608 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 63785 63785 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
https://www.workerman.net/doc/workerman/appendices/kernel-optimization.html
参考这个文档来吧
Max open files 1024 524288 files
内核优化对于进程没生效,最大打开文件数1024
你重启webman是 php start.php reload 重启的?
restart -d重启的
感谢哈,稍后试一下