10 2020 档案
摘要:读ngx 的一个问题? //这里应该再重新接收一次和NGINX一样,等待下一次循环(epoll)再进行,同时设置读写句柄,以便下次读取的时候直接进行握手 //单向认证四次握手过程还没有完成,需要继续握手 if (sslerr == SSL_ERROR_WANT_READ) { //# define
阅读全文
摘要:if (c->read->ready) { ngx_http_upstream_process_header(r, u); //读事件触发 准备处理http头部信息 return; } 向上游服务器发送数据完毕后就会检测是否收到上游服务器的响应: static void ngx_http_upstr
阅读全文
摘要:每次客户端有可读数据触发时,优先检测是否还有数据没有发送,如果有则发送数据,然后在读取client数据 //向后端发送请求的调用过程 //ngx_http_upstream_send_request_body->ngx_output_chain->ngx_chain_writer static ng
阅读全文
摘要:向上游服务器发送请求处理 static void ngx_http_upstream_send_request(ngx_http_request_t *r, ngx_http_upstream_t *u, ngx_uint_t do_write) //向上游服务器发送请求 当一次发送不完,通过ngx
阅读全文
摘要:代理模式数据流处理: //配置proxy_pass后,在 ngx_http_core_content_phase 里面指向该函数 /* 那么,当有请求访问到特定的location的时候(假设这个location配置了proxy_pass指令), 跟其他请求一样,会调用各个phase的checker和
阅读全文
摘要:valgrind的DRD和Helgrind 处理一个bug时,使用strace 发现线程死锁。 但是发生死锁的位置上下文怎样快速知道呢? 使用gdb 调试 打出调用栈,只能知道运行到此处发生死锁。但是是哪里开始出现死锁呢?? google搜索发现valgrind 的Helgrind可以解决 这个时候
阅读全文
摘要:这是对引擎strace 的结果,可以看到引擎在回复报文的时, 频繁的使用write 系统调用,报文内容可以看到就是一个http响应报文, 正常情况应该是只会调用一次write回复报文,但是实际情况是调用了多次write回复报文,根据http报文的响应头、响应行等依次回复报文。 所以优化方式: 将多次
阅读全文
摘要:CAS-Compare & Set,或是 Compare & Swap 现在cpu 都支持cas原子操作了, 比如x86下 对应的是CMPXCHG汇编指令有了它 我们来看下各种无锁队列数据结构 这个操作用C语言来描述就是下面这个样子:(代码来自Wikipedia的Compare And Swap)看
阅读全文
posted @ 2020-10-16 16:10
codestacklinuxer
摘要:https://linux.cn/article-9273-1.html https://lwn.net/Articles/365835/ Documentation/trace/events.txt trace/ftrace-design.txt 什么是 ftrace? ftrace 是一个 Li
阅读全文
摘要:一个网络报文从网卡接收到被应用处理,中间主要需要经历两个阶段: 阶段一:网卡通过其DMA硬件将收到的报文写入到收包队列中(入队)阶段二:应用从收包队列中读取报文(出队)由于目前正在使用vpp/dpdk 优化waf引擎的工作,所以就看看ixgbe网卡在dpdk框架下是怎么工作的。下面分别介绍一下 收包
阅读全文
摘要:vim 的insert data
阅读全文

浙公网安备 33010602011771号