08 2020 档案
摘要:目的 找出系统性能瓶颈(包括硬件瓶颈和软件瓶颈); 提供性能优化的方案(升级硬件?改进系统系统结构?); 达到合理的硬件和软件配置; 使系统资源使用达到最大的平衡。 CPU过渡使用会造成大量进程等待CPU资源,系统响应变慢,等待会造成进程数增加,进程增加又会造成内存使用增加,内存耗尽又会造成虚拟内存
阅读全文
摘要:怎么分析理解 uptime 以及top 中的cpu Load Average 最后三个数字依次表是过去 1 分钟、5 分钟、15 分钟的平均负载(Load Average) Load Average:什么意思呢?? >是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数
阅读全文
摘要:在餐馆吃饭时,连接无线网络后访问某网页会自动弹出一个认证页面,我想大家都经历过。。。。。 其网络拓扑如下: sta 网络设备 公网 比如sta 终端ip 是100.100.100.100 访问百度,但是按道理应该返回百度啊?那怎么返回的是 认真页面呢?这里面涉及到报文拦截 。 当sta 的报文经过网
阅读全文
摘要:今天在新入职的公司处理waf 的问题时,突然看到了一个tcp状态close-wait 想一想 close-wait 是怎样产生的???? 被动收到FIN 关闭请求,协议栈主动发出ACK, 等待 本端主动发出 FIN,但是本端一直没有执行CLOSE。也就是在被动关闭连接情况下,在已经接收到FIN,但是
阅读全文
摘要:Golang的指定类型的变量的类型是静态的(也就是指定int、string这些的变量,它的type是static type),在创建变量的时候就已经确定,有静态那么有没有动态呢?? 说起动态目前也就只能想起 接口Interface;在Golang的实现中,每个interface变量都有一个对应pai
阅读全文
摘要:查一个问题:结果看了一下软中断以及系统 所耗cpu,心中满是伤痕啊 perf 结果一眼可以看到:主要是锁 那么这个lock 是用来干什么的呢?? A:TCP socket的使用者有两种:进程(线程)和软中断。同一时间可能会有两个进程(线程),或位于不同CPU的两个软中断,或进程(线程)与软中断访问同
阅读全文
摘要:https://cloud.tencent.com/developer/article/1150971 前言 说到TCP协议,相信大家都比较熟悉了,对于TCP协议总能说个一二三来,但是TCP协议又是一个非常复杂的协议,其中有不少细节点让人头疼点。本文就是来说说这些头疼点的,浅谈一些TCP的疑难杂症。
阅读全文
摘要:skb_shinfo(head)->frag_list skb_shinfo(head)->frags[]能区分开来吗???结论就是: frags[] are for scatter-gather i/o buffers --nr_frags 和 frags 用于支持 Scatter/Gather
阅读全文
摘要:网络报文接收流程所涉及的内容很多,如报文vlan 单播组播等过滤、mac层卸载、报文接收描述符、校验和卸载以及分离报文有效载荷和头部等,具体内容需要看 网卡datasheet, 以82599 网卡为例:http://www.intel.com/content/www/us/en/embedded/p
阅读全文
摘要:如何优雅的关闭关闭这个fd , 如果只是一个简单的fd 直接调用close 就行, 但是如果要是一个框架 那就接到 资源回收复用 内存泄漏等问题; 来看看 ngx 是用怎样的思路处理 事务结束动作; 每个HTTP请求都有一个引用计数,每派生出一种新的会独立向事件收集器注册事件的动作时(如ngx_ht
阅读全文
摘要:在解析完 http 请求报文后, 需要发出响应报文, 那么ngx 框架 提供了那些通用接口呢?如果自己设计将所用的模块的响应接口合并起来 你会怎么设计呢?? 响应头过滤函数主要的用处就是处理HTTP响应的头,可以根据实际情况对于响应头进行修改或者添加删除。 响应头过滤函数先于响应体过滤函数,而且只调
阅读全文
摘要:HTTP 处理数据包, 有的业务不需要,此时只需要将数据包文读取后丢弃, 但是ngx 为什么还要提供一个丢弃接口呢???解决了什么问题?? 对于HTTP模块而言,放弃接收包体就是简单地不处理包体了,可是对于HTTP框架而言,并不是不接收包体就可以的。因为对于客户端而言,通常会调用一些阻塞的发送方法来
阅读全文
摘要:HTTP包体的长度有可能非常大,不同业务可能对包体读取 处理不相同, 比如waf, 也许会读取body内容或者只是读取很少的前几十字节。所以根据不同业务特性,对http body 数据包处理方式不同,nginx核心本身不会主动读取请求体,这个工作是交给请求处理阶段的模块处理,ngx 里面目前提供了接
阅读全文
摘要:在处理完http的头部信息后 然后在 处理request-body信息ngx_http_process_request ngx_http_process_request_headers(ngx_http_process_request_header)头部行解析完毕后调用函数ngx_http_proc
阅读全文
摘要:简要而说:accept 到连接后 根据fd 构建一个connection 由于是 http ; 重新封装为http-connection;同时设置fd的读回调; 回调函数根据是否是https/http 进行区别 ngx_http_init_connection(ngx_connection_t *c
阅读全文
摘要:首先看下 连接池的获取以及释放 ngx_connection_t * ngx_get_connection(ngx_socket_t s, ngx_log_t *log) //从连接池中获取一个ngx_connection_t { ngx_uint_t instance; ngx_event_t *
阅读全文
摘要:init段 程序初始化入口代码,在main()之前运行。 bss段 BSS段属于静态内存分配。通常是指用来存放程序中未初始化的全局变量和未初始化的局部静态变量。未初始化的全局变量和未初始化的局部静态变量默认值是0,本来这些变量也可以放到data段的,但是因为它们都是0,所以它们在data段分配空间并
阅读全文
摘要:尝试获取锁,如果获取了锁,那么还要将当前监听端口全部注册到当前worker进程的epoll当中去 获取失败就需要确保此时ls-fd 没有被 epoll 监听 ngx_int_t ngx_trylock_accept_mutex(ngx_cycle_t *cycle) { if (ngx_shmtx_
阅读全文
摘要:static void ngx_cache_manager_process_cycle(ngx_cycle_t *cycle, void *data) { /* * Set correct process type since closing listening Unix domain socket
阅读全文
摘要:网络设备一次能够传输的最大数据量就是MTU,即IP传递给网络设备的每一个数据包不能超过MTU个字节,IP层的分段和重组功能就是为了适配网络设备的MTU而存在的。从理论上来讲,TCP可以不关心MTU的限定,只需要按照自己的意愿随意的将数据包丢给IP,是否需要分段可以由IP透明的处理,但是由于TCP是可
阅读全文
摘要:http://www.cnhalo.net/2016/09/13/linux-gro/ GRO(Generic receive offload): 在napi poll里把小包封装成大包再递交给协议栈 LRO: GRO的硬件实现(通过网卡的RSC功能) http://lwn.net/Articles
阅读全文
摘要:1、connection 字段 2、accept 字段 3、user-agent 字段 4、host字段 等字段需要注意: HTTP事务的延时主要有以下:1).解析时延 DNS解析与DNS缓存 客户端首先需要根据URL确定Web服务器的IP地址和端口号,如果最近没有对URL中的主机名进行访问,通过D
阅读全文
摘要:/* * Main IP Receive routine. */ int ip_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt, struct net_device *orig_dev) { const
阅读全文
摘要:今天 顺便看了一下 ifconfig ip ethtool 工具的strace 结果 ; 发现其实就是 创建一个 socket-fd 然后 指定接口名, 然后设置 /获取 相关属性 也就是通过 ioctl netlink 接口 获取设置信息 看下网络设备结构: 目前ioctl 源码在:fs/ioct
阅读全文

浙公网安备 33010602011771号