當你自己開發維護一套網站之類的時候,總會遇到各種異常的問題,或者有著性能優化的迫切需求,抑或著遭到了一些簡單的攻擊。
那麼這個時候,一些比較好的,成型的工具會給你快速定位問題,帶來很好的幫助。
一。 tail -f 的用法
通常用作日志的定位小命令。在遇到問題的時候,用這個可以跟蹤問題發生的邏輯前後,方便做出邏輯分析和推測。
1. apache log: 在Ubuntu下面,通常在/var/log/apache2/下面,
當出現服務器無法連接等異常的時候,可以直接在該目錄下,tail -f *, 並再次請求,看看是否有錯誤發生。
2. mysql log: 在ubuntu下面,通常在/var/log/mysql/下面
當應用提示數據庫錯誤的時候,在這裡跟蹤mysql給出的錯誤是第一選擇。
另外,如果你想跟蹤一個操作引發的sql操作,那麼請修改my.cnf裡的配置,把普通log的配置打開。
這樣,當一個邏輯操作後,你會看到所有的sql操作表和對應的操作。
3. web應用自己的log。
通常你會在自己web應用定義的log目錄下面,用tail可以跟蹤到你應用中出現邏輯問題的地方。用不斷打日志,跟蹤變量的方式,
你可以像調試應用程序一樣,來調試你的web服務。
二。 top命令
該命令可以有效地看到機器目前資源的利用情況。特別是服務請求到達一定瓶頸的時候,可以清楚的看到最繁忙的進程是哪個。
三。 strace
對於一些拋出異常的程序,可能tail的粒度過於粗放,很多細節無法得知。那麼這個時候,可以采用這個工具。一般來說,可以得到
系統調用級別的日志。優點是,日志精確,缺點是,過於龐大。所以一般在找到一個大概的范圍後,再采用strace來實施精確打擊。
四。 netstat & tcpdump
這兩個命令是方便定位出現網絡請求的問題。也是適合大致已經定位到這個方向的時候。