這幾天遇到的一個問題
某隻API在半夜被呼叫時
回應時間特別長
導致被系統判定timeout失敗

但是白天上班時間時
不管怎麼打
都在兩秒以內就回應200 OK

這支API商業邏輯複雜
牽涉了數十個其他服務
又因為是老專案了
如果要加上Tracing做鏈路追蹤
真的是曠日廢時
且不符成本

只好還是搬出埋Log大法
在每個呼叫API或是DB Query間穿插Log
用Log去夾出是哪一段慢

當我隔天到公司
喜孜孜地準備來收網抓兇手時
才發現一條Log都沒有
因為沒有使用者去觸發
傻眼

這時候同事說可以弄個排程
把API參數準備好
在半夜的時候模擬使用者呼叫

C#的排程
一般都是用Hangfire
或是windows排程器實作
但為了查log去起一個站台
未免小題大作

此時就想到了好朋友Postman
用間隔的方式
每四個小時去打一次API

正當我要打開小算盤
算四小時到底幾毫秒的時候
突然瞄到Postman就有內建排程
還有圖形化介面
著實讓我大吃一驚

具體操作如下
先建立一個collection和request
接著按下run collection
postman-1.png

這邊選擇schedule runs
然後選擇排程的時間
按下確認後
就會開始排定
postman-2.png

完成後
還有精美的UI圖表
告訴你耗費的時間
也可以為request加入測試
確認API是正常的回應
postman-4.png

多虧了這個功能
才不用寫一大堆code
或是用windows排程器

最後也順利從log查出緩慢的API
原因是IIS站台休眠了
將idle時間調整為0就解決了

如果有這種暫時性的排程
用Postman是個不錯的選擇