摘要:
http://blog.csdn.net/goldfighter/article/details/6150309 阅读全文
摘要:
直接看代码:162 for ( ;; ) {163 164 for (i = 0; i < 3; i++) { 165 hash = (hash * 113 + iphp->addr[i]) % 6271; //iphp->addr[i]为ip的点分十进制法的第i段166 }167 168 p = hash % iphp->rrp.peers->number;169 170 n = p / (8 * sizeof(uintptr_t));171 m = (uintptr_t) 1... 阅读全文
摘要:
今天发现nginx有不少的499错误,大约占了将近0.5%,而且是在新上线了一个含upstream的业务之后。grep一下nginx源码,定义在ngx_request_t.h/** HTTP does not define the code for the case when a client closed* the connection while we are processing its request so we introduce* own code to log such situation when a client has closed the connection* befo 阅读全文
摘要:
ngx获取时间有两个方法,一个是ngx_gettimeofday(),另一个是ngx_timeofday()。前者就是gettimeofday(),我们重点来分析一下后者。ngx_timeofday()的定义: #define ngx_timeofday() (ngx_time_t *) ngx_cached_time从名字上直观看出这是一个缓存时间。为何设置这个缓存时间呢?nginx对时间的操作很频繁,在很多地方有获取当前时间的需求,而实际上时间的获取并不一定要非常精确。这样,使用缓存,就能一定程度上大大降低调用gettimeofday()的时间消耗,而带来的时间误差在可接受范围。... 阅读全文
摘要:
现在还没有办法理清整个过程,分析的东西也比较局部。因此就当写在这自己记录一下,后续随着自己理解的加深可以更系统整理一下吧。// src/event/ngx_event_connect.c该文件主要只有一个函数 ngx_event_connect_peer(ngx_peer_connection_t *pc),该函数在以下几个地方被调用了:http/ngx_http_upstream.c, line 1103mail/ngx_mail_proxy_module.c, line 150mail/ngx_mail_auth_http_module.c, line 194可见,这个函数主要作用是ngi 阅读全文
摘要:
想好好啃啃nginx的代码。已经将网上容易找到的nginx源码分析系列粗略过了一遍,也开发过几个简单的nginx-module,接下来想要提升一个档次只能自己来啃代码了。//source: /src/event/ngx_event_timer.ctimer负责事件相关的计时功能,时间存储在一个RB-tree(红黑树)。【Tengine团队将rb-tree改为四叉最小堆,并声称有10%以上的性能提升,期待并后续学习】static ngx_rbtree_node_t ngx_event_timer_sentinel; //定义一个全局的rbtree根节点,该根节点只起到一个哨兵... 阅读全文