nginx反向代理webman偶爾會出現
出現的很有規(guī)律。猜測跟monitor關閉內存超出的子進程有關。怎么解決。不應該先取消處理,再關閉進程嗎?
if (preg_match('/VmRSS\s*?:\s*?(\d+?)\s*?kB/', $status, $match)) {
$mem = $match[1];
}
$mem = (int) ($mem / 1024);
if ($mem >= $memoryLimit) {
posix_kill($pid, SIGINT);
}
recv() failed (104: Connection reset by peer) while reading response header from upstream,
webman v1.6.14 / workerman v5.0.0
linux php 安裝 php8.3 event擴展
Connection reset by peer 一般是進程退出導致,從提供的信息中看不出來是哪里導致的退出,可以先把monitor關閉試下。
進程收到重啟信號會先處理業(yè)務,然后才關閉。但是有一些極端情況,例如業(yè)務執(zhí)行慢,被強制推退出。進程當前沒有處理請求,但是退出的時候剛好有請求發(fā)給當前進程。這些都會導致 Connection reset by peer
極端情況不是能100%避免的,否則不叫極端情況了。例如業(yè)務就是很耗時,不可能無限等待,這時候kill掉進程就
Connection reset by peer
了。
再比如服務端已經處理完當前收到的請求,但是服務端關閉進程那個時刻剛好有新的請求網絡傳輸的路上,進程退出也會 Connection reset by peer
。
沒有取消請求分配的說法,客戶端連接連到A進程,那么這個連接的所有請求都會分配給A進程。連接關閉或者A進程退出,那么連接上所有傳輸中的請求都會丟失,然后 Connection reset by peer