记一次性能优化,单台4核8G机器支撑5万QPS
admin 8年前(2019-02-06) 1浏览
前言 这篇文章的主题是记录一次Python程序的性能优化,在优化的过程中遇到的问题,以及如何去解决的。为大家提供一个优化的思路,首先要声明的一点是,我的方式不是唯一的,大家在性能优化之路上遇到的问题都绝对不止一个解决方案。 如何优化 首先大家要明确的...
admin 8年前(2019-02-06) 1浏览
前言 这篇文章的主题是记录一次Python程序的性能优化,在优化的过程中遇到的问题,以及如何去解决的。为大家提供一个优化的思路,首先要声明的一点是,我的方式不是唯一的,大家在性能优化之路上遇到的问题都绝对不止一个解决方案。 如何优化 首先大家要明确的...
admin 8年前(2018-07-05) 2浏览
正常TCP建连接三次握手过程: 第一步:client 发送 syn 到server 发起握手; 第二步:server 收到 syn后回复syn+ack给client; 第三步:client 收到syn+ack后,回复server一个ack表示收到了s...
admin 8年前(2018-07-05) 1浏览
1. SYN Flood介绍 前段时间网站被攻击多次,其中最猛烈的就是TCP洪水攻击,即SYN Flood。 SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的...
admin 8年前(2018-07-05) 1浏览
2013年12月14发布的PHP5.5.6中,changelog中有一条变更, FPM: Changed default listen() backlog to 65535. 这条改动,是在10月28日改的,见increase backlog to ...
admin 8年前(2018-07-05) 1浏览
概述 之前有同事做压力测试时,发现无论如何都无法突破128并发的问题,经排查发现该服务器ACCEPT QUEUE队列都为128,限制了网络的并发。 TCP三次握手 Linux内核协议栈为一个TCP连接管理使用两个队列,一个是半链接队列SYN QUEU...
admin 9年前(2017-10-31) 1浏览
如果出现 SYN 丢包,那么将导致严重的性能问题,如果没有严重到完全连不上,那么在延迟时间上会表现出明显的时间特征,比如:1秒,3秒,7秒,15秒,31秒,具体可以参考:「SYN和RTO」,本文不说这个,就说说哪些情况会出现 SYN 丢包。 SYN ...
admin 9年前(2017-10-31) 1浏览
The story of one latency spike,文章中介绍了 cloudflare 工程师如何一步一步 debug 网络延迟问题,细细读来受益良多,不过我并不打算详细介绍那篇文章的细枝末节, 本文只摘录一个点: When debuggi...
admin 9年前(2017-07-24) 0浏览
今天编程序的偶然遇到了一点问题,然后小研究了一下,发现一些以前不知道的事情,还有点小吃惊 ,记录一下。有些观点可能有问题,求指正。 我们都知道listen参数有个参数backlog。如果服务器不能及时调用accept,把连接从listen queue...
admin 9年前(2017-07-24) 0浏览
最近在总结2.6.32与2.6.18的差异,我特别有兴趣的是网络部分,但猛然发现其实SNMP counters我也并不能准确解释它们的含义,于是就有了以下总结,还不完整,持续总结中: 加粗的项代表TODO,还有一些counters没有列出来。 难免有...
admin 9年前(2017-07-24) 0浏览
继续讲述/proc/net/netstat, /proc/net/snmp中TCP的故事。 TCP Congestion Processing 类别 名称 描述 TcpExt TCPDSACKUndo tcp_ack() -> tcp_fast...
admin 9年前(2017-07-24) 0浏览
问题 我们在Linux上服务器起了一个serversocket,并且设置了backlog为2,并没有让serversock.accept() 在客户端上,我们一个一个的启动了连接socket, 当连接数目超过3的时候,客户端依然可以继续新建连接。 什...
admin 9年前(2017-07-24) 0浏览
三次握手 ListenOverflows root@b5dbe93bcb04:/opt# netstat -s | grep listen 22438 times the listen queue of a socket overflowed tcp...
admin 9年前(2017-07-10) 0浏览
TCP连接的建立和终止 TCP连接建立过程 三次握手 TCP连接建立过程需要经过三次握手,如图所示,三次握手的具体过程如下: 客户端发送SYN包,指明打算连接的服务器端口,以及初始序号ISN(SYN包占用一个序号,seq=X,SYN) 服务端收到客户...
admin 9年前(2017-06-12) 1浏览
最近发现一个PHP脚本时常出现连不上服务器的现象,调试了一下,发现是TIME_WAIT状态过多造成的,本文简要介绍一下解决问题的过程。 遇到这类问题,我习惯于先用strace命令跟踪了一下看看: shell> strace php /path/...
admin 9年前(2017-06-06) 0浏览
在LVS的FULLNAT转发模式下, LVS对数据包同时做SNAT和DNAT,将数据包的源IP、源端口更换为LVS本地的IP和端口,将数据包的目的IP和目的端口修改为RS的IP和端口,从而不再依赖特定网络拓朴转发数据包。 这种方式存在一个问题: Re...
admin 10年前(2016-09-24) 1浏览
所谓 CLOSE_WAIT,借用某位大牛的话来说应该倒过来叫做 WAIT_CLOSE,也就是说「等待关闭」,如果你还不理解其含义,可以看看 TCP 关闭连接时的图例: TCP Close 不要被图中的 client 和 server 所迷惑,你只要记...
admin 10年前(2016-09-10) 0浏览
前些天,有朋友问我关于 FIN_WAIT2 的问题:如果主动关闭的一方在进入 FIN_WAIT2 状态后没有收到被动关闭的一方发送的 FIN 包,那么会怎样? 让我们热热身,通过一张旧图来回忆一下 TCP 关闭连接时的情况: TCP Close 按照...
admin 10年前(2016-07-08) 1浏览
TCP/IP协议栈其实当然不止有TCP和IP两个协议,但以这两个协议作为这个协议栈的统称,足以体现出其在TCP/IP协议栈中的重要性,正是因为有了IP协议,才使得不同网络间可以进行通信。当然要提及IP协议,其实还需要分析与其相关的配套协议,如ICMP...
admin 10年前(2016-07-08) 0浏览
TCP的连接和终止 TCP是一个面向连接的协议。在传输数据前必须要建立连接,在停止传输数据后要终止连接释放资源。 一.TCP连接建立 TCP连接是在IP网络中两个进程间(应用层协议)的双向、全双工的逻辑回路。由节点的IP地址和端口将连接双方对应起来。...
admin 10年前(2016-03-24) 0浏览
本文将给出25个iptables常用规则示例,这些例子为您提供了些基本的模板,您可以根据特定需求对其进行修改调整以达到期望。 格式 iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型] 参数 -P 设置默认策略:iptabl...
admin 10年前(2016-03-24) 0浏览
Apr 23 22:43:21 rs1 kernel: […] Out of socket memory 两种情况会出发 “Out of socket memory” 的信息: 1.有很多的孤儿套接字(orphan sockets) 2.tcp so...
admin 11年前(2015-11-26) 1浏览
进程和线程究竟是什么东西?传统网络服务模型是如何工作的?协程和线程的关系和区别有哪些?IO过程在什么时间发生? 在刚刚结束的 PyCon2014 上海站,来自七牛云存储的 Python 高级工程师许智翔带来了关于 Python 的分享《Python中...
admin 11年前(2015-11-24) 0浏览
在数据中心网络内,机器之间数据传输的往返时间(rtt)一般在10ms以内,为此调内部服务的超时时间一般会设置成50ms、200ms、500ms等,如果在传输过程中出现丢包,这样的服务超时时间,tcp层有机会发现并重传一次数据么?如果设置成200ms以...
admin 11年前(2015-08-25) 0浏览
nf_conntrack 工作在 3 层,支持 IPv4 和 IPv6,而 ip_conntrack 只支持 IPv4。目前,大多的 ip_conntrack_ 已被 nf_conntrack_ 取代,很多 ip_conntrack_* 仅仅是个 a...
admin 11年前(2015-07-08) 3浏览
操作系统是 Linux RHEL 5.3,在dmesg的输出中发现很多类似的报错信息: Out of socket memory printk: 8 messages suppressed. 从网上搜了一下,发现两篇不错的解释这个错误的文章,综合一下...
admin 11年前(2015-07-08) 2浏览
I recently did some work on some of our frontend machines (on which we run Varnish) at StumbleUpon and decided to track down ...
admin 11年前(2015-07-08) 0浏览
对于一个server,我们一般考虑他所能支撑的qps,但有那么一种应用, 我们需要关注的是它能支撑的连接数个数,而并非qps,当然qps也是我们需要考虑的性能点之一。这种应用常见于消息推送系统,也称为comet应用,比如聊天室或即时消息推送系统等。c...
admin 11年前(2015-07-08) 2浏览
在redhat网站查到下面的信息,说是因为内存不够的原因。我觉得这个可以当作出现这个问题的解释,但是却解释得不够“完美”,我仍旧还在疑惑中:如果是是因为内存不够的原因,那么在每次测试之前,只要保证机器状态一样,那么TCP: time wait buc...
admin 11年前(2015-05-30) 0浏览
按照题主的意思 是根据内存去算一个最大并发的连接数. 那么首先要找出来单个连接消耗内存的地方. 第一个首先是socket buffer. read 和write 分别有一个, 默认大小在 /proc/sys/net/ipv4/tcp_rmem (fo...
admin 11年前(2015-05-27) 0浏览
TCP连接的状态图 TCP建立连接的三次握手过程,以及关闭连接的四次握手过程 贴一个telnet建立连接,断开连接的使用wireshark捕获的packet截图。 1、建立连接协议(三次握手)(1)客户 端发送一个带SYN标志的TCP报文到服务器。这...