Skip to content

{ Monthly Archives } 五月 2008

通用排序服务器 续

代码地址: 通用排序服务器:http://code.google.com/p/fulin/source/browse/C++/cntsvr/sdp/?r=13 更新: 1. protocol 层增加缓冲区,以减少 pipeline 的次数。频繁的 pipeline 会因为锁争用的缘故导致性能严重下降。 2. 增加了一层 udp 转发的 so ,在进程之间也可以配置形成新的 pipeline 3. 增加了增量排序的实现:在 mcdb (memcachedb) 里保存快照,排序的 value 为总值减去快照值 4. 增量的时间单位是天,其他的增量,如周,月等,为日增量的合并排序的结果。当前使用 bash 脚本实现,脚本中使用 od ,awk ,sort 等工具。当前的实现由逻辑错误,各相同 id 的日增量没有合并 。(已合并) 5.  mcdb 安装,配置,rotate 脚本等此处暂时省略。 PS: Linux 2.6.9 内核的 syslog 真的很烂。 PS2:mcdb 在主库崩溃的时候,重启辅库,似乎会导致辅库也僵死。计划今天晚些时候重现一次。

squid 日志分析

  通过日志来查看 squid 的一些基本的运行状态: 1. access.log 配置语句: logformat combined %>a %ui %un [%tl] “%rm %ru HTTP/%rv” %Hs %<st “%{Referer}>h” “%{User-Agent}>h” %Ss:%Sh:%tr cache_access_log /data1/logs/access.log combined 打下的log格式为: 125.71.196.17 – – [14/May/2008:12:16:13 +0800] “GET http://you.video.sina.com.cn/b/13441121-1212188024.html HTTP/1.1″ 200 8820 “http://you.video.sina.com.cn/” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)” TCP_MEM_HIT:NONE:21089 可以通过脚本查看一些统计信息,如各种反应状态所占的比例,通常较好的情况下HIT所占的比例(应该就是所谓的命中率)可以在70%~80%

C/C++头文件一览

C、传统 C++ #include <assert.h>    //设定插入点 #include <ctype.h>     //字符处理 #include <errno.h>     //定义错误码 #include <float.h>     //浮点数处理 #include <fstream.h>    //文件输入/输出 #include <iomanip.h>    //参数化输入/输出 #include <iostream.h>   //数据流输入/输出 #include <limits.h>    //定义各种数据类型最值常量 #include <locale.h>    //定义本地化函数 #include <math.h>     //定义数学函数 #include <stdio.h>     //定义输入/输出函数 #include <stdlib.h>    //定义杂项函数及内存分配函数 #include <string.h>    //字符串处理 #include <strstrea.h>   //基于数组的输入/输出 #include <time.h>     //定义关于时间的函数 #include <wchar.h>     //宽字符处理及输入/输出 #include <wctype.h>    //宽字符分类 ////////////////////////////////////////////////////////////////////////// 标准 C++ (同上的不再注释) #include <algorithm>    //STL 通用算法 #include <bitset>     //STL 位集容器 #include <cctype> [...]

地震来时,你应该躲在哪里

地震来时,你躲在哪里?如果你依照小时候老师教我们的方法乖乖躲在桌子底下,床铺底下,那么,我必须告诉你,你的伤亡率,高达百分之九十八!!那该怎么办? 美国国际搜救队长教你正确的躲避位置。 道格卡普是美国国际搜救队长,自一九八五年至今,他及他的队员己参与全世界七十九次重大灾难的救灾工作,他曾经爬进近七百栋因为地震、爆炸而严重倒塌的建筑物内搜查受困的生还者以及罹难者的遗体。除了参与两年前日本神户大地震及美国俄克拉荷马市联邦大楼爆炸案救搜工作,十二年来国际新闻中的重大灾难救灾,他都没缺席。 本月十九日他离华前,传授在建筑物倒塌时如何求生。 国人从小到大,在防震演习中,老师总是叫学生躲在课桌下,道格得知这点后,很焦急地一再呼吁:不要躲在桌子、床铺下,而要以比桌、床高度更低的姿势,躲在桌子床铺的旁边。他以先前和土耳其go-vern-ment、大学合作拍制的地震逃生录像带,说明不要躲在桌下避震的道理。 透过土耳其go-vern-ment协助,制作单位爆破一栋废弃大楼,仿真地震时建筑物倒塌的情形,工作人员先依据「常识」,在桌子床铺等家具下,放置十具模特儿;他和他的搜救队员在桌子床铺等家具旁,同样放置十具模特儿,de-tona-tor引爆后大楼变成断坦残壁,他和搜救队员依序找到二十具模特儿,在桌床下的十具模特儿有八具被压成全毁,其中一具甚至头、身、脚断成三截;他放置的十具模特儿,则全部安好无事。 他解释,建筑物天花板因强震倒塌时,会将桌床等家具压毁,人如果躲在其中,后果不堪设想, 如果人以低姿势躲在家具旁,家具可以先受倒塌物品的力道,让一旁的人取得生存空间。 道格说,即使开车时遇到地震,也要赶快离开车子,很多地震时在停车场丧命的人,都是在车内被活活压死,在两车之间的人,却毫发未伤(此段话引述图片说明:强烈地震发生时,如果你正在停车场,千万不要留在车内,以免垮下来的天花板压扁汽车,造成伤害;应该以卧姿躲在车旁,掉落的天花压在车上,不致直接撞击人身,可能形成一块『生存空间』,增加存活机会)。 他很慎重地对在场的一百多位我国搜救队员说,搜救队员一要在地震中先能自己求得生存,只有活下来,才能拯救他人性命。他说,希望大家告诉大家,只要传播这么一点求生讯息,地震发生时,建筑物内的伤亡率,可以由百分之九十,遽降为百分之二。 请大家传阅,增加大家在灾难发生时的生存机率,减少伤害。

