我在Laravel爲我的處理腳本設置了隊列。 我正在使用beanstalkd和supervisord。 有6種不同類型的加工管。Laravel Artisan隊列 - 高CPU使用率
問題在於,對於每個管子,工匠每秒都在不斷產生工人。 工人代碼似乎睡了1秒,然後工作線程使用7-15%cpu,乘以6管......我想每管有多個工人..我的CPU正在被吃掉。
我試着將1秒的睡眠時間改爲10秒。 這會有所幫助,但是當員工喚醒時,每10秒仍會有一個巨大的CPU峯值。 我現在甚至沒有處理任何東西,因爲隊列完全是空的,只是工作人員在尋找要做的事情。
我也測試過,看到laravel的cpu使用情況,當我刷新瀏覽器中的頁面,並且徘徊在10%左右..我現在處於低端rackspace實例,以便能夠解釋它,但仍然..看起來工人們每次起牀時都會捲起一個拉拉維的例子。
有沒有辦法解決這個問題?爲了能夠聽清楚工作是否準備就緒,我只需要將大量資金投入到更昂貴的服務器上?
編輯:
找到了解決辦法...這是不使用工匠隊列:監聽器或隊列:工作 我看着隊列代碼,並似乎沒有成爲解決這個問題的方式,每次工人檢查要做更多工作時,都需要加載。
相反,我用pheanstalk寫了自己的聽衆。 我仍然使用laravel將事物推入隊列,然後我的自定義偵聽器正在解析隊列數據,然後觸發一個artisan命令來運行。
現在,我的偵聽器的CPU使用率低於%0,我現在唯一一次啓動cpu的時候是實際發現要做的工作,然後觸發命令,我對此很滿意。
你介意將自己的代碼分享給自定義偵聽器嗎?我有同樣的問題。 – greatwitenorth
我也有興趣看到您的自定義聽衆! –
我想看看你的解決方案 –