最新 | 最热门 | 最高评价

+0  Erlang 网络密集型服务器的瓶颈和解决思路

Tag: Erlang探索 | 源码分析 | 网络编程 | 调优 | migrated | system_info(scheduling_statistics) | total_scheduling_statistics
Yu Feng 发于 2013年11月11日 14:35 | 点击: 1423 | 展开摘要
原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: Erlang 网络密集型服务器的瓶颈和解决思路

最近我们的Erlang IO密集型的服务器程序要做细致的性能提升,从每秒40万包处理提升到60万目标,需要对进程和IO调度器的原理很熟悉,并且对行为进行微调,花了不少时间参阅了相关的文档和代码。

其中最有价值的二篇文章是:

1. Characterizing the Scalability of Erlang VM on Many-core Process

查看全文: http://www.udpwork.com/item/11358.html

+0  MiniGame 服务端设计

Tag: 服务器 | 网络编程
郑 纪 发于 2013年08月10日 20:38 | 点击: 1710 | 展开摘要
最近和小伙伴们在做一个游戏。有机会单挑服务端了。被信任是有压力也有动力 :),可以尝试各种好玩的技术的感觉是很爽。Jerry 和Cat 所主导的客户端,Mzt的美术都很给力。作为云风的忠实粉,可以独立设计游戏服务器后台,我对这样的挑战期待已久。

数据库设计

使用Redis架设服务器数据库。就涉及到数据库的设计。利用Redis的数据特性保证新增一个用户保证用户ID的原子性。

INCR counter

Redis默认的设计风格习惯采用 表名:主键:列值。做成一个帐户体系

查看全文: http://www.udpwork.com/item/10414.html

+0  回顾 ZeroMQ

Tag: Go | Linux | 服务器 | 网络编程
郑 纪 发于 2013年06月29日 21:25 | 点击: 2058 | 展开摘要
今日在整理曾经的学习笔记,看到了ZeroMQ,号称史上最快消息内核。曾经在一创业公司用其开发过一些后端服务。当时用Go语言实现 源代码,使用的便是gozmq库

这个消息通信框架库的文章有很多,比较著名的当属一淘的,(技术文章这样写,的确是让读者舒服 :))还有官方文档

优点:

1.高度封装。

它处于会话层之上,应用层之下,你不需要自己写一行的socket函数调用就能完成复杂的网络通信工作。

2.点对点的消息传输上。

传统的消息队列都需要一个消

查看全文: http://www.udpwork.com/item/10416.html

+0  init_debug查看系统boot过程

Tag: Erlang探索 | 网络编程
Yu Feng 发于 2013年06月24日 17:40 | 点击: 1461 | 展开摘要
原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: init_debug查看系统boot过程

erl启动的时候有个参数 -init_debug 作用是

Makes init write some debug information while interpreting the boot script.

参见erlang system_principles的1.3节:Boot Scripts, 我们可以知道,每个erlang vm启动的时候,init进程都

查看全文: http://www.udpwork.com/item/10084.html

+0  分布式处理框架-Gearman

Tag: Go | python | 服务器 | 网络编程 | Python | 分布式
郑 纪 发于 2013年06月20日 11:59 | 点击: 2566 | 展开摘要
近日折腾Gearman.有兴趣可以参考阅读这个,这个,还有这个

官方说法:

Gearman provides a generic application framework to farm out work to other machines or processes that are better suited to do the work. It allows you to do work in parallel, to load balance processing

查看全文: http://www.udpwork.com/item/10417.html

+0  Unix Domain Socket – IPC通信机制

Tag: Linux | 服务器 | 网络编程
郑 纪 发于 2013年06月17日 22:52 | 点击: 3749 | 展开摘要
什么是Unix Domain Socket

基于socket的框架上发展出一种IPC机制,就是UNIX Domain Socket。虽然网络socket也可用于同一台主机的进程间通讯(通过loopback地址127.0.0.1),但是UNIX Domain Socket用于IPC更有效率:

不需要经过网络协议栈

不需要打包拆包、计算校验和、维护序号和应答等

只是将应用层数据从一个进程拷贝到另一个进程。这是因为,IPC机制本质上是可靠的通讯,而网络协议是为不可靠的通讯设

查看全文: http://www.udpwork.com/item/10419.html

+0  豆瓣喜爱文章下载器

Tag: python | 生活 | 网络编程
郑 纪 发于 2013年06月12日 21:57 | 点击: 1223 | 展开摘要
收藏一些不错的文章

