随笔分类 -  网络编程

网络编程、协议
摘要:通常recv有几种返回值 1.==0 表示收到FIN包, 因为FIN包,是状态为标记为FIN的空包,没有携带数据,所以recv的长度为0 2.>0 表示收到了数据, 但是有没有收完,是不知道的 3.<0 1) == EAGAIN 表示接收缓冲区中已经没数据了,需要暂停下,业务程序需要检查下包的完整性 阅读全文
posted @ 2016-04-22 14:50 JinleiZhang 阅读(5625) 评论(0) 推荐(0)
摘要:结论: linux开启SO_LINGER时,如果设置l_linger为非0, 不管是阻塞socket,非阻塞socket, 在这里都会发生阻塞, 而并不是UNP所讲到的( 非阻塞socket会立即返回EWOULDBLOCK) 测试结果见这里 https://www.nybek.com/blog/20 阅读全文
posted @ 2016-04-22 14:42 JinleiZhang 阅读(2562) 评论(0) 推荐(0)
摘要:如何为业务选择数据库?可以从如下方面进行考虑1.成本(元/G) 开源 商业2.随机读写性能 1kb数据,mysql 读3w次/s,写6k次/s mongodb 读5w/s 写1w/s tc 读6w/写3w3.可维护性, (管理视图\监控\部署\发布工具\是否可以自动化)4.可扩展性, (分库\... 阅读全文
posted @ 2015-11-14 14:57 JinleiZhang
摘要:TCP三次握手时,服务端有 SYNC_RECVD, 和 ESTABLISHED 两个状态.SYNC_RECVD状态,对应未完成连接队列。ESTABLISHED状态, 对应已完成连接队列。基于以上知识,优化连接还可以修改如下参数:Syn等待队列查看:sysctl -a | grep tcp_max_s... 阅读全文
posted @ 2015-11-14 13:22 JinleiZhang
摘要:这篇文章跟优化没关系,主要是记录下线上的性能指标,以及一些想法。性能指标: 每秒钟可以处理xxx个包,每个包大小为yyy,是否开启加密, 使用哪种加密包大小(字节) 每秒处理速度(个/s) 是否加密 加密算法128 22w 不加密256 18w ... 阅读全文
posted @ 2015-11-14 13:15 JinleiZhang 阅读(158) 评论(0) 推荐(0)
摘要:可以使用的方法有:1.调整进程允许打开的最大连接数查看:ulimit -n修改:echo "ulimit -n 10240" >> /etc/profile; . /etc/profile; service ssh2 restart;2.监听等待队列:设置为允许打开的最大描述符查看:sysctl ... 阅读全文
posted @ 2015-11-14 12:54 JinleiZhang
摘要:RST的出现情况http://www.360doc.com/content/13/0702/10/1073512_297070665.shtml 阅读全文
posted @ 2015-10-09 20:32 JinleiZhang
摘要:参考链接:http://blog.csdn.net/yunhua_lee/article/details/8146837 阅读全文
posted @ 2015-10-09 20:29 JinleiZhang
摘要:可参考知乎上的回答, 记录备忘.http://www.zhihu.com/question/22840801处理EPOLLIN的时候,就可以往sockfd里写了(如果需要的话),只不过这时候,套接字如果是非阻塞的,缓冲区写满了,返回EAGAIN , 然而判断send(write/sendfile)返... 阅读全文
posted @ 2015-09-25 13:57 JinleiZhang 阅读(545) 评论(0) 推荐(0)