摘要: 一个established tcp链接结束需要经过类似“3次握手”的过程,1 –---(fin)—> 21 <–—(ack)—21 <–—(fin)—21 –---(ack)—> 2在active close方(1)发出fin后,就进入fin_wait1,(1)在这个状态中等待来自(2)的反应,如果(2)回一个ack,则(1)进入fin_wait2,继续等待接下来的(2)发出的fin,收到之后直接回一个ack,进入time_wait状态,如果(2)此时也发了一个fin,则(1)回一个ack,并进入closing状态,只要(2)再来一个ack,就立马进入time_wait 阅读全文
posted @ 2013-01-05 17:16 donj 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 模块快开发完了,日志中出现了这个东东,看样子是文件描述符耗尽了, 但是奇怪的是,nginx一直halt在sigsuspend上,并且简单的返回静态页面是木有问题的, 看来是模块有bug, 从表现上看,像是建立的连接没有得到及时的释放,所以accept报告打开文件过多。 应该是在返回结果的部分,先加上ngx_http_finalize_request(r,NGX_OK)试试, 搞定。 ... 阅读全文
posted @ 2012-10-08 18:28 donj 阅读(654) 评论(0) 推荐(0) 编辑
摘要: 在rewriterule后加上参数[P] P表明force proxy,需要mod_proxy以及根据相应协议的proxy模块比如mod_http_proxy 实际上这个时候apache就充当了反向代理的功能。 “A reverse proxy is activated using the ProxyPass directive or the [P] flag to the RewriteR... 阅读全文
posted @ 2012-09-19 18:50 donj 阅读(914) 评论(0) 推荐(1) 编辑
摘要: 恩 需要获得上上自然周的日期 google了半天,也没找到解决办法 甚至没有对date –d 详细说明的文档 自己尝试了下,可以这么做 date -d "-2 week monday" 有空需要详细了解下 date -d的STRING参数规范 阅读全文
posted @ 2012-09-18 12:11 donj 阅读(1296) 评论(0) 推荐(0) 编辑
摘要: 1.创建表的语句: Create [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT col_comme... 阅读全文
posted @ 2012-09-12 18:14 donj 阅读(446) 评论(0) 推荐(0) 编辑
摘要: nginx中对POST数据的读取是异步进行的,也就是说你不必在content handler中等待数据读完然后返回。对客户端的响应是通过:ngx_http_send_header(r); ngx_http_output_filter(r,&out);两个调用完成,content handler的return并不意味着请求处理的完成。既然是异步调用,而且caller可以立即返回,那就意味着需要定义一个回调函数:typedef void (*ngx_http_client_body_handler_pt)(ngx_http_request_t *r)真正进行数据读取的是这个函数ngx_ht 阅读全文
posted @ 2012-09-07 17:21 donj 阅读(6668) 评论(1) 推荐(0) 编辑
摘要: 决定开始写技术日志。在写的过程中,会回忆自己的思考过程,可以锻炼自己的思维,沉淀积累。 阅读全文
posted @ 2012-08-31 12:08 donj 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 我会将开发中遇到的配置初始化问题记录下来,日后有时间会慢慢的整理起来 在开发中发现,自定义的create_loc_conf这个函数被调用了不止一次,于是通过打印堆栈结合源码进行了追踪,结果发现: 所有的调用都是从init_cycle这个函数作为入口点,这个函数做的事情如他的名字一样,初始化cycle结构体,这个结构体很重要,全程参与了配置文件的解析。nginx对配置文件的解析是状态机模式... 阅读全文
posted @ 2012-08-27 18:32 donj 阅读(1301) 评论(0) 推荐(0) 编辑
摘要: 用Linux经常可以看到终端,unix是一个支持多用户的操作系统,每个用户需要有一个输入输出的设备用来和操作系统系统打交道,这样的设备就叫终端,从功能上讲是字符型的输入输出设备,从语义上讲是给用户提供操作计算机的硬件接口。 每一个shell(广义上每一个进程)都有一个控制终端,这个shell的标准输入、输出、标准错误输出都是在这个控制终端上进行的。执行tty可以看到当前shell的控制终端,执行... 阅读全文
posted @ 2012-02-09 14:05 donj 阅读(2006) 评论(0) 推荐(0) 编辑
摘要: http://www.cnblogs.com/super119/archive/2011/03/26/1996099.html当有多个程序使用同一个共享库的时候,我们都知道,多个程序有多个进程,但是共享库在内存中只有一份。所以问题来了:如果我在共享库中定义了全局变量,那 么全局变量是不是也只有一份?如果是这样,那么当多个进程都在使用这个共享库的时候,就有问题了。比如:我们在共享库中定义了一个全局变量 server_inited,用来表示一个socket server是否已经启动成功了,如果这个变量是TRUE,那么,下次用户调用启动server的函数的时候,这个函数一check这个变量,... 阅读全文
posted @ 2011-10-19 13:46 donj 阅读(1212) 评论(0) 推荐(0) 编辑