草庐IT

mongo-sync

全部标签

golang GC分析? runtime.mallocgc 似乎名列前茅;然后是转向 sync.Pool 解决方案?

我有一个用Go编写的应用程序正在处理消息,需要以20K/秒(可能更多)的速率从网络(UDP)中获取消息,并且每条消息最多可以达到UDP数据包的最大长度(64KB-headersize),程序需要解码这个传入的数据包并编码成另一种格式并发送到另一个网络;目前在24core+64GBRAM的机器上运行正常,但偶尔会丢包,编程模式已经遵循pipelines使用多个go-routines/channels占用整机cpu负载的10%;因此它有可能使用更多的CPU%或RAM来处理所有20K/s的消息而不丢失任何消息;然后我开始分析,遵循这个profiling我在cpu配置文件中发现runtime.

go - 在 sync.Map 中加载或存储而无需每次都创建新结构

是否可以将LoadOrStore放入Go中sync.Map而不是每次都创建一个新的结构?如果没有,有哪些替代方案可用?这里的用例是,如果我将sync.Map用作缓存,其中缓存未命中的情况很少见(但可能),并且在缓存未命中时我想添加到map中,我每次调用LoadOrStore时都需要初始化结构,而不是只在需要时创建结构。我担心这会伤害GC,初始化数十万个不需要的结构。在Java中,这可以使用computeIfAbsent来完成. 最佳答案 Packagesyncimport"sync"typeMapMapislikeaGomap[in

mongodb - 在 Mongo-go-driver 中创建一个独特的字段

我对Go和Mongodb都很陌生,当时我正在用Go和Mongo编写我的第一个rest-api。我正在使用mongo-go-driver并且在Go中有以下Modal结构typeModalstruct{Group[]string`bson:"group"json:"group"`Hostnamestring`bson:"hostname"json:"hostname"`Overridesmap[string]string`bson:"overrides"json:"overrides"`Excludes[]string`bson:"excludes"json:"excludes"`}我不想

go - 如何在 AWS SDK 中实现 AWS CLI Sync 命令的性能

CLI中的awss3sync命令可以非常快速地下载大量文件,而我无法使用AWSGoSDK实现相同的性能。我的存储桶中有数百万个文件,所以这对我来说至关重要。我还需要使用listpages命令,以便我可以添加syncCLI命令不支持的前缀。我曾尝试使用多个goroutine(10到1000个)向服务器发出请求,但与CLI相比,时间要慢得多。每个文件大约需要100毫秒来运行GoGetObject函数,这对于我拥有的文件数量来说是NotAcceptable。我知道AWSCLI在后端也使用PythonSDK,那么它为什么有如此好的性能(我在boto和Go中试过我的脚本)。我正在使用ListOb

mongodb - 通过 ssl 将 golang mgo 连接到 mongo

我正在尝试在本地设置mongo以测试中描述的设置https://www.compose.com/articles/connect-to-mongo-3-2-on-compose-from-golang/“有点难”部分蒙戈我有一组有效的自签名凭据和mongo设置。我包含了key,因为这些key只会在开发期间使用,以确保mongossl代码正常工作。mongosslconfig使用时,通过运行mongod--configconfig/location配置是net:port:27017ssl:mode:requireSSLCAFile:/data/mongo/ca.crtPEMKeyFile

Goroutines、回调和 sync.WaitGroup

使用以下代码:packagemainimport("github.com/davecgh/go-spew/spew""sync""time")funccallbackWithTimeout(cbFuncfunc()([]byte,error),timeouttime.Duration){deferwg.Done()//Idon'twantthisfunctiontoknowaboutsync.WaitGrouptime.Sleep(timeout)d,e:=cbFunc()spew.Dump(d)spew.Dump(e)}varwgsync.WaitGroupfuncmain(){wg

mongodb - 使用 struct & mongodb/mongo-go-driver 更新/替换 mongodb 文档

我正在尝试使用结构更新/替换mongodb文档,但我一直收到err:updatedocumentmustcontainkeybeginningwith'$collection:=r.client.Database(database).Collection(greetingCollection)payment.MongoID=objectid.New()filter:=bson.NewDocument(bson.EC.String("id",payment.ID))_,err:=collection.UpdateOne(ctx,filter,payment)returnerr

mongodb - 在我可以使用 query.Count() 验证之前,Mongo 编写了 query.UpsertId 多个文档

描述:我在我的项目中使用mongoDB。当用户试图出售他的元素时,这是处理程序的简短逻辑。在向mongo提供报价之前,我验证了报价,因此不会有保存assetId的有效报价使用:mgo.v2蒙戈3.6golang1.10问题:如果用户点击速度非常快,会向我的处理程序发送多个请求(假设他快速双击鼠标),则验证不起作用,因为似乎第一个报价不在集合,因此我得到2-3个具有相同assetId的报价。我试过了设置mongoUrl?replicaSet=rs0,这样我们的主从现在就可以相互联系了验证后设置time.Sleep(200*time.Millisecond)问题:有什么办法可以用mongo

mongodb - 使用 mgo 或 bson 在 Go 中重命名 mongo 集合?

我想在我的Go应用程序中重命名一个mongo集合。我正在使用mgo驱动程序,但它没有定义的方法来执行此操作。有谁知道查询将使用bson吗?这是我想在Go中实现的命令:http://docs.mongodb.org/manual/reference/command/renameCollection/ 最佳答案 我没有使用过mgo,但这看起来正是你想要运行原始查询的东西。http://godoc.org/labix.org/v2/mgo#Session.Run直接进入mongo:db.adminCommand({renameCollec

mongodb - mongo-go-driver 聚合调用总是返回错误

我正在尝试使用mongo-go-driver(Golang的MongoDB团队驱动程序)进行聚合,但我看不出我在这里做错了什么://groupgroup,e:=bson.ParseExtJSONObject(`{"$group":{"_id":{"ProductCode":"$ProductCode","Dir":"$Dir","WharehouseID":"$WharehouseID"}}}`)cursor,e:=myCollection.Aggregate(context.Background(),group,)//eoutput:"(Location40324)Unrecogni