绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
golang初探之个人web项目查询性能提升16倍
2019-12-06 11:44:59

来源: 智城之光 



作为4年JAVA工程师的我,业余时间使用Go语言来开发一个名为leavemsg项目,中文名是时光留言网。在一台4核8G内存的服务器上做压测的时候发现查询接口不到500TPS。因为项目架构是httpserver+mgo+mongodb4.0,不可能这么低。经过一晚上的排除和优化。终达到8000TPS+。

修改连接数据库的IP地址为本地127.0.0.1。

使用了外网IP作为数据库连接的IP,错误。因为本项目的服务和mongodb是部署在一起的。因此修改为127.0.0.1,即本地访问。仅此一步:

提升:500TPS > 6000TPS

第二步

替换更好的mongodb驱动。

github.com/globalsign/mgo替换gopkg.in/mgo.v2。原因是globalsign/mgo驱动是在gopkg.in/mgo.v2的基础上进行优化和修复了一些bug的版本。其中bson性能得到优化。

提升:6000TPS>7500TPS

ab压测命令, 10W请求,1000个客户端 :

ab -n 100000 -c 1000 -p text.json http://127.0.0.1/msg/find?uid=01DQT4BVD1GTWF9T2JCP5VH698

附上替换驱动的前后对比的代码调用图。

请注意替换驱动之前,bson序列化方法占了15.59%耗时。

从21.79%到15.59%,bson序列化大概减少了28%的耗时。

这里给出依赖地址。可以直接引用到工程里面。只需要更换依赖并不需要修改代码。因为API都是一样的。

import (

"github.com/globalsign/mgo"

"github.com/globalsign/mgo/bson"

)

第三步

修改连接数

连接数从100到1000。

提升:7500TPS > 8200TPS

ab压测命令,30W请求,1000个客户端:

ab -n 300000 -c 1000 -p text.json http://127.0.0.1/msg/find?uid=01DQT4BVD1GTWF9T2JCP5VH698

分享好友

分享这个小栈给你的朋友们,一起进步吧。

技术讨论一锅炖
创建时间:2019-12-04 17:50:11
技术炖一切,欢迎各路大牛来辩
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • 山中老狐狸
    栈主
  • abc
    嘉宾
  • zyl
    嘉宾

小栈成员

查看更多
  • unnamed person1
  • ?
  • Giao
  • 浮生°
戳我,来吐槽~