最近,中兴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. 正试图在os加载程序锁内执行托管代码。不要尝试在DllMain或映像初始化函数内运行托管代码 问题解决方法

    方法一把vs菜单的 调试->异常->Managed Debuggin Assistants->LoaderLock

  2. Cognos命名空间不可用

    1. 问题描述 启动Cognos失败,报错代码为0146. 2. 问题分析 namespace 配置有问题,检查configuration 3. 解决方案 如果检查不出问题,删除$COGNOS_HOM ...

  3. docker 镜像运行问题

  4. 使用VirtualBox把IMG文件转换为VDI文件

    使用VirtualBox把IMG文件转换为VDI文件 首先确保已安装VirtualBox. 需要使用的命令: 语法:$ VBoxManage convertdd input.img output.vd ...

  5. idea找不到tools.jar下的内容的解决方法

    今天学习javac编译原理时,发现找不到tools.jar. 解决办法:将D:\Program Files\Java\jdk1.8.0_151\lib目录下的tools.jar复制到D:\Progra ...

  6. servlet的url-pattern的缺省匹配【<url-pattern>/<url-pattern>】

    最近在学习配置springmvc的框架,对配置springMVC时的url用“/”很是疑惑,经查阅前辈文章,学习了servlet的url-pattern匹配规则 <servlet-mapping ...

  7. Oracle 生成工作日历表

    select to_char(everyDay, 'yyyy-mm-dd') as dt, to_char(everyday, 'yyyy') as yr, to_char(everyday, 'mm ...

  8. MySQL的一些指令操作[简版]

    sudo apt-get install mysql-server pa aux | grep mysql sudo service mysql start sudo service mysql st ...

  9. 如何将Excel转换成Markdown表格[转]

    在这篇文章中,我将告诉你如何快速的将Excel转换为markdown表格,以及如何将Google Docs,Numbers,网页中的表格或其他类似Excel的程序数据转换为Markdown表格 你可能 ...

  10. docker学习端口连接docker容器---第四章节

    一.Docker容器连接 前面的第二章节,我们事先通过网络端口来访问运行在docker容器内的服务,我们也可以通过端口连接到一个docker容器 我们可以指定容器绑定的网络地址,如绑定127.0.0. ...