webman使用的是最新版,一個(gè)星期之前安裝部署的,系統(tǒng)是centos 7.5 寶塔環(huán)境 php start.php start -d 方式運(yùn)行
最近這3天有一個(gè)奇怪,就是每天早晨都訪問(wèn)不了,然后連接服務(wù)器發(fā)現(xiàn)兩個(gè)php進(jìn)程都是100%,這個(gè)時(shí)候只要運(yùn)行php start.php status就會(huì)得到一個(gè)結(jié)果,如下
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%的正常水平,因?yàn)槭羌彝?nèi)網(wǎng)用的.所以不存在大流量多連接.
然后也沒(méi)有任何錯(cuò)誤提示出現(xiàn).也無(wú)法進(jìn)行下一步分析了.然后這一天哪怕是使用壓測(cè)工具,最高的時(shí)候也就能用到56%的cpu.
我查看stdout.log 有如下錯(cuò)誤,但是不知道什么時(shí)候出現(xiàn)的
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
我應(yīng)該如何做呢
報(bào)錯(cuò) Too many open files 需要優(yōu)化下linux內(nèi)核。
http://www.wtbis.cn/doc/workerman/appendices/kernel-optimization.html
現(xiàn)在已經(jīng)提高打開文件數(shù)為102400了,明天看看怎么樣.比較奇怪的是 內(nèi)網(wǎng)的網(wǎng)站,連接的設(shè)備只有幾個(gè).不知道為什么還能夠出現(xiàn)Too many open files,同一個(gè)服務(wù)器上的thinkphp用nginx的又正常.
大佬,情況還是和昨天一樣,lianggphp進(jìn)程都是100%的.只要不運(yùn)行php start.php status就不會(huì)降下來(lái)
總算是獲取到了 . 如下內(nèi)容
epoll_wait(4, [{EPOLLIN, {u32=5, u64=5}}], 256, 45698) = 1 請(qǐng)幫忙看下是怎么回事
估計(jì)還是 Too many open files ,優(yōu)化內(nèi)核后要重啟webman。
還有檢查業(yè)務(wù)是否有打開文件或者網(wǎng)絡(luò)請(qǐng)求的,是不是句柄被保存起來(lái)了沒(méi)釋放。
如果還搞不定,發(fā)一個(gè)能重現(xiàn)你這個(gè)問(wèn)題的demo的業(yè)務(wù)代碼。你要保證能重現(xiàn)再發(fā)出來(lái)。