這個問題是在專案試執行一周左右出現的,最初是以為伺服器承受不了壓力崩潰了。後來發現呼叫某個查詢介面之後pending,再之後呼叫任何乙個介面全部都pending阻塞了。
定位這個api介面後,我在**裡加入了列印介面每一步呼叫時間,雲上列印出日誌。驚訝的發現這個介面呼叫之後,有乙個開始時間,但是再也沒能列印出結束時間。同時我還看了下linux伺服器cpu使用率,當時沒截圖,印象裡大概cpu直接飆慢了。
既然定位了這個api查詢介面有問題,那就簡單多了。explain下sql語句,果然寫這個語句的同伴在裡面渾水摸魚,沒好好構造,複雜度太高了,介面直接扎進去出不來了。
1.當時專案正在試執行,最簡單的方案就是直接資料庫配置下my.cnf,設定sql語句最大查詢時間,超過了就給他報錯。
2.後期就給所有的前端**裡,路由切換時取消pending,不要因為乙個介面拖累所有的。
3.最重要的還是寫**是就優化好速度,或者增加些篩選條件。
當時所有介面都是測試過的,不過測試庫沒有沒有那麼多測試記錄去測試效能,而且確實設計資料庫是搞了太多聯表查詢,這也怪我們這個學生專案組太年輕了。**複雜度高,執行效率低也是外行人寫**的通病。所以寫**一定要注意複雜度,多多優化**的執行速度和效率。
shell命令呼叫http介面(curl方式)
1 curl h content length 0 x get echo result 簡單的get請求方式 post請求方式,傳參有請求頭和請求體 post請求方式,獲取返回值,請求體引數動態獲取 x 請求方式,常用的post get h 請求頭,請求頭包含多個引數可以寫多個 h d 請求體,多個...
介面呼叫超時解決方法
1.增加超時時間 假設a系統有個方法methoda,會呼叫b系統的methodb這個http介面,如果mehoda不追求超快的響應速度,那麼你在呼叫methodb這個http介面時,可以增長超時時間,例如10秒超時。因為經常在某些時刻,由於網路原因或者系統原因,呼叫method會超時的。2.嘗試多呼...
Web Service呼叫輕量級安全解決方案
在web service標準規範中,安全性主要通過soap header來保證web service的授權使用,通過ssl ca認證方式 來保證傳輸層資料的加密,防止網路偵聽 用ssl而不用ws security是因為效能,雖然ws security有著很多ssl所無法做到的特性 不基於傳輸層,保障...