主機名稱很重要, hostname , 我們公司有台老鼎新tiptop erp主機 安裝的是 redhat enterprise 4 .
tiptop的架構我簡單的敘述, client端連線到這台 server , 這台server會辨識client 端ip , 再將資料以xml方式, 反向傳回去client端的接收程式, 該接收程式(genero desktop client , gdc )會把xml資料轉成UI介面 , 方便讓使用者使用.
可是呢, 每次使用者執行程式, 都必須進行license檢驗, 以及進行 host name lookup 查詢資料庫的ip在哪, 我說的是每次執行程式哦, 都要進行資料庫主機在哪的查訪動作, 實在是有夠怪的設計 , 這10多年來我困擾很久, 終於有點了解了
為何要了解這個, 因為使用者執行程式, 常常導致跑一隻程式, 光是等待程式冒出來就要等2分鐘… 我們早就知道是lookup的問題, 但找不出真正的解法, 以下是lookup的解決切入點
nsswitch 可以指定優先查 /etc/hosts 或是 dns 或是 winbind
但這款老舊版本有個怪怪的bug, 設定了相關的lookup , 總是沒用, 就是會查詢失敗導致時間過久使用者憤怒, 我無意間看到有人寫了可以這樣檢查
getent hosts 資料庫主機名稱 或是 strace getent hosts 資料庫主機名稱
我發現ap主機查詢很快, 但是查詢db主機超慢, 於是加上strace檢查問題 , 我加上去之後看不懂, 於是就多看了幾次,
這指令居然神奇的自己解決查詢過久的問題, 多執行幾次就變快了…. @@ 傻眼