Oknet's network diary
内容
  •  
    2007-06-20 00:08:29
     最近在写自己的 CacheServer 发现 Etag 标准不统一,而且针对 Cache 以及Load Balance来说需要特别的设定
     
    Apache 规定 Etag 由 [inode]-[mtime]-[size]
    Sun 去掉了[inode],仅保留 [mtime]-[size]
    Lighttpd 定义 Etag = [inode]-[size]-[mtime]
     
    在Apache 2.0开始 Etag 可以由用户自定义,在以上3个参数中选择
     
    如果我们的使用了一组负载均衡的webserver提供服务,如果采用 Etag=[inode]-[mtime]-[size]的方式,那么很有可能,每台服务器输出的Etag都是不同的
     
    因为我们无法保证同一个文件在每台服务器上的 inode 都一样。
     
    这样Cache如果通过Etag判断文件是否被更新过,很可能就会遇到问题
     
    所以Sun去掉了inode是有考虑的,Apache 2.0提供了更灵活的方式
     
    因此如果做了负载均衡的兄弟们,在Apache 2.x上用FileEtag设置一下你的Etag吧,去掉 inode 元素,以提供对Cache的友好化
  •  
    2007-06-12 16:48:16
     
    Linux 2.6.19 rc3 给我们带来了2个NB的东西: tee , splice
    根据 Linus 在论坛中所说sendfile可以下岗了
     
    于是俺写了个HTTP Server用于处理静态文件,采用了Multi-Thread(MT), Multi-Process(MP)两种框架,使用sendfile输出静态文件,使用mmap实现filecache,并加速sendfile,基于Linux 2.6.18 Debian的系统进行了测试,autobench + httperf 输出的测试结果如下:
     
     
     
  •  
    2007-03-22 02:38:37

    中国网通各省IP数量(*表示北方10省)
    mysql> select province, sum(n) as total from iprange where country='CN' and isp=1 group by province order by total;
    +----------+---------+
    | province | total   |
    +----------+---------+
    | 西藏     |    8192 |
    | 青海     |   16384 |
    | 甘肃     |   24576 |
    | 江西     |   32768 |
    | 宁夏     |   40960 |
    | 湖南     |   65536 |
    | 海南     |   81920 |
    | 贵州     |   81920 |
    | 湖北     |   90112 |
    | 云南     |   98304 |
    | 广西     |   98304 |
    | 新疆     |  106496 |
    | 福建     |  124928 |
    | 安徽     |  131072 |
    | 上海     |  131072 |
    | 四川     |  143360 |
    | 陕西     |  204524 |
    | 内蒙     |  299008 |*
    | 重庆     |  417792 |
    | 江苏     |  590848 |
    | 广东     |  691968 |
    | 山西     |  884736 |*
    | 浙江     | 1146880 |
    | 天津     | 1212416 |*
    | 未知**   | 1226260 |
    | 吉林     | 1343488 |*
    | 黑龙江   | 1523712 |*
    | 辽宁     | 1933312 |*
    | 河北     | 2211840 |*
    | 河南     | 2801664 |*
    | 山东     | 3112960 |*
    | 北京     | 3145456 |*
    +----------

  •  
    2007-03-22 02:38:14
    中国IP地址库,各ISP地址数量
    mysql> select isp, isp.short, isp.name, sum(n) as total, round(100*sum(n)/107059712,2) as 'pct%' from iprange left join isp on iprange.isp=isp.id where country='CN' group by isp order by total;
    +------+----------+----------------+----------+-------+
    | isp  | short    | name           | total    | pct%  |
    +------+----------+----------------+----------+-------+
    |   24 | CN.Other | 国内其他       |      256 |  0.00 |
    |   46 | CN.Other | 国内其他       |      512 |  0.00 |
    |   27 | CN.Other | 国内其他       |     1024 |  0.00 |
    |   37 | CN.Other | 国内其他       |     2048 |  0.00 |
    |   31 | CN.Other | 国内其他       |     2048 |  0.00 |
    |   36 | CN.Other | 国内其他       |     2048 |  0.00 |
    |   25 | CN.Other | 国内其他       |     2048 |  0.00 |
    |   40 | CN.Other | 国内其他       |     4096 |  0.00 |
    |   42 | CN.Other | 国内其他       |     4096 |  0.00 |
    |   32 | CN.Other | 国内其他       |     4096 |  0.00 |
    |   33 | CN.Other | 国内其他       |     4096 |  0.00 |
    |   41 | CN.Other | 国内其他     &nb
  •  
    2007-03-22 02:34:38

    如对一下数据有异议,可查阅2007/01公布的最新CNNIC调查报告
        http://tech.sina.com.cn/i/2007-01-22/16341347347.shtml

    **以下数据来源于VIACDN全球NIC数据挖掘系统V2.0 beta1数据库
    中国国内未整理数据占中国国内IP总数据量的8.38%

    全球各国IP地址数量
    mysql> select country, sum(n) as total from iprange group by country order by total;
    +---------+------------+
    | country | total      |
    +---------+------------+
    | GD      |        256 |
    | LC      |        256 |
    | GW      |       1024 |
    | VG      |       1024 |
    | NU      |       1024 |
    | LR      |       1024 |
    | NF      |       1280 |
    | GF      |       2048 |
    | CF      |       2048 |
    | KN      |       2048 |
    | FM      |       2048 |
    | GP      |       2048 |
    | CD      |       2048 |
    | BI      |       2304 |
    | KI      |       3072 |
    | MW      |       3072 |
    | IO      |&nbs

  •  
    2007-01-27 16:27:06
    一直用网通的ADSL,有时候输入一个不存在的域名,IE会自动跳转到一个页面,一直不清楚是怎么实现的哈
     
    最近在研究 BIND 9 的 view 功能,发现 view 功能有很多不合理的地方啊
     
    1. 只能命中一个 view
    2. 没有为 view 定义权重属性
    3. 没有 fallback 功能
     
    等有空了研究一下 BIND 9 的代码...
  •  
    2007-01-27 16:24:56
    最近 diskd 部分的代码连续被patch了几个版本,但是就目前的修正来说,race 应该仍然存在,因此仍然不推荐使用 diskd,还是 aufs 吧~~
     
    不过 diskd 的几个patch上去之后,只要负载不高,稳定性已经提高不少,要是负载比较高,还是不稳定
  •  
    2007-01-12 09:28:51
    为什么需要 面向CacheServer的基于Object的Load Balance?
     
    首先定义几个符号:
    M 一个域名下所有内容的总字节数
    Hot(M) 一天内被访问到的每一个不同Object的字节数加和
    C 单台CacheServer的CacheDisk的总字节数
     
    问题:当 Hot(M) > C 的时候,会出现什么样的后果?
    答案:CacheServer在一天内的平均命中率将降低为 C/Hot(M)*100%
     
    问题:当出现 Hot(M) > C 的时候,怎么办?
    答案:
        1. 将 M 平均拆分为多个域名,用多组CacheServer服务不同域名
        2. 扩充 CacheDisk 提高 C
        3. 使用面向CacheServer的基于Object的Load Balance
     
     
    面向CacheServer的基于Object的Load Balance的实现
    简单可行的方案:基于Object Hash(Url)的Load Balance方案:Lighttpd+Squid
     
    Lighttpd的mod_proxy可以实现基于Hash(Url)的负载均衡规则
    采用Lighttpd架在Squid前面的这种链式结构会导致Squid在日志中无法记录真实的客户端IP地址,但是Squid Dev Team设计了一个X-Forwarded-For的HTTP Header,但是Customlog实现上有点小问题,不方便记录这个Header的值,因此需要对Squid进行一下Patch工作。
     
    同时Lighttpd也有个小问题,不能把用户端传入的X-Forwarded-For传递给Squid,因此也需要做一下Patch工作。
     
    X-Forwarded-For Header不属于RFC标准,最初是由Squid Development Team建议,我在squid follow_xff patch的文档中找到一段文字:
        Allowing or Denying the X-Forwarded-For header to be followed to
     find the original source of a request.
     
        Requests may pass through a chain of several other proxies before reaching us.  The X-Forwarded-For header will contain a comma-separated list of the IP addresses in the chain, with the rightmost address being the most recent.
  •  
    2006-12-29 13:30:55
    奋斗到今天早上3:37,终于完成了对Squid 2.6.6的Patch工作
     
    1. 可以使用 apache rotatelogs, cronolog 翻滚日志文件
    2. customlog 对HTTP Header的记录功能
       原来有这个:
         %{header:separator element}>h
         %{header:separator element}<h
       现在我增加:
         %{header:separator index}>h
         %{header:separator index}<h
     
       例如: %{X-Forwarded-For:,0}>h
       是将 X-Forwarded-For 的值用 “,” 分段,然后取第一段
    3. 修改了几个snmp的计数器改为 unsigned 的类型,这样在cachemgr.cgi上就不会再看到负数了
     
    配置项目增加了好多,其间设置错了这个参数 miss_access ...
    结果内容无法刷新... 后来发现是自己对miss_access的说明没有搞懂... 其实是squid.conf.default 里面的说明实在太不清晰了...我以为这个只对peer有效的。。。
     
    最后写了这个到squid.conf:
    miss_access allow all
     
    才算是ok了
  •  
    2006-12-05 19:52:38
    Squid 2.6 的推出将许多在2.5上的非正式patch都融合了进来,并且作了大量的修正,但是仍然暴露出来非常多的问题,几个月下来已经修正了大量的bug,直到2.6.5之前系统还是非常不稳定的,不过现在好了2.6.5出来之后,之前的许多bug都得到了解决,特别是之前的多个memory leak方面的问题都解决了,因此现在偶也准备尝试2.6.5啦~~决定放弃2.5.14啦
     
    不过还是推荐使用2.6.5的Daily auto-generated release的版本,相信再过几天2.6.6就会release的。
     
    如果在这里看不到偶汇报2.6.5的问题那就是运行稳定啦,如果遇到任何关于2.6.5以及后续版本的问题,偶都会在这里更新的。
公告
  • 关于转载
    转载请注明出处,谢谢!
个人信息
computer_xu
文章分类
最新评论
最新留言
日历
推荐访问
访客
好友
计数器
          
rss
 
推荐订阅:订阅到RSS阅读