C# Redis 帮助类
自己项目中使用的Redis帮助类,采用StackExchange.Redis库,单例模式,使用简单,直接上代码:
.net Socket 客户端
Docker 发布游戏服务命令备份
1 | docker run --name service-test \ |
StackExchange.Redis timeout异常 解决方案
公司项目使用了redis作为缓存数据库,在网上看了很多文章,都指出StackExchange.Redis最好使用单例模式,然而在实际 项目使用过程中,捕捉到timeout事件,如下:
1 | Timeout performing EXISTS UserKey-36700, inst: 1, queue: 1, qu: 0, qs: 1, qc: 0, wr: 0, wq: 0, in: 4, ar: 0, clientName: , serverEndpoint: 10.66.205.72:6379, keyHashSlot: 15122 (Please take a look at this article for some common client-side issues that can cause timeouts: http://stackexchange.github.io/StackExchange.Redis/Timeouts) |
根据异常提到的连接:
http://stackexchange.github.io/StackExchange.Redis/Timeouts)
以及在网上查找StackExchange.Redis timeout相关的文章,发现其中两点个解决方法(也是官方提出的方式):
- 使用ConnectionMultiplexer Pool
客户端中使用 ConnectionMultiplexer 对象池,并在发送新请求时选择“最小化加载”ConnectionMultiplexer。 这样可能会防止单个超时导致其他请求也超时。客户端中使用 ConnectionMultiplexer 对象池,并在发送新请求时选择“最小化加载”ConnectionMultiplexer。 这样可能会防止单个超时导致其他请求也超时。
- 修改线程池的最小设置
建议将 IOCP 和 WORKER 线程的最小配置值设置为大于默认值的值。 我们不能给出一个大小适合所有指导这个值应该是什么,因为一个应用程序的正确价值将太高/低为另一个应用程序。
此设置也会影响复杂应用程序的其他部分的性能,因此您需要根据您的特定需求调整此设置。
一个好的起点是200或300,然后根据需要进行测试和调整。
调整方式:System.Threading.ThreadPool.SetMinThreads(200, 200);
附上官方文档中文译文
Docker 常用命令和参数
记录下在使用过程中用到的命令和参数用法。
Docker 安装Nginx
1.首先获取nginx
docker pull nginx
2.安装nginx,将nginx对应的配置路径和文件映射到主机目录,代码如下:
1 | docker run --name nginx \ |
Docker 容器时间与主机不一致
最近发现直接启动的容器,系统时间与主机时间不一致,网上找了一下解决方法,其实就是启动的时候映射了时间设置。
主机为linux方法如下,启动容器的时候加入以下设置:
1 | -v /etc/localtime:/etc/localtime:ro |
问题解决.
Docker 安装记录(CentOS)
卸载旧版本
Older versions of Docker were called docker or docker-engine. If these are installed, uninstall them, along with associated dependencies.
1 | $ sudo yum remove docker \ |
It’s OK if yum reports that none of these packages are installed.
The contents of /var/lib/docker/
, including images, containers, volumes, and networks, are preserved. The Docker CE package is now called docker-ce
.
安装 Docker CE
使用 repository 安装
设置 repository
1.添加引用包
1 | $ sudo yum install -y yum-utils \ |
2.添加 repository 地址
官方源
1 | $ sudo yum-config-manager \ |
国内源
1 | $ sudo yum-config-manager \ |
安装
1 | sudo yum install docker-ce |
启动 Docker CE
1 | sudo systemctl start docker |
开机自动启动
1 | sudo systemctl enable docker |
安装完毕
参考地址:https://docs.docker.com/install/linux/docker-ce/centos/#install-docker-ce-1
[转载]Go项目的目录结构
项目目录结构如何组织,一般语言都是没有规定。但 Go 语言这方面做了规定,这样可以保持一致性
1、一般的,一个 Go 项目在 GOPATH 下,会有如下三个目录:
1 | |--bin |
其中,bin存放编译后的可执行文件;pkg 存放编译后的包文件;src 存放项目源文件。一般,bin 和 pkg 目录可以不创建,go 命令会自动创建(如 go install),只需要创建src目录即可。
对于 pkg 目录,曾经有人问:我把 Go 中的包放入 pkg 下面,怎么不行啊?他直接把 Go 包的源文件放入了 pkg 中。这显然是不对的。pkg 中的文件是 Go 编译生成的,而不是手动放进去的。(一般文件后缀.a)
对于 src 目录,存放源文件,Go 中源文件以包(package)的形式组织。通常,新建一个包就在 src 目录中新建一个文件夹。