CentOS6.2 64位 系統(tǒng) CPU為64位單核CPU 開啟進(jìn)程數(shù)為1和2都試過了,reload的時(shí)候都會斷開Socket鏈
以下摘自workerman手冊
5、平滑重啟
一般的重啟的過程是把所有進(jìn)程全部停止后,再開始創(chuàng)建全新的服務(wù)進(jìn)程。在這個(gè)過程中會有一個(gè)短暫的時(shí)間內(nèi)是沒有進(jìn)程對外提供服務(wù)的,這就會導(dǎo)致服務(wù)暫時(shí)不可用,這在高并發(fā)時(shí)勢必會導(dǎo)致請求失敗。而平滑重啟則不是一次性的停止所有進(jìn)程,而是一個(gè)進(jìn)程一個(gè)進(jìn)程的停止,每停止一個(gè)進(jìn)程后馬上重新創(chuàng)建一個(gè)新的進(jìn)程頂替,直到所有舊的進(jìn)程都被替換為止。
平滑重啟WorkerMan可以使用 php your_file.php reload命令,能夠做到在不影響服務(wù)質(zhì)量的情況下更新應(yīng)用程序
如果是長連接,子進(jìn)程重啟后這個(gè)進(jìn)程維護(hù)的連接就都斷開了,是正常的。
為此官方基于workerman開發(fā)了GatewayWorker框架,Gateway進(jìn)程維護(hù)客戶端連接,連接上發(fā)來數(shù)據(jù)轉(zhuǎn)由BusinessWorker處理,也即是業(yè)務(wù)邏輯都在BusinessWorker上,reload時(shí)只reload BusinessWorker即可做到業(yè)務(wù)邏輯更新(只能更新動態(tài)加載的php文件),而Gateway進(jìn)程默認(rèn)設(shè)置了http://doc3.workerman.net/worker-development/reloadable.html屬性為false,不執(zhí)行reload,這樣執(zhí)行reload的時(shí)候就不會重啟,也就不會導(dǎo)致連接斷開了
GatewayWorker框架手冊:http://gatewayworker-doc.workerman.net/