產品需要11月到當前時間的搬運工資料統計。
有介面可以查到每一天的資料,寫python指令碼迴圈請求介面。因為一次介面響應要近20秒,總共要請求1200次介面,實在太慢。所以寫了多執行緒請求介面,但是不熟悉python多執行緒,一次性發了1200個請求到伺服器。
這時運維發現mongodb的cpu暴增,日誌裡不斷有請求該介面的日誌,耗時一直累增。
1、檢視本地指令碼是否結束,ps aux |grep python
發現已經沒有python指令碼執行的了。
2、kill mongo sql?運維殺掉後,又有新的請求進來執行sql。
3、重啟服務?因為該介面是非同步處理請求,重啟服務不能殺掉這些已經在請求佇列的請求。
4、leader最後臨時修改了這個介面,直接返回空,等處理完這批請求後,再恢復介面,解決。
5、運維發現表的索引建的有問題,日期是範圍查詢導致後面的mid in操作索引失效,索引命中了一半。修改索引為
,執行時間由20s降到2s左右。
1、內部服務沒有做限流
2、有資料請求的操作為什麼設為非同步請求
PHP curl multi exec 併發請求
有時候在乙個php方法中要多次呼叫外部的介面,為了優化 提高效率,我們不妨使用curl multi exec併發處理多個請求,這樣可以明顯地提高獲取響應資料的速度,減少程式執行的時間,下面是乙個實際執行的例子。使用curl並行傳送多個請求獲取資料 param array urls 多個請求陣列 re...
PHP curl併發請求
使用php的curl函式呼叫多個外部http介面時,預設情況下是需要乙個乙個執行的,第乙個請求結束後才會發起第二個請求,這樣會顯得效率低。如果各個請求之間沒有強依賴關係,可以使用curl的multi系列函式來同時發起多個請求,這樣可以節省很多時間,提高效率。有很多資料說curl multi是使用多執...
php併發請求
一般在php進行請求url的時候,直接用 fopen 函式就可以搞定了,比如像這樣 file fopen r or exit ret while feof file fclose file echo ret 當然,也可以直接用 socket 方式,自己定義好http頭引數手動實現 但這些請求方式都是...