go语言中文图书 go语言图书推荐( 三 )


一旦达到5个连接的硬限制,数据库驱动程序(pq)立即返回一个太多客户端连接的错误消息 , 而无法完成INSERT 。为了防止这个错误,我们需要将sql.DB中打开连接的最大总数(正在使用的+空闲的)设置为低于5 。像这样:
现在,sql.DB在任何时候最多只能创建3个连接,基准测试运行时应该不会出现任何错误 。但是这样做需要注意:当达到开放连接数限制,并且所有连接都在使用时,应用程序需要执行的任何新的数据库任务都将被迫等待,直到连接标记为空闲 。例如,在web应用程序的上下文中,用户的HTTP请求看起来会“挂起”,甚至在等待数据库任务运行时可能会超时 。
为了减轻这种情况,你应该始终在一个上下文中传递 。在调用数据库时,启用上下文的方法(如ExecContext()),使用固定的、快速的超时上下文对象 。
总结
1、根据经验 , 应该显式设置MaxOpenConns值 。这应该小于数据库和基础设施对连接数量的硬性限制 。
2、一般来说,更高的MaxOpenConns和MaxIdleConns值将带来更好的性能 。但你应该注意到效果是递减的,连接池空闲连接太多(连接没有被重用,最终会变坏)实际上会导致性能下降 。
3、为了降低上面第2点带来的风险,您可能需要设置一个相对较短的ConnMaxLifetime 。但你也不希望它太短,导致连接被杀死或不必要地频繁重建 。
4、MaxIdleConns应该总是小于或等于MaxOpenConns 。
对于中小型web应用程序,我通常使用以下设置作为起点,然后根据实际吞吐量水平的负载测试结果进行优化 。
go是什么书的缩写《Go语言程序设计》是2013年人民邮电出版社出版的图书,作者是Mark 。作者展示了如何编写充分利用Go语言突破性的特性和惯用法的代码,以及Go语言在其他语言之上所做的改进,并着重强调了Go语言的关键创新 。
GitHub 上有哪些值得推荐的开源电子书语言无关类
操作系统
鸟哥的Linux私房菜 (简体)
Linux 系统高级编程
The Linux Command Line (中英文版)
Linux 设备驱动 (第三版)
深入分析Linux内核源码
UNIX TOOLBOX
Docker中文指南
Docker —— 从入门到实践
FreeRADIUS新手入门
Mac 开发配置手册
FreeBSD 使用手册
Linux 命令行(中文版)
智能系统
一步步搭建物联网系统
web服务器
Nginx开发从入门到精通 (淘宝团队出品)
版本控制
Git教程 (本文由@廖雪峰 创作go语言中文图书,如果觉得本教程对您有帮助go语言中文图书 , 可以去iTunes 购买)
git – 简易指南
猴子都能懂的GIT入门
Git 参考手册
Pro Git
Git Magic
GotGitHub
Git Community Book 中文版
Mercurial 使用教程
HgInit (中文版)
沉浸式学 Git
【go语言中文图书 go语言图书推荐】Git-Cheat-Sheet (感谢 @flyhigher139 翻译go语言中文图书了中文版)
GitHub秘籍
NoSQL
NoSQL数据库笔谈 (PDF)
Redis 设计与实现
Redis 命令参考
带有详细注释的 Redis 3.0 代码
带有详细注释的 Redis 2.6 代码
The Little MongoDB Book
The Little Redis Book
Neo4j 简体中文手册 v1.8
Neo4j .rb 中文资源
MySQL
MySQL索引背后的数据结构及算法原理
项目相关
持续集成(第二版) (译言网)
让开发自动化系列专栏
追求代码质量
selenium 中文文档
Joel谈软件
约耳谈软体(Joel on Software)
Web
关于浏览器和网络的 20 项须知
前端知识体系
浏览器开发工具的秘密
Chrome 开发者工具中文手册

推荐阅读