通用排序服务daemon

通用排序服务daemon,模型示例。 情景描述: 1. 需要排序的数据以 key=>value 的形式组织 2. 数据随时到达,尽可能的做到实时排序 3. 只需保留 Top n 的数据 典型应用:各种排行榜,搜索排行,点击排行等等 算法细节: 1. 数据使用 udp 包传送 (示例中还没有加上网络操作部分) 2. mmap 内存到文件。daemon 只负责排序部分的工作,输出排序结果由其他程序读取文件完成 3. 使用结构体数组存储 Top n 的已排序部分 4. 新数据到达时,使用插入排序 Todo list: 1. 增加网络接收部分 2. 增加网络输出 daemon 3. 使用链表存储 Top n ,方便插入排序。当需要输出时使用另外一个线程或子进程将链表拷贝到 mmap 内存区 4. 多 domain 测试 5. 支持 name 为字符串的情况,key 为 name [...]

TCP 相关参数解释

For Linux 2.6 原文:http://www.cnblogs.com/OnlyXP/archive/2007/09/29/911269.html tcp_syn_retries :INTEGER 默认值是5 对于一个新建连接,内核要发送多少个 SYN 连接请求才决定放弃。不应该大于255,默认值是5,对应于180秒左右时间。(对于大负载而物理通信良好的网络而言,这个值偏高,可修改为2.这个值仅仅是针对对外的连接,对进来的连接,是由tcp_retries1 决定的) tcp_synack_retries :INTEGER 默认值是5 对于远端的连接请求SYN,内核会发送SYN + ACK数据报,以确认收到上一个 SYN连接请求包。这是所谓的三次握手( threeway handshake)机制的第二个步骤。这里决定内核在放弃连接之前所送出的 SYN+ACK 数目。不应该大于255,默认值是5,对应于180秒左右时间。(可以根据上面的tcp_syn_retries来决定这个值) tcp_keepalive_time :INTEGER 默认值是7200(2小时) 当keepalive打开的情况下,TCP发送keepalive消息的频率。(由于目前网络攻击等因素,造成了利用这个进行的攻击很频繁,曾经也有cu的朋友提到过,说如果2边建立了连接,然后不发送任何数据或者rst/fin消息,那么持续的时间是不是就是2小时,空连接攻击?tcp_keepalive_time就是预防此情形的.我个人在做nat服务的时候的修改值为1800秒) tcp_keepalive_probes:INTEGER 默认值是9 TCP发送keepalive探测以确定该连接已经断开的次数。(注意:保持连接仅在SO_KEEPALIVE套接字选项被打开是才发送.次数默认不需要修改,当然根据情形也可以适当地缩短此值.设置为5比较合适) tcp_keepalive_intvl:INTEGER 默认值为75 探测消息发送的频率,乘以tcp_keepalive_probes就得到对于从开始探测以来没有响应的连接杀除的时间。默认值为75秒,也就是没有活动的连接将在大约11分钟以后将被丢弃。(对于普通应用来说,这个值有一些偏大,可以根据需要改小.特别是web类服务器需要改小该值,15是个比较合适的值) tcp_retries1 :INTEGER 默认值是3 放弃回应一个TCP连接请求前﹐需要进行多少次重试。RFC 规定最低的数值是3﹐这也是默认值﹐根据RTO的值大约在3秒 – 8分钟之间。(注意:这个值同时还决定进入的syn连接) tcp_retries2 :INTEGER 默认值为15 在丢弃激活(已建立通讯状况)的TCP连接之前﹐需要进行多少次重试。默认值为15,根据RTO的值来决定,相当于13-30分钟(RFC1122规定,必须大于100秒).(这个值根据目前的网络设置,可以适当地改小,我的网络内修改为了5) tcp_orphan_retries :INTEGER 默认值是7 在近端丢弃TCP连接之前﹐要进行多少次重试。默认值是7个﹐相当于 50秒 – 16分钟﹐视 RTO 而定。如果您的系统是负载很大的web服务器﹐那么也许需要降低该值﹐这类 sockets 可能会耗费大量的资源。另外参的考 tcp_max_orphans [...]

Linux iptables Man 翻译

转自:tpxcer的空间 http://hi.baidu.com/tpxc ps. 顺便做抓虾验证: {ZHUAXIA3c51521f96f54f3fcb53c6a7b30f7947Union} 用iptables -ADC 来指定链的规则,-A添加 -D删除 -C 修改 iptables – [RI] chain rule num rule-specification[option] 用iptables – RI 通过规则的顺序指定 iptables -D chain rule num[option] 删除指定规则 iptables -[LFZ] [chain][option] 用iptables -LFZ 链名 [选项] iptables -[NX] chain 用 -NX 指定链 iptables -P chain target[options] 指定链的默认目标 iptables -E old-chain-name new-chain-name -E 旧的链名 新的链名 用新的链名取代旧的链名 说明 [...]

Linux iptables Man 翻译

转自:tpxcer的空间 http://hi.baidu.com/tpxc ps. 顺便做抓虾验证: {ZHUAXIA3c51521f96f54f3fcb53c6a7b30f7947Union} 用iptables -ADC 来指定链的规则,-A添加 -D删除 -C 修改 iptables – [RI] chain rule num rule-specification[option] 用iptables – RI 通过规则的顺序指定 iptables -D chain rule num[option] 删除指定规则 iptables -[LFZ] [chain][option] 用iptables -LFZ 链名 [选项] iptables -[NX] chain 用 -NX 指定链 iptables -P chain target[options] 指定链的默认目标 iptables -E old-chain-name new-chain-name -E 旧的链名 新的链名 用新的链名取代旧的链名 说明 [...]