From c36c8ab6f96bf7cabcea8ea404aa12770083ccef Mon Sep 17 00:00:00 2001 From: laodaming <11058467+laudamine@user.noreply.gitee.com> Date: Fri, 22 Sep 2023 14:38:26 +0800 Subject: [PATCH 1/7] fix --- server/websocket/internal/logic/ws_render_image.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/websocket/internal/logic/ws_render_image.go b/server/websocket/internal/logic/ws_render_image.go index e488c8d1..361ea0e1 100644 --- a/server/websocket/internal/logic/ws_render_image.go +++ b/server/websocket/internal/logic/ws_render_image.go @@ -46,12 +46,12 @@ func (r *renderProcessor) allocationMessage(w *wsConnectItem, data []byte) { logx.Error("invalid format of websocket render image message", err) return } + w.extendRenderProperty.templateTag = renderImageData.RenderData.TemplateTag + w.extendRenderProperty.selectColorIndex = renderImageData.RenderData.TemplateTagColor.SelectedColorIndex select { case <-w.closeChan: //已经关闭 return case w.extendRenderProperty.renderChan <- renderImageData: //发入到缓冲队列 - w.extendRenderProperty.templateTag = renderImageData.RenderData.TemplateTag - w.extendRenderProperty.selectColorIndex = renderImageData.RenderData.TemplateTagColor.SelectedColorIndex return } } From c2bb174574126137a92b5c1a9167d9bfb0e0bab4 Mon Sep 17 00:00:00 2001 From: laodaming <11058467+laudamine@user.noreply.gitee.com> Date: Fri, 22 Sep 2023 14:44:55 +0800 Subject: [PATCH 2/7] fix --- server/websocket/internal/logic/ws_render_image.go | 1 + 1 file changed, 1 insertion(+) diff --git a/server/websocket/internal/logic/ws_render_image.go b/server/websocket/internal/logic/ws_render_image.go index 361ea0e1..e2307fa9 100644 --- a/server/websocket/internal/logic/ws_render_image.go +++ b/server/websocket/internal/logic/ws_render_image.go @@ -79,6 +79,7 @@ func (w *wsConnectItem) consumeRenderImageData() { logx.Info("由于模板切换了颜色,丢弃该渲染消息") continue } + logx.Info("***************用户id:",w.userId," 游客id:",w.guestId," 当前模板标签:",w.extendRenderProperty.templateTag, " 消息模板标签:",data.RenderData.TemplateTag ," 当前颜色索引:",w.extendRenderProperty.selectColorIndex," 消息颜色索引:",data.RenderData.TemplateTagColor.SelectedColorIndex) limitChan <- struct{}{} go func(d websocket_data.RenderImageReqMsg) { defer func() { From 129583d19aa2470acdcf3006986f166874fc7e41 Mon Sep 17 00:00:00 2001 From: laodaming <11058467+laudamine@user.noreply.gitee.com> Date: Fri, 22 Sep 2023 14:57:56 +0800 Subject: [PATCH 3/7] fix --- .../internal/logic/ws_render_image.go | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/server/websocket/internal/logic/ws_render_image.go b/server/websocket/internal/logic/ws_render_image.go index e2307fa9..44e5ae87 100644 --- a/server/websocket/internal/logic/ws_render_image.go +++ b/server/websocket/internal/logic/ws_render_image.go @@ -3,6 +3,7 @@ package logic //处理websocket云渲染任务数据 import ( "bytes" + "context" "encoding/json" "errors" "fmt" @@ -66,6 +67,7 @@ func (w *wsConnectItem) consumeRenderImageData() { //限制并发 limitChan := make(chan struct{}, renderChanConcurrency) defer close(limitChan) + ctlCtx ,cancel:= context.WithCancel(w.logic.ctx) for { select { case <-w.closeChan: //已关闭 @@ -73,15 +75,19 @@ func (w *wsConnectItem) consumeRenderImageData() { case data := <-w.extendRenderProperty.renderChan: //消费数据 if data.RenderData.TemplateTag != w.extendRenderProperty.templateTag{ logx.Info("由于模板切换了,丢弃该渲染消息") + cancel() + ctlCtx ,cancel= context.WithCancel(w.logic.ctx) continue } if data.RenderData.TemplateTagColor.SelectedColorIndex != w.extendRenderProperty.selectColorIndex{ logx.Info("由于模板切换了颜色,丢弃该渲染消息") + cancel() + ctlCtx ,cancel= context.WithCancel(w.logic.ctx) continue } - logx.Info("***************用户id:",w.userId," 游客id:",w.guestId," 当前模板标签:",w.extendRenderProperty.templateTag, " 消息模板标签:",data.RenderData.TemplateTag ," 当前颜色索引:",w.extendRenderProperty.selectColorIndex," 消息颜色索引:",data.RenderData.TemplateTagColor.SelectedColorIndex) + logx.Info("用户id:",w.userId," 游客id:",w.guestId," 当前模板标签:",w.extendRenderProperty.templateTag, " 消息模板标签:",data.RenderData.TemplateTag ," 当前颜色索引:",w.extendRenderProperty.selectColorIndex," 消息颜色索引:",data.RenderData.TemplateTagColor.SelectedColorIndex) limitChan <- struct{}{} - go func(d websocket_data.RenderImageReqMsg) { + go func(ctx context.Context,d websocket_data.RenderImageReqMsg) { defer func() { if err := recover(); err != nil { logx.Error("func renderImage err:", err) @@ -90,8 +96,14 @@ func (w *wsConnectItem) consumeRenderImageData() { defer func() { <-limitChan }() + go func() { + select { + case <-ctx.Done() : + panic("渲染截止") + } + }() w.renderImage(d) - }(data) + }(ctlCtx,data) } } } From c8a52321a589b343aa5ad6ea05a77a64948cd12b Mon Sep 17 00:00:00 2001 From: laodaming <11058467+laudamine@user.noreply.gitee.com> Date: Fri, 22 Sep 2023 15:00:08 +0800 Subject: [PATCH 4/7] fix --- server/websocket/internal/logic/ws_render_image.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/server/websocket/internal/logic/ws_render_image.go b/server/websocket/internal/logic/ws_render_image.go index 44e5ae87..601b0ab3 100644 --- a/server/websocket/internal/logic/ws_render_image.go +++ b/server/websocket/internal/logic/ws_render_image.go @@ -97,6 +97,11 @@ func (w *wsConnectItem) consumeRenderImageData() { <-limitChan }() go func() { + defer func() { + if err := recover(); err != nil { + logx.Error( err) + } + }() select { case <-ctx.Done() : panic("渲染截止") From bfea40c643efa28bb9bc1e8282f1837a04d18275 Mon Sep 17 00:00:00 2001 From: laodaming <11058467+laudamine@user.noreply.gitee.com> Date: Fri, 22 Sep 2023 15:12:44 +0800 Subject: [PATCH 5/7] fix --- .../internal/logic/ws_render_image.go | 40 +++---------------- service/repositories/image_handle.go | 2 +- 2 files changed, 6 insertions(+), 36 deletions(-) diff --git a/server/websocket/internal/logic/ws_render_image.go b/server/websocket/internal/logic/ws_render_image.go index 601b0ab3..3d29377e 100644 --- a/server/websocket/internal/logic/ws_render_image.go +++ b/server/websocket/internal/logic/ws_render_image.go @@ -3,7 +3,6 @@ package logic //处理websocket云渲染任务数据 import ( "bytes" - "context" "encoding/json" "errors" "fmt" @@ -24,7 +23,7 @@ var ( //每个websocket渲染任务缓冲队列长度默认值 renderChanLen = 500 //每个websocket渲染并发数 - renderChanConcurrency = 3 + renderChanConcurrency = 1 ) // 渲染处理器 @@ -34,8 +33,6 @@ type renderProcessor struct { // 云渲染属性 type extendRenderProperty struct { renderChan chan websocket_data.RenderImageReqMsg //渲染消息入口的缓冲队列 - selectColorIndex int //颜色选中索引 - templateTag string //模板标签 } // 处理分发到这里的数据 @@ -47,8 +44,6 @@ func (r *renderProcessor) allocationMessage(w *wsConnectItem, data []byte) { logx.Error("invalid format of websocket render image message", err) return } - w.extendRenderProperty.templateTag = renderImageData.RenderData.TemplateTag - w.extendRenderProperty.selectColorIndex = renderImageData.RenderData.TemplateTagColor.SelectedColorIndex select { case <-w.closeChan: //已经关闭 return @@ -61,54 +56,29 @@ func (r *renderProcessor) allocationMessage(w *wsConnectItem, data []byte) { func (w *wsConnectItem) consumeRenderImageData() { defer func() { if err := recover(); err != nil { - logx.Error("func consumeRenderImageData err:", err) + logx.Error("func consumeRenderImageData panic:", err) } }() //限制并发 limitChan := make(chan struct{}, renderChanConcurrency) defer close(limitChan) - ctlCtx ,cancel:= context.WithCancel(w.logic.ctx) for { select { case <-w.closeChan: //已关闭 return case data := <-w.extendRenderProperty.renderChan: //消费数据 - if data.RenderData.TemplateTag != w.extendRenderProperty.templateTag{ - logx.Info("由于模板切换了,丢弃该渲染消息") - cancel() - ctlCtx ,cancel= context.WithCancel(w.logic.ctx) - continue - } - if data.RenderData.TemplateTagColor.SelectedColorIndex != w.extendRenderProperty.selectColorIndex{ - logx.Info("由于模板切换了颜色,丢弃该渲染消息") - cancel() - ctlCtx ,cancel= context.WithCancel(w.logic.ctx) - continue - } - logx.Info("用户id:",w.userId," 游客id:",w.guestId," 当前模板标签:",w.extendRenderProperty.templateTag, " 消息模板标签:",data.RenderData.TemplateTag ," 当前颜色索引:",w.extendRenderProperty.selectColorIndex," 消息颜色索引:",data.RenderData.TemplateTagColor.SelectedColorIndex) limitChan <- struct{}{} - go func(ctx context.Context,d websocket_data.RenderImageReqMsg) { + go func(d websocket_data.RenderImageReqMsg) { defer func() { if err := recover(); err != nil { - logx.Error("func renderImage err:", err) + logx.Error("func renderImage panic:", err) } }() defer func() { <-limitChan }() - go func() { - defer func() { - if err := recover(); err != nil { - logx.Error( err) - } - }() - select { - case <-ctx.Done() : - panic("渲染截止") - } - }() w.renderImage(d) - }(ctlCtx,data) + }(data) } } } diff --git a/service/repositories/image_handle.go b/service/repositories/image_handle.go index 3c4f565a..7fbe4806 100644 --- a/service/repositories/image_handle.go +++ b/service/repositories/image_handle.go @@ -318,7 +318,7 @@ func (l *defaultImageHandle) LogoCombine(ctx context.Context, in *LogoCombineReq err = curl.NewClient(ctx, &curl.Config{ BaseUrl: *l.BLMServiceUrl, Url: constants.BLMServiceUrlLogoCombine, - RequireTimeout: time.Second * 30, + RequireTimeout: time.Second * 15, }).PostJson(postMap, &resultBLM) logc.Infof(ctx, "合图--算法请求--合图--结束时间:%v", time.Now().UTC()) From b6651c4bdc118c283618704cb458031958d2aea3 Mon Sep 17 00:00:00 2001 From: laodaming <11058467+laudamine@user.noreply.gitee.com> Date: Fri, 22 Sep 2023 15:19:41 +0800 Subject: [PATCH 6/7] fix --- server/websocket/internal/logic/ws_render_image.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/server/websocket/internal/logic/ws_render_image.go b/server/websocket/internal/logic/ws_render_image.go index 3d29377e..5aa0e109 100644 --- a/server/websocket/internal/logic/ws_render_image.go +++ b/server/websocket/internal/logic/ws_render_image.go @@ -37,7 +37,7 @@ type extendRenderProperty struct { // 处理分发到这里的数据 func (r *renderProcessor) allocationMessage(w *wsConnectItem, data []byte) { - //logx.Info("开始处理渲染任务消息:", string(data)) + logx.Info("收到渲染任务消息") var renderImageData websocket_data.RenderImageReqMsg if err := json.Unmarshal(data, &renderImageData); err != nil { w.renderErrResponse(renderImageData.RenderId, renderImageData.RenderData.TemplateTag, "", "数据格式错误", renderImageData.RenderData.ProductId, w.userId, w.guestId, 0, 0, 0, 0) @@ -49,6 +49,9 @@ func (r *renderProcessor) allocationMessage(w *wsConnectItem, data []byte) { return case w.extendRenderProperty.renderChan <- renderImageData: //发入到缓冲队列 return + case <- time.After(time.Millisecond * 50)://超过50毫秒丢弃 + logx.Info("入渲染队列失败,队列满了,选择丢弃") + return } } From f6e073bb4105a7c4d37fb874f8989c9ce175a320 Mon Sep 17 00:00:00 2001 From: laodaming <11058467+laudamine@user.noreply.gitee.com> Date: Fri, 22 Sep 2023 15:24:16 +0800 Subject: [PATCH 7/7] fix --- server/websocket/internal/logic/datatransferlogic.go | 4 ++-- server/websocket/internal/logic/ws_render_image.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/server/websocket/internal/logic/datatransferlogic.go b/server/websocket/internal/logic/datatransferlogic.go index 7f434499..e3bb67db 100644 --- a/server/websocket/internal/logic/datatransferlogic.go +++ b/server/websocket/internal/logic/datatransferlogic.go @@ -67,9 +67,9 @@ var ( //websocket连接存储 mapConnPool = sync.Map{} //每个websocket连接入口缓冲队列长度默认值 - websocketInChanLen = 1000 + websocketInChanLen = 2000 //每个websocket连接出口缓冲队列长度默认值 - websocketOutChanLen = 1000 + websocketOutChanLen = 2000 //是否开启debug openDebug = true //允许跨域的origin diff --git a/server/websocket/internal/logic/ws_render_image.go b/server/websocket/internal/logic/ws_render_image.go index 5aa0e109..30407b78 100644 --- a/server/websocket/internal/logic/ws_render_image.go +++ b/server/websocket/internal/logic/ws_render_image.go @@ -50,7 +50,7 @@ func (r *renderProcessor) allocationMessage(w *wsConnectItem, data []byte) { case w.extendRenderProperty.renderChan <- renderImageData: //发入到缓冲队列 return case <- time.After(time.Millisecond * 50)://超过50毫秒丢弃 - logx.Info("入渲染队列失败,队列满了,选择丢弃") + w.renderErrResponse(renderImageData.RenderId, renderImageData.RenderData.TemplateTag, "", "渲染队列溢出,请稍后再发", renderImageData.RenderData.ProductId, w.userId, w.guestId, 0, 0, 0, 0) return } }