WORKER EXIT UNEXPECTED E_ERROR Allowed memory size of 134217728 bytes exhausted (tried to allocate 65536 bytes) in workerman/workerman/Connection/TcpConnection.php on line 372
一般是什么情況
我這里的文件和你的不一致
貼下你的 workerman/workerman/Connection/TcpConnection.php 372 那幾行的代碼看看。
出現(xiàn)這個問題原因一般有三種
1、可能是業(yè)務(wù)代碼有內(nèi)存泄漏,比如使用全局?jǐn)?shù)組存儲數(shù)據(jù),數(shù)組一直增加元素但是從不刪元素除等等
2、業(yè)務(wù)傳輸數(shù)據(jù)量很大,但是客戶端接收很慢,導(dǎo)致數(shù)據(jù)積壓在內(nèi)存。例如向1000人廣播一個1M大小的數(shù)據(jù)包,那么最差的情況,服務(wù)器內(nèi)存瞬間增加1G。這種情況可能要適當(dāng)增加php內(nèi)存限制(php.ini中的memory_limit),并且優(yōu)化業(yè)務(wù),避免廣播巨大的數(shù)據(jù)包。
3、phpsocket.io本身可能有內(nèi)存泄漏。phpsocket.io本身機(jī)制比較復(fù)雜,可能某些用法會有內(nèi)存泄漏,建議使用workerman或者GatewayWorker,workerman和GatewayWorker非常穩(wěn)定,不會有內(nèi)存泄漏。