Web後臺開發的問題分析方法

Web後臺開發中遇到的問題五花八門,分析問題涉及到的方方面面挺多的,不容易下手。本文分享工作中遇到的一些解決問題的方法僅供參考。如果您有好方法和案例,歡迎分享。

1一些系統知識

  • ulimit -a裏的各種限制,特別是open files和core file size
  • 共享內存大小受/proc/sys/kernel/shmmax控制
  • 32位OS下默認寫文件超過2G會coredump,可通過定義宏來解決
  • 32位OS下,受低端內存大小(800M,所有進程共享)的影響,單機socket大概超過9~10萬會產生OOM(Out of Memory),系統會殺掉些進程,而且還沒有coredump。可查閱slabinfo和slabtop。
  • 網卡收發數據包會產生軟中斷,一般會綁定到CPU0處理。這就決定了網卡收發包的性能有限。在KM上看到有提到過用多網卡提高網絡吞吐量的做法。
  • 物理內存不夠用時會使用到交換分區,很影響系統性能
  • socket有內核緩衝區,緩衝區的大小對網絡收發包
  • 讀寫文件時系統可以合併磁盤IO操作,這個可以通過iostat -x看到。讀寫文件越分散,合併率越低。

linux內核、TCP/IP、DB這類知識瞭解越多,解決問題越順手!

2常用工具

  • strace:查看進程的系統調用
  • ltrace:查看進程的庫函數調用
  • lsof:查看系統已打開的文件句柄
  • netstat:查看網絡信息
  • tcpdump:抓包工具
  • top:查看CPU和Load
  • uptime:查看系統運行時間和Load
  • iostat:磁盤IO統計
  • ulimit:查看進程的系統資源限制
  • free:查看內存和交換分區
  • mpstat:查看中斷分佈情況
  • gprof:性能分析工具
  • gdb:調試工具


3日誌和信息

  • /proc:查看或修改系統信息和配置,上面的命令有不少就是讀寫/proc下的文件。不少網絡參數都可以通過這裏修改(本地端口範圍、讀寫緩衝區大小、TIME_WAIT)
  • /proc/PID/:查看進程的相關信息
  • /var/log/messages:查看系統及內核日誌
  • apache訪問日誌和錯誤日誌
  • mysql的binlog


4查找規律
對業務產生的日誌和統計數據,有時需要分析其中的規律,纔好找到問題。可以從用戶IP、來源IP、目標IP、時間、業務ID、號段特徵這些方面來尋找。另外需要注意,沒有規律也是一種規律。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章