最新 | 最热门 | 最高评价

+0  Unix Domain Socket – IPC通信机制

Tag: Linux | 服务器 | 网络编程
郑 纪 发于 2013年06月17日 22:52 | 点击: 3623 | 展开摘要
什么是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  SIP报文Via和Contact的区别

Tag: 网络编程 | SIP | VoIP
ideawu 发于 2017年06月16日 18:54 | 点击: 3589 | 展开摘要
Via 是网络层的信息,SIP 报文将通过网络层发往这两个地址。Contact 是业务上的地址。那么问题是,应该发往哪个?

正确的做法是,请求响应模式中的响应发往 Via。如果解析 DNS 之后能直连 Contact,那么之后的报文(无论是否是请求响应模式)发往 Contact。

请求如果经过多个代理,每个代理都增加自己的 Via,变成 Via 列表。最终节点回复响应时,带有全部 Via 列表,根据最后一个 Via 获知要发送的目的网络地址。每个代理转发响应时,把最后一个

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

+0  来自RHEL系统调优手册的几张经典图

Tag: 杂七杂八 | 网络编程
Yu Feng 发于 2010年07月20日 09:46 | 点击: 3289 | 展开摘要
看图不说话:)

IO架构图:

内存管理图:

很容易误解的socket buffer:

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

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

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

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

我们知道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 | 点击: 2503 | 展开摘要
原创文章,转载请注明: 转载自Erlang非业余研究

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

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

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

Mysql QPS

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

+0  Systemtap辅助设置tcp_init_cwnd,免对操作系统打Patch

Tag: Linux | 工具介绍 | 杂七杂八 | 网络编程 | staprun | systemtap
Yu Feng 发于 2011年03月21日 16:47 | 点击: 2492 | 展开摘要
原创文章,转载请注明: 转载自Erlang非业余研究

本文链接地址: Systemtap辅助设置tcp_init_cwnd,免对操作系统打Patch

前段时间google的工程师提出对tcp的拥塞窗口的初始值进行增大可以显著的提高http的性能,这个主要是针对tcp的slow start的优化.

具体参考这里, 这里. 谢谢叔度同学从美国带回第一手信息!

由于低版本的linux内核的问题,这个参数的正确设置需要对os打patch,这个过程对线上机器来讲非常麻烦。 底

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

+0  KCP同 UDT/ENET的性能比较

Tag: 网络编程 | KCP | 网络
skywind 发于 2016年02月18日 23:02 | 点击: 2446 | 展开摘要
如果不丢包那么 KCP(https://github.com/skywind3000/kcp)和 TCP性能差不多,KCP不会有任何优势,但是网络会卡,造成卡的原因就是丢包和抖动,有同学在内网这样好的环境下没有用任何丢包模拟直接跑,跑出来的数据是差不多的,但是放到公网上,放到3G/4G网络情况下,差距就很明显了,公网在高峰期有平均接近10%的丢包,wifi/3g/4g下更糟糕,这正是造成各种网络卡顿的元凶。

感谢 asio-kcp 的作者 zhangyuan 对 KCP 与

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

+0  分布式处理框架-Gearman

Tag: Go | python | 服务器 | 网络编程 | Python | 分布式
郑 纪 发于 2013年06月20日 11:59 | 点击: 2316 | 展开摘要
近日折腾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  非阻塞connect的一个细节

Tag: Erlang探索 | 网络编程 | connect | SOL_SOCKET | SO_ERROR
Yu Feng 发于 2010年05月18日 13:04 | 点击: 2278 | 展开摘要
昨天听zhuzhaoyuan说的一个connect细节. 通常我们connect的时候都是非阻塞的, 在connect调用后把句柄挂到poll去, 等poll通知可写的时候, 我们就认为connect成功了. 但是在linux平台下实际上不一定成功, 具体的要用socket get_opt来检查下出错码来决定.

以下是从man 2 connnect摘抄的:

EINPROGRESS

The socket(2,7,n) is non-block

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

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

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

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

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

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

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

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

4

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

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

Tag: Erlang探索 | 网络编程 | enfile | gdb | systemtap
Yu Feng 发于 2011年12月05日 12:16 | 点击: 2024 | 展开摘要
原创文章,转载请注明: 转载自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  未公开的gen_tcp:unrecv以及接收缓冲区行为分析

Tag: Erlang探索 | Linux | 工具介绍 | 数据库 | 杂七杂八 | 源码分析 | 生活 | 网络编程 | 调优
Yu Feng 发于 2011年10月06日 21:58 | 点击: 1921 | 展开摘要
原创文章,转载请注明: 转载自Erlang非业余研究

本文链接地址: 未公开的gen_tcp:unrecv以及接收缓冲区行为分析

原创文章,转载请注明: 转载自Erlang非业余研究

本文链接地址: 未公开的gen_tcp:unrecv以及接收缓冲区行为分析

gen_tcp:unrecv是个未公开的函数,作用是往tcp的接收缓冲区里面填入指定的数据。别看这小小的函数,用起来很舒服的。

我们先看下它的代码实现,Erlang代码部分:

%%gen_tcp.erl:L2

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