這幾天準備把做了半年日本東京一家室內設計公司的網站殺青收尾準備收錢

在我完成最後一項核心程式後,完成時明明正常運作
隔了二個小時後突然網站沒有原因掛掉

我從晚上12點開始debug一直抓到凌晨7點,仍然無法找到原因..

出問題的是一行簡單的資料庫定義物件的程式
這種錯誤最恐怖,因為單看那行並沒有任何問題,但是就是無法運作
這很明顯就是結構有問題

電腦都差不多,回報的錯誤,通常只報告他所能偵測到的第一個錯誤
實際上的錯誤,有時必需靠經驗
其中最慘的BUG就是結構錯誤

結構問題可能來自一些埋的很深的函數出包,或安全機制擋住自己,我還遇過伺服器的服務元件壞掉的
這真的除錯除到會發瘋,有時外觀上就是一行程式就是無法運作,伺服器一直回報該行的錯誤訊息
程式出錯沒什麼,但是結構出錯會令人出了一身冷汗
因為結構出錯有時候是系統元件壞掉,這除了重新安裝系統別無它法
重裝系統談何容易,因為客戶的資料庫是浮動的,一分一秒都有新的資料擁入跟本難以操控
除非做最新進的雙伺服器,其中一台故障另一台會接手的架構
這個我只聽過,完全不知怎麼讓一個request由二台伺服器同時處理

如果不是元件壞掉,最難抓的問題就是寫進記憶體的東西
因為我跟本看不到記憶體的內部,你看的到的程式全部顯示沒有問題
一行一行,一個字一個字的檢,還是找不出問題

我遇到的問題是一份插入的外部安全機制程式
這支程式也是我寫的,但它是十幾年前寫的,我跟本忘記那支程式如何運作
他的原理訪客必需從首頁進入,如果從中間進入含有與資料庫作業的頁面(如表單)
就會被導向首頁,這有助於防止網站的攻擊迴圈
因為資料庫被攻擊通常就是寫一個循環然後不斷透過表單寫入資料庫

因此,首頁必需先寫入記憶體給它一個參數做為初始值

但是我卻忘了在記憶體寫入這個參數,變成一直被我自己寫的 user_seculity.c 阻擋
但開了後台,後台卻會寫入,但我並不知道
因為必需開了後台後,網頁才能進入,外觀上變成有時可以有時不行的情況

一個人執行複雜的商業網站工作其實頗為辛酸,其實這如果有同事在旁
他很快就會知道是怎麼回事,因為旁觀者清,自己的程式由於需要考量太多東西
有時候一些盲點並不會看不到

我將這個讓我困擾48小時的事件寫在這裡

codebase/user_seculity must mark be write session() into first line of homepage else rs.object will be fail. 

arrow
arrow
    全站熱搜

    半熟園丁 發表在 痞客邦 留言(0) 人氣()