最近,中兴ZTE违反美国商务部禁令,向伊朗出售敏感技术,被美国下达长达7年的禁止令,教训十分深刻。以诚待人,信守承诺,才能在商业社会站稳脚跟。

还是说说最近自己上的一课吧。上了港台服以后,奇奇怪怪的问题比较多。其中之一是玩家被异常登录了。现象是玩家登录游戏,提示账号被异常登录。这种现象本来应该在玩家顶号操作时,被顶号的设备上出现的。不应该在正在登录的活跃客户端上显示

回顾现在的登录过程,玩家连上游戏后,首先会创建一个session。登录完成后,会产生user挂在session上。最后,会找到对应的agent,在上面建立对应的role。当发生顶号的时候,会调用agent的下线流程,下线完成后,清理session。清理完成后,新玩家再执行正常登录流程

现在的问题是,下线过程中,某一步变得比平常慢非常多,结果踢人卡住了。然后再次登录,又继续走踢人流程,结果变成新用户收到了错误的顶号提示信息。。。

要彻底改掉这个问题,要么将顶号简化,变成只切换fd,不走下线流程;要么加上保护标记,玩家在下线过程里再登录,明确提示正在下线,请稍后再试。目前准备先上一些临时的解决方案,用gm指令清除已登录的标记,让玩家可以正常登,到时候覆盖之前下线存盘的数据就好。

关于某一步登出特别慢的问题,想了一下,大概有两个方向,原因差不多。一个是离线过程里,agent服务要向其他服务发起调用,如果call比较多的话,会多次挂起。每次挂起后,收到返回值,都要重新排到消息队列末尾,如果系统繁忙,这时候需要处理的消息特别多,就会出现下线的函数耗时非常久了。另一个方向,是下线的时候,要向一个热门服务发起调用,这个服务的消息队列非常长,导致响应下线请求很慢。这两个问题都涉及到协程调度的公平问题,某些场景下,协程会出现饥饿(starvation)的情况,得不到调度。如果要搞分优先级的调度,估计会变得很麻烦,这块还要再想想

Lesson Learned的更多相关文章

  1. 30 algorithm questions study

    April 26, 2015 Spent over a few months to go over 30 questions about algorithm starting from January ...

  2. 调用newtonsoft.json反序列出错

    调用newtonsoft.json反序列出错: Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current J ...

  3. Cracking Story - How I Cracked Over 122 Million SHA1 and MD5 Hashed Passwords

    This is the story about how I cracked 122 million* password hashes with John the Ripper and oclHashc ...

  4. 深度卷积神经网络用于图像缩放Image Scaling using Deep Convolutional Neural Networks

    This past summer I interned at Flipboard in Palo Alto, California. I worked on machine learning base ...

  5. hadoop native

    http://blog.csdn.net/benben85/article/details/4161134 http://stackoverflow.com/questions/19943766/ha ...

  6. 执行字符串或注释代码段的方法(eval、exec、execfile)

    eval:计算字符串中的表达式exec:执行字符串中的语句execfile:用来执行一个文件 需注意的是,exec是一个语句,而eval()和execfile()则是内建built-in函数. 1 2 ...

  7. Image Scaling using Deep Convolutional Neural Networks

    Image Scaling using Deep Convolutional Neural Networks This past summer I interned at Flipboard in P ...

  8. German Collegiate Programming Contest 2015(第三场)

    Divisions David is a young boy and he loves numbers. Recently he learned how to divide two numbers.D ...

  9. Codeforces Round #430 D. Vitya and Strange Lesson

    Today at the lesson Vitya learned a very interesting function - mex. Mex of a sequence of numbers is ...

随机推荐

  1. Python3自定义日志类教程

    一.说明 Python3的logging功能是比较丰富的支持不同层次的日志输出,但或是我们想在日志前输出时间.或是我们想要将日志输入到文件,我们还是想要自定义日志类. 之前自己也尝试写过但感觉文档太乱 ...

  2. day 11 装饰器

    1.day 10 内容复习 # 之前做得的题 以后再遇到能保证会 # 下周二考 :所有的知识 # 面试题:认真对待 # # 三元运算符 # 接收结果的变量 = 条件为真的结果 if 条件 else 条 ...

  3. 数据分析---SQL(删除数据或表)

    一.SQL中的语法 1.drop table 表名称                         eg: drop table  dbo.Sys_Test   2.truncate table 表 ...

  4. Struts中向显示界面传输数据

    方法一:action类成员做对象成员,加getter,setter.例如: public class RegAction extends ActionSupport { private Login l ...

  5. centos6.5删除/boot后恢复

    删除/boot下的所有东西 更改为从光盘启动并进入紧急救援模式 语言选择英语 选择美式键盘布局 不配置网络 选择Continue 这里提示系统已经被挂载到了/mnt/sysimage 选择shell, ...

  6. vue+uwsgi+nginx部署路飞学城

    vue+uwsgi+nginx部署路飞学城   有一天,老男孩的苑日天给我发来了两个神秘代码,听说是和mjj的结晶 超哥将这两个代码,放到了一个网站上,大家可以自行下载 路飞学城django代码 ht ...

  7. python之路-变量

    变量定义的规则: - 变量名只能是字母.数字.或下划线的任意组合 - 变量名的第一个字符不能是数字 - 以下关键字不能声明为变量名  ['and','as','assert','break','cla ...

  8. 泛型的上下边界 : ? extends E 与 ? super T

    public class Problem { public static void main(String[] args) { List<? extends A> list; List&l ...

  9. 如何用EFCore Lazy Loading实现Entity Split

    α角 与 β角 支持 现实生活 的 计算机系统,总有着两大偏差,第一个是 现实生活 与 计算机系统 的α角,另外一个是计算机系统的 逻辑设计 与 物理设计 的β角.举个栗子: α角:假设某个公司的商业 ...

  10. erlang并发编程

    1.erlang中创建进程(非操作系统线程,比其要轻量很多)非常方便,运用spawn函数即可 spawn(Fun) -> pid() spawn(Node, Fun) -> pid() s ...