因業(yè)務處理時間比較大,故此采用了tcp 服務端與客戶端的模式,客戶端定時向服務端發(fā)送處理請求,服務端啟動多個進程去處理業(yè)務邏輯。
假設:
12:00 客戶端A發(fā)起請求告知服務端處理業(yè)務A 。
12:10 客戶端A再次發(fā)起請求告知服務端處理業(yè)務A 。
但業(yè)務邏輯比較多,可能10分鐘還沒結(jié)束,12:00那次還沒完,請問當收到12:10的請求,服務端是怎么處理的?(多進程的情況下。)
是等待12:00結(jié)束處理還是例外的一個空閑進程直接處理呢。
順便說一句業(yè)務A里面需要用到curl 與sleep
請大神告知,目前自己的測試結(jié)果還是會造成阻塞。
1、如果系統(tǒng)調(diào)度認為當前進程能忙的過來,即前后兩個請求落入服務端同一個進程,假設當消耗15分鐘才處理完第一個請求,那么會在15分鐘后才執(zhí)行下一個請求,因為單進程內(nèi)請求是串行執(zhí)行的;反過來則后續(xù)的請求則會落入第二個進程,這個時候兩個請求可以看做是并行執(zhí)行的;
2、關(guān)于 curl 部分的阻塞,已經(jīng)原貼回復過了: https://wenda.workerman.net/question/4791
3、業(yè)務代碼里不要使用 sleep , sleep 是系統(tǒng)調(diào)用會阻塞當前進程并掛起;