Golang 線上常見問題記錄

Golang程序常見的問題這裏激勵一下, 這些都是比較常見的問題。

儘量避免用ReadString

默認是從reader 六裏面讀取一個字符串, 知道讀取到‘\n’爲止, 這裏, 最大能夠讀取的數據量是64K, 超過了64K就會出現錯誤。

hang住問題處理

channel的使用

常見的問題就是, 一個channel的一段負責向channel裏面添加數據, 另一端負責從管道里面消費數據, 但是有可能消費端一直沒有來得及消費掉數據, 導致隊列裏面的數據一直是舊的數據。
另一方面, 在讀channel的時候, 要先檢查channel是否已經被關閉了, 否則可能導致程序異常。

讀寫鎖問題

常見問題是,一個線程加了所, 但是沒有解鎖, 其他線程一直等待所。比較好的做法是成對的使用lock和unlock函數, 確保鎖定的過程集中在一個函數裏面, 並且無論如何, 鎖定以後解鎖都不會丟失。

命名管道

通常在golang下面, 我們都會使用os/exec下面的command的Stderr, 需要注意的是, 我們在運行的程序中, 不能把各種info或者warning都寫入到cerr或者stderr中, 不然導致程序輸出端, 獲得大量的信息。

使用http儘量是定超時時間

在調用很頻繁的程序中, 就像監控數據採集或者節點存活檢查, 需要在HTTP不同機器之間調用的時候, 設定timeout, 否則的話, 如果有一個調用異常, 就會導致後面的調用收到影響。

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