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, 否则的话, 如果有一个调用异常, 就会导致后面的调用收到影响。

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