在豆瓣阅读到一些好的文章,通常会点击加心喜爱。久而久之,就淡忘了,于是想把他们下载下来,用了一天的时间写了具有爬虫和分析功能的下载器。使用了BeautifulSoup,urllib模块.可以一次性抓取其他人的文章。

使用方法:

if __name__ == "__main__":
#用户名,可以写入douban ID
usrnames = ["laiyonghao","fenng&qu

查看全文: http://www.udpwork.com/item/10420.html

+0  网络栈内存不足引发进程挂起问题

Tag: Linux | 工具介绍 | 网络编程 | 调优 | sk_stream_wait_memory | 网络栈内存不足 | 进程挂起
Yu Feng 发于 2013年02月26日 13:32 | 点击: 2732 | 展开摘要
原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: 网络栈内存不足引发进程挂起问题

我们知道TCP socket有发送缓冲区和接收缓冲区,这二个缓冲区都可以透过setsockopt设置SO_SNDBUF,SO_RCVBUF来修改,但是这些值设多大呢?这些值和协议栈的内存控制相关的值什么关系呢?

我们来解释下:

$ sysctl net|grep mem

net.core.wmem_max = 131071

net.core.rmem_max = 13

查看全文: http://www.udpwork.com/item/9301.html

+0  MYSQL数据库网卡软中断不平衡问题及解决方案

Tag: Linux | 工具介绍 | 网络编程 | RPS | softirqd | systemtap
Yu Feng 发于 2012年01月16日 21:30 | 点击: 2640 | 展开摘要
原创文章,转载请注明: 转载自Erlang非业余研究

本文链接地址: MYSQL数据库网卡软中断不平衡问题及解决方案

最近公司在MySQL的数据库上由于采用了高速的如PCIe卡以及大内存,去年在压力测试的时候突然发现数据库的流量可以把一个千M网卡压满了。随着数据库的优化,现在流量可以达到150M,所以我们采用了双网卡,在交换机上绑定,做LB的方式,提高系统的吞吐量。

但是在最近压测试的一个数据库中,mpstat发现其中一个核的CPU被软中断耗尽:

Mysql QPS

查看全文: http://www.udpwork.com/item/6712.html

+0  gen_tcp接受链接时enfile的问题分析及解决

Tag: Erlang探索 | 网络编程 | enfile | gdb | systemtap
Yu Feng 发于 2011年12月05日 12:16 | 点击: 2198 | 展开摘要
原创文章,转载请注明: 转载自Erlang非业余研究

本文链接地址: gen_tcp接受链接时enfile的问题分析及解决

最近我们为了安全方面的原因,在RDS服务器上做了个代理程序把普通的MYSQL TCP连接变成了SSL链接,在测试的时候,皓庭同学发现Tsung发起了几千个TCP链接后Erlang做的SSL PROXY老是报告gen_tcp:accept返回{error, enfile}错误。针对这个问题,我展开了如下的调查:

首先man accept手册,确定en

查看全文: http://www.udpwork.com/item/6466.html

+0  Linux下pipe使用注意事项

Tag: Erlang探索 | 网络编程 | 调优 | fcntl | O_NOATIME | pipe
Yu Feng 发于 2011年11月09日 20:52 | 点击: 1807 | 展开摘要
原创文章,转载请注明: 转载自Erlang非业余研究

本文链接地址: Linux下pipe使用注意事项

Linux下的pipe使用非常广泛, shell本身就大量用pipe来粘合生产者和消费者的. 我们的服务器程序通常会用pipe来做线程间的ipc通讯. 由于unix下的任何东西都是文件,只要是文件,在读取的时候,,就会设置last access time, 所以pipe也不例外., 但是这个时间对我们没有意义 如果pipe使用的非常频繁的时候会碰到由于设置访问时间导致

查看全文: http://www.udpwork.com/item/6254.html

+0  Erlang版TCP服务器对抗攻击解决方案

Tag: Erlang探索 | 网络编程
Yu Feng 发于 2011年11月03日 16:55 | 点击: 2169 | 展开摘要
原创文章,转载请注明: 转载自Erlang非业余研究

本文链接地址: Erlang版TCP服务器对抗攻击解决方案

互联网上的TCP服务器面对的环境情况比企业私有的服务器要复杂很多。常见的针对tcp服务器的攻击有以下几种:

1. 伪造协议,导致服务器crash. 比如说某条命令的字段长度,协议最大规定是1024,伪造个4096的。

2. 伪造大的报文。比如说一个包有1024M这么大。

3. 消耗服务器资源。开大量的连接, 以龟速发送报文,比如说每分钟一个字节。

4

查看全文: http://www.udpwork.com/item/6195.html
|<<<1234>>>| 一共4页, 40条记录