处理连接池和tcp超时的基于Mgo的应用程序代码结构

时间:2013-11-08 12:01:55

标签: tcp go mgo

我很好奇我应该如何使用Go语言以Mgo语言构建JSON REST API服务器。我有几十个相互关联的集合。我在当前的方法中创建了the gist文件结构的示例部分。

它运行良好,但我不时会遇到由此错误导致的停机:“读取tcp 10.168.30.100:37288:i / o timeout”。我想我不适当地处理mgo连接池。是否有任何示例显示我应该如何基于mgo创建大型应用程序?

1 个答案:

答案 0 :(得分:5)

此错误消息表示数据库的往返时间比您定义的超时时间长。假设您没有任何导致应用程序以缓慢的方式运行的实际问题,只是增加超时应该可以解决问题。

一般来说,这个错误并不意味着你有任何类型的规模问题,除了事实上你可能在某些集合中有越来越多的数据,而某些查询可能会变得太慢而需要重新思考(索引)等等。)

也无需重启应用程序。您可以刷新有问题的会话,也可以关闭并重新创建会话,以防您使用主会话的副本。 mgo的状态和连接池仍然很好。它只是警告你,这个特定的会话在线路上发现了一个问题,所以你必须在会话再次有效之前确认它。

与往常一样,还要确保使用最新版本以避免已修复的问题(如果有)。