某業務付費統計指令碼問題排查

2021-09-27 07:32:58 字數 912 閱讀 3057

現象:產品反饋未收到每週五的vip郵箱付費統計郵件

1.這個統計指令碼我從未經手過,因此不知道邏輯是什麼,也不知道**在**.通過檢視郵件原始檔中的**ip,找到了發出郵件所在的伺服器,信頭中有類似這樣的**ip

x-originating-ip: [xx.xx.xx.86]

2.登陸伺服器後,檢視crontab的定時規則,找到定時規則是0 0 * * * /bin/sh /***/feeuser.sh.每天都會執行一次feeuser.sh的指令碼.通過cron.log可以看到該指令碼已經執行過了

3.指令碼中的邏輯是,每天判斷今天的日誌檔案是否存在,如果不存在就執行乙個php指令碼,把該指令碼的輸出重定向到這個日誌檔案中.

判斷如果是周五,就呼叫php指令碼傳送一封通知郵件,郵件的內容是對每天日誌檔案的wc -l行數統計.

4.今天是周五但是郵件沒有發出,說明根本就沒有執行到傳送郵件的邏輯.在前面的統計今天使用者付費情況時就已經斷掉了.

5.檢視php.ini的配置檔案,看到沒有開啟log_errors,也沒有指定error_log的位置,所以沒法通過php的日誌看到發生了什麼錯誤

6.此指令碼是14年左右開始執行的,時間也比較久了.在研究php**的邏輯後發現,在查詢資料庫的時候,先查出第乙個資料庫的某錶資訊後,迴圈查詢另乙個資料庫的另一張表,在這個迴圈的過程中,連線資料庫的邏輯放在了迴圈塊裡面,猜測可能因為連線過多,被資料庫拒絕後讀取失敗吧.

7.裡面還有處邏輯挺有想法,讀取第一張表的時候,每次只查詢10000條,然後再從新連線資料庫new pdo物件,估計也是為了防止執行時間太長連線斷掉.

每天php指令碼把使用者查詢出來後,重定向到比如2019-9-20-user.log,周五在統計每天的日誌行數傳送給產品,這樣就可以如果產品需要具體使用者時也可以留著這個結果

8.先把連線資料庫邏輯挪出來,補齊了強兩天斷掉的資料,把錯誤日誌開啟暫時先觀察觀察

Oracle邏輯遷移某業務使用者及資料

確定基本資訊 源資料庫所在系統型別 源資料庫版本 資料庫高可用 災備 遷移匯出業務使用者 目的資料庫所在系統型別 目的資料庫版本 資料庫高可用 災備 遷移匯入業務使用者 按上面模板填好必要資訊,示例如下 源資料庫所在系統型別 rhel 6.4 源資料庫版本 9.2.0.8.0 資料庫高可用 災備 單...

業務 某化妝品公司商業模式

化妝品行業屬於必需消費行業裡個人用品,競爭比較激烈,所以市場集中度不高,化妝品公司的商業模式我們可能都很熟悉,但就是沒有系統性的認識,今天筆者從乙個旁觀者的角度結合財務報告去認識 理解這個行業。多品牌公司主打產品b,同時孵化出y1 y2 y3 h m t等系列,其中y1定位 一 二線城市高階產品路線...

python指令碼呼叫iftop 統計業務應用流量

因公司伺服器上部署應用較多,在有大併發訪問 業務邏輯有問題的情況下反覆互相呼叫或者有異常流量訪問的時候,需要對業務應用進行故障定位,所以利用python呼叫iftop命令來獲取應用程序流量,結合zabbix,可幫助定位分析問題。以下是指令碼內容,大概思路是 利用iftop命令 iftop t p n...