Scut 上线后遇到的问题
1. 上线后的大并发问题:
var sem = new Semaphore(_accepts, _accepts);
while (true)
{
sem.WaitOne();
#pragma warning disable 4014
_listener.GetContextAsync().ContinueWith(async (t) =>
{
try
{
sem.Release();
var ctx = await t;
await ProcessListenerContext(ctx, this);
return;
}
catch (Exception ex)
{
TraceLog.WriteError("Http request unknow error:{0}", ex);
}
});
#pragma warning restore 4014
}
这段消息监听的代码在大并发时遇到了重大的问题,无论初始化多少信号量,都会进入等待消息的状态,只有完整地接受完一条消息,才会释放一个信号量出来。因此,特别是在单个协议较大,或者并发访问量较大的情况下,服务端很快会陷入大部分信号量被锁死在等待接收消息的情况。
解决方案则是在“建立连接-接收消息”上不做限制,而在消息处理阶段进行过滤;
2. .NET 嵌入 lua 虚拟机:
同事用 Lua 编写了一个静态的战斗逻辑处理器,可想而知,大量对这个处理器的使用,会导致各种各样的内存占用与GC问题。
因此对 Lua 虚拟机资源,还是要进行池化处理,进行资源管理。
3. Scut 对接受完整消息、逻辑处理、发送完整消息的超时控制缺失,这样会因为用户不稳定的消息传递、错误的逻辑代码导致资源被占用,一定要对各阶段进行超时控制,防止资源被超长时间占用。
4. Scut 的协议部分,在常规协议之外还支持追加更多消息,以其规定的分隔符进行分隔,但其采用的是“字符串匹配”的方式查找分隔符,而不是直接在包头中指定追加消息的起始索引,当常规协议的包身非常大时,字符串匹配会消耗较多的性能。
Scut 上线后遇到的问题的更多相关文章
- android app上线后bug的处理
app上线后,后期维护显得尤为重要,今天给大家分享一下app上线后出现bug后的解决方法 1.继承Application类,重写onCreate方法 import java.io.File; impo ...
- IT连创业系列:App产品上线后,运营怎么搞?(上)
又是一阵一阵的时光过去了,今夜,码的不是代码,是文字,继续和大伙分享创业的这一路历程. 话说,在突破技术的领域,IT连和IT恋上线后,慢慢走上运营这条路时,发现自己经常容易迷失. 毕竟,做为一名技术型 ...
- 160527、项目上线后session(远程session)
import java.io.Serializable;import java.util.HashMap;import java.util.Map;import java.util.UUID;impo ...
- 项目上线后出现Bug,该如何处理?
项目在上线之后又出现了Bug,这让很多测试人员和开发人员头痛.但很多时候线上Bug普遍地存在,不可避免. 任何项目都存在未发现 Bug 和 已发现 Bug 两种情况,不存在没有 Bug的情况. 即 ...
- 性能测试——记XX银行电票系统上线后宕机问题诊断优化
四月份我们公司负责的电票系统上线了,这个系统上线比客户方其他系统上线还特殊,是二期改造项目,旧系统数据还要整合抽取到新系统中继续使用,而且该系统不是增量型方式开发上线的,而且全部开发完后全国上线的,这 ...
- 如何保证前端项目上线后的安全?webfunny已总结前端最关键的12大指标
实时监控大屏 众所周知:实时流量大屏,是用来监控前端项目上线质量的. 如大家所知,监控系统会监控线上应用的各项指标,如:错误.白屏.耗时等等,但是仔细一想,即使有这些监控,我们也不一定能够保证线上 ...
- Android开发中上线后修改应用名称的若干问题
一.在Android Studio 1.3中修改app的包名: 需求来源: 之前开发的app已经在腾讯的应用宝上线,应客户要求,app需要改名字,这个就有点麻烦了.如果申请改名字,要求如下: 截图上图 ...
- 系统上线后WCF服务最近经常死掉的原因分析总结
前言 最近系统上线完修改完各种bug之后,功能上还算是比较稳定,由于最近用户数的增加,不知为何经常出现无法登录.页面出现错误等异常,后来发现是由于WCF服务时不时的就死掉了.后来就开始分析问题.得到的 ...
- 总结:Unity3D游戏上线后的流程回顾
原地址:http://unity3d.9tech.cn/news/2014/0127/39748.html 首先.unity 灯光烘焙 :Unity 3d FBX模型导入.选项Model 不导入资源球 ...
随机推荐
- postgresql9.4新特性jsonb学习-update更新操作
先科普下概念:PgSQL9.4 新增 JSONB 数据类型, JSONB 同时属于 JSON (JavaScript Object Notation) 数据类型,jsonb 和 json 的输入数据几 ...
- js获取几个月前,几周前时间。
/** * DK 命名空间 防止全局变量污染 */ var DK = {} ; /** * 获取前几个月,默认为一个月,当前时间 * @author duke * @date 格式为yy ...
- [C#] c# 验证手机号码 最新的17手机号
/// <summary> /// 校验手机号码是否符合标准. /// </summary> /// <param name="mobile"> ...
- VS扩展CodeMaid代码整理插件
本文章转载:http://www.cnblogs.com/wintersun/p/3577039.html 官方地址:http://www.codemaid.net/ 开源VS扩展CodeMaid介绍 ...
- 蜗牛—JSP学习之JavaBean初识
初识: <%@ page language="java" import="java.util.*" pageEncoding="utf-8&qu ...
- android常见错误-Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
在andorid进行调试的过程中,出现下面的错误: 解决方法: 修改一下应用程序描述符: <manifest xmlns:android="http://schemas.android ...
- POJ 1185 状态压缩DP 炮兵阵地
题目直达车: POJ 1185 炮兵阵地 分析: 列( <=10 )的数据比较小, 一般会想到状压DP. Ⅰ.如果一行10全个‘P’,满足题意的状态不超过60种(可手动枚举). Ⅱ.用DFS ...
- 06 MDB将数据和dataGridView1绑定
附件:http://files.cnblogs.com/xe2011/dataGridView1_bindingNavigator1_bindingSource1.rar 实现功能 对.MDB文件进行 ...
- Android开发_控制硬加速hardwareAccelerated
控制硬加速 hardwareAccelerated也是一种优化的手段 从Android3.0 (API level11)开始,Android的2D显示管道被被设计得更加支持硬加速了.硬加速使用GPU承 ...
- Android 5.0 新特性
Material Design Material Design简介 Material Design是谷歌新的设计语言,谷歌希望寄由此来统一各种平台上的用户体验,Material Design的特点是干 ...