国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

多進程導致mysql死鎖問題

apud

使用workerman作為rabbitmq的守護進程,開了10個消費進程。
代碼中mysql用到事務處理,實際使用中發(fā)現(xiàn)會發(fā)生死鎖問題?導致業(yè)務代碼無法正常運行。應該是多個進程訪問事務導致的。
我目前想到的解決方案:在處理代碼之前用redis標記是否有進程在處理,如果有則不往下執(zhí)行業(yè)務(并將當前任務重新推入mq比如3分鐘后再執(zhí)行)? ?處理完后解鎖。
不知道正確的姿勢是怎么樣的?使用多進程是因為rabbitmq?消費進程在單進程情況下任務一多就會出現(xiàn)?Unacked現(xiàn)象(應該是進程阻塞住了?出現(xiàn)假死現(xiàn)象),不知道是不是任務太多消費進程來不及確認導致的,所以想測試下多進程能否解決這種情況,結果又出現(xiàn)了新的坑。
(隨便吐槽下該論壇頁面停留過長?不讓發(fā)帖的BUG)

6285 4 0
4個回答

stephen
apud

  • 暫無評論
yepo

頂,我目前也是遇到這個問題。大神你有解決方法了嗎

  • apud 2019-04-27

    把多進程改成單進程執(zhí)行了。多進程執(zhí)行同一個代碼,同時在執(zhí)行事務,很有可能會出現(xiàn)這個死鎖問題。應該有更好的解決方案,還沒有去深入研究。

  • yepo 2019-10-22

    嗯,謝謝;我的解決辦法類似:做一個隊列服務以單進程鏈接MySQL,然后將所有原定在程序里的DML(除Select外)操作全部提交給隊列處理。當然這樣也有缺點,就是如果需要及時返回操作結果的,得要二次請求服務器詢問