2014-12-30 Robin Wen
文/Robin 本站推广 币安是全球领先的数字货币交易平台,提供比特币、以太坊、BNB 以及 USDT 交易。 币安注册: https://accounts.binancezh.pro/cn/register/?ref=11190872 邀请码: 11190872 首先看一个示例。 bash mysql --socket=/tmp/mysql5173.sock -uroot -p ``` bash mysql> SELECT VERSION(); +-----------+ | VERSION() | +-----------+ | 5.1.73 | +-----------+ 1 row in set (0.0 继续阅读 »
2016-10-03 Kevin
Nginx 配置 HTTPS 介绍 可信任的 SSL 证书 自签名 SSL 证书 介绍 SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(Secure socket layer(SSL)安全协议是由Netscape Communication公司设计开发。该安全协议主要用来提供对用户和服务器的认证;对传送的数据进行加密和隐藏;确保数据在传送中不被改变,即数据的完整性,现已成为该领域中全球化的标准。 继续阅读 »
2015-05-20 刘太华
一次悲惨的PY注入式漏洞 在前一篇里讲过的使用cpp和python互相调用方法的结构。 这两天就有一个相关漏洞被人利用了, 异常悲惨。 我们的场景服务对每一个GameWorld都有一个PyTermWorld, 是用来接受数据服务发送过来的连接信息的, 比如可以通过协议连接socket到PyTermWorld, 发送LevelUp, 发送 AddExp等, 也有其他命令是通知PyTermWorld调用相关Python函数的, 比如send_cmd(cmd='import notify;notify.test(xxx,yyyy)') 这样的命令, 这里面的cmd会带上具体的脚本模块以及具体的python方法名称, 继续阅读 »
2015-09-12 刘太华
游戏的场景服务和数据服务整合 一直以来都觉的现在运行的游戏后台服务, 实在太多了。 1,数据服务和场景服务之间的通信, 用的是消息队列zeroMQ来做的, 无形就多了一个消息队列服务, 然后还有一个处理队列任务的mq_worker, 然后数据服务到场景服务的通信. 2, 需要在每次需要的时候都建立一次本地的socket,就2个服务之间,产生了多余的好多事情。 继续阅读 »
2017-03-06 KasperDeng
生产环境之运维 最近在生产环境上游历了一番,大版本升级,流量控制,问题的追根索源,甚是各种艰辛。 线上资源配置问题 池化连接 必须清楚了解业务进行设置 主要是连接数个数与闲置回收的时间: 防止连接数瓶颈。 超时设置:防止在网络抖动或者数据库不可用的状况下,业务核心线程被阻塞,连接池爆浆。 e.g. 数据库连接池 池的最小最大值(不同数据库需) 从DPCP获取连接超时 连接超时 读超时 socket超时 重试次数与每次重试相隔时间 NoSQL 容量 (dimension) TTL 连接管理 Dev提供友好的配置指引,工程公式及原理,让Ops了解当前系统在不同的部署环境下如何合理配置系统资源。 系统连接数及计算公式 客户端(e.g 继续阅读 »
2015-11-12 Klaus Ma
Docker Volume Plugin The above picture show the overall architecture of Docker volume plugin. The docker daemon communicate with VolumePlugin by volume_driver.sock (Unix Domain Socket); the volume plugin take responsibility to mount the distributed FS into local FS and return the mount point to docker daemon. The do 继续阅读 »
2016-12-16 Li Shuai
1. 连接数过高 Redis连接数过高,且没有修改进程能打开的最大文件数,当达到最大文件数限制时,Redis在accept新连接的时候会立即报错"Max open files",无法成功获取该连接,此时,listen socket是持续可读的状态,事件循环直接把CPU跑满。这种现象还可能与没有配置Redis配置文件中的timeout参数有关,不设timeout参数,Redis不会主动关闭僵尸连接,导致连接数越来越高,容易达到限制。 解决方法:1)config set timeout xx修改keeplive时间;2)client kill ip:port杀死一部分僵尸连接;3)修改系统参数,增加单进程能打开的最大文件数。 这一点M 继续阅读 »
2015-03-13 刘太华
项目的socket短连接服务, 采用的是MVC模式, 玩家的某个功能对应的就是一个Model, 每个Model之间数据是独立的, 当然这些Model是继承于一个父类. 对数据的操作都是在实现的Model里进行, 对数据的保存操作(save)我们都建议是在Controller里进行的, 这么做的好处是显而易见的, 玩家各个功能之间数据安全性得以保证, 同时也保证在某个功能产生bug的时候, 各数据之间互相不污染. 比如一个连接进来了, 可能会涉及多项Model的数据更改和保存. 在Controller里, 可能会有多行对应各功能Model的 obj.save()操作: 继续阅读 »
2015-04-10 刘太华
网络层 一个思维导图 基本模块有: SocketBase 抽象基类, 定义所有会共性的方法, 基本都是Epoll在回调,比如OnRead, OnWrite分别处理epoll的读写事件, ListenSocket也是继承这个基类. m_fd 保存socket的fd属性 m_readBuffer 和 m_writeBuffer 分别是一个读写的buffer, 类型就是Buffer类 继续阅读 »
2016-08-12 ruki
tbox对于数据文件的解析提供了完善的支持,可以对各种二进制数据,文件数据流,网络数据流等进行各种解析操作 并且提供了一整套字节解析、比特位解析的接口,来支持各种流模式: stream 通用数据流,提供对流式数据的读写和解析,支持多层流嵌套以及各种协议(http, socket, file, data ...) 对于如何使用stream,这里暂时不详细介绍了,之后会单独重点介绍下,这里主要是为了描述,如何使用stream来处理字节数据的解析 例如,我要从数据流中,读取一个大端的16bits数值,很简单,只要: c tb_uint16_t value; if (tb_stream_bread_u16_be(stream, 继续阅读 »