分页: 11/31 第一页 上页 6 7 8 9 10 11 12 13 14 15 下页 最后页 [ 显示模式: 摘要 | 列表 ]
  Linux下高并发的Squid服务器,TCP TIME_WAIT套接字数量经常达到两、三万,服务器很容易被拖死。通过修改Linux内核参数,可以减少Squid服务器的TIME_WAIT套接字数量。
  
vi /etc/sysctl.conf

  增加以下几行:
引用
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 1024    65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000

  说明:
  net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
  net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
  net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
  net.ipv4.tcp_fin_timeout = 30 表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。
  net.ipv4.tcp_keepalive_time = 1200 表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。
  net.ipv4.ip_local_port_range = 1024    65000 表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。
  net.ipv4.tcp_max_syn_backlog = 8192 表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
  net.ipv4.tcp_max_tw_buckets = 5000 表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。默认为180000,改为5000。对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于Squid,效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。

  执行以下命令使配置生效:
/sbin/sysctl -p
Tags: , , ,
  Apache、IIS、Nginx等绝大多数web服务器,都不允许静态文件响应POST请求,否则会返回“HTTP/1.1 405 Method not allowed”错误。

  例1:用Linux下的curl命令发送POST请求给Apache服务器上的HTML静态页
[root@new-host ~]# curl -d 1=1 http://www.sohu.com/index.html
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>405 Method Not Allowed</TITLE>
</HEAD><BODY>
<H1>Method Not Allowed</H1>
The requested method POST is not allowed for the URL /index.html.<P>
<HR>
<ADDRESS>Apache/1.3.37 Server at www.sohu.com Port 80</ADDRESS>
</BODY></HTML>


  例2:用Linux下的curl命令发送POST请求给Nginx服务器上的HTML静态页
[root@new-host ~]# curl -d 1=1 http://blog.zyan.cc/tech/index.htm
<html>
<head><title>405 Not Allowed</title></head>
<body bgcolor="white">
<center><h1>405 Not Allowed</h1></center>
<hr><center>nginx/0.5.35</center>
</body>
</html>


  但在有些应用中,需要使静态文件能够响应POST请求。

  对于Nginx,可以修改nginc.conf配置文件,改变“405错误”为“200 ok”,并配置location来解决,方法如下:
server
{
   listen       80;
   server_name  domain.zyan.cc;
   index index.html index.htm index.php;
   root  /opt/htdocs;

   if (-d $request_filename)
   {
       rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
   }

   error_page   405 =200 @405;
   location @405
   {
       root  /opt/htdocs;
   }    

   location ~ .*\.php?$
   {
       include conf/fcgi.conf;      
       fastcgi_pass  127.0.0.1:10080;
       fastcgi_index index.php;
   }
}

Tags: , ,

一个时代的结束[原创]

[不指定 2008-4-6 23:36 | by 张宴 ]
  不安逸于现状,
  望加速追逐梦想。
  挥挥笔,
  再见理想国际。
  抽身IT界,
  独练开源剑。
  待到花谢花又开,
  那是王者复归来。
  2007.01.25──2008.03.31,
  一个时代的结束。

婚纱照,永恒的瞬间[原创]

[不指定 2008-3-30 23:21 | by 张宴 ]
  上周六(2008年3月22日),我们去拍了婚纱照。喀嚓,美丽的一刻永远停留在镜头下,化作爱情的历史见证。在我们即将步入婚姻殿堂的时刻,也愿天下所有有情人终成眷属。

  

  更多婚纱照:http://www.yupoo.com/albums/share/view?id=ff80808118e161b401190118e3f13ba3


Tags: ,
  我生产环境下的两台Nginx + PHP5(FastCGI)服务器,跑多个一般复杂的纯PHP动态程序,从Nginx的日志可以统计出,单台Nginx + PHP5(FastCGI)服务器跑PHP动态程序的处理能力已经超过“700次请求/秒”,相当于每天可以承受6000万(700*60*60*24=60480000)的访问量:

  服务器①:DELL PowerEdge 1950(两颗 Intel(R) Xeon(R) 双核CPU 5120 @ 1.86GHz,4GB内存)

  服务器②:DELL PowerEdge 1950(一颗 Intel(R) Xeon(R) 双核CPU 5140 @ 2.33GHz,4GB内存)

  Web服务器:CentOS Linux 4.4 + Nginx 0.5.35 + PHP 5.2.6RC2(300 FastCGI Procees, unix-domain socket, with XCache)

  PHP程序内容:大量Memcached读写、少量MySQL读操作、大量文件队列写操作,然后计算,生成供<script type="text/javascript" src="http://www.domain.com/abc.php?u=1"></script>方式调用的JS代码或XML数据。

  网卡流量:1.5M~3M/秒

  请求数统计方式:从Nginx访问日志中,统计每分钟的第15秒共有多少条日志记录。
引用
grep "25/Mar/2008:15:01:15" /data1/logs/nginx.log | wc -l


  点击在新窗口中浏览此图片

  服务器的系统负载也不算高:

  点击在新窗口中浏览此图片

  总结:
  1、Nginx的处理能力超强,这块不是瓶颈。影响动态程序处理能力的因素主要在于PHP(FastCGI)。PHP(FastCGI)模式适用于执行时间较短的PHP程序,一般复杂的PHP程序执行时间应该在100ms以内,例如我的博客首页执行时间为38ms左右。假设一个PHP程序的执行时间为100ms,那么一个PHP(FastCGI)进程每秒可以处理完毕10个请求,300个FastCGI进程理论上每秒可以处理3000个请求。但是,在生产环境下,还将受到内存、系统负载等多方面的影响,例如300个PHP(FastCGI)进程需要占用2.4GB左右的内存,每秒处理超过1000个请求时,系统负载会飚升到100以上。因此,FastCGI的进程不是越多越好,而是够用就好。

  2、使用PHP的XCache、APC等加速模块会提供速度10倍左右,降低系统负载50倍以上。

  3、修改了spawn-fcgi,使它能够支持250个以上的FastCGI进程。

  4、如果PHP直接对MySQL进行大量读写操作,速度是达不到“700 request/sec”的,PHP与MySQL之间需要一个中间层,这是关键的技术。

  5、CPU的数量(多核算多个CPU,cat /proc/cpuinfo |grep -c processor)越多,系统负载越低,每秒能处理的请求数也越多。

  6、使用PHP 5.2.6RC2,因为它修正了PHP 5.2.5的“zend_mm_heap corrupted”错误BUG。PHP 5.2.5(FastCGI)在高并发请求情况下,经常会出现该错误。

  7、有空我将写一篇针对CentOS Linux环境Nginx + PHP5(FastCGI)安装、配置的最新博文。
Tags: , , , , , ,

准备结婚[原创]

[不指定 2008-3-12 13:34 | by 张宴 ]
  从2005年12月18日开始,我们的爱情如细水长流般,快乐而温馨。

  工作已过一年,生活逐步稳定,房子咫尺在望。

  准备结婚了,时间定在今年的5月2日,地点为我的老家湖南省湘西自治州古丈县,细节流程正在制定中......

  点击在新窗口中浏览此图片

Tags: ,
  Internet Explorer 浏览器在同一时刻只能从同一域名下载两个文件。

  至于原因请见 MSDN Blogs:《Internet Explorer and Connection Limits》,如何解除限制请见微软客户帮助与支持主页:《如何将 Internet Explorer 配置为可以同时进行两个以上的下载会话》。

  不管 Firefox 有多火,无可否认,IE 仍然是浏览器市场的老大。所以,在做系统架构时,不得不去考虑 IE 同时只能从同一域名下载两个文件的限制。如果超过两个文件,IE 将会以队列形式等待两个文件下载完毕,再去下载接下来的两个文件。这样,当在一个页面显示多张图片时,IE 用户的图片下载速度就会受到影响。

  百度、新浪、雅虎等网站采用了同一组图片服务器,使用多个二级域名的方式来解决这个问题。

  通过 HttpWatch Professional 5.2.17 分析可以看出,百度的图片搜索采用了 t1.baidu.com ~ t8.baidu.com 八个域名来显示图片,消耗在 IE 浏览器端的 Blocked 时间小于0.001秒,非常快。
  2月24日,搬了家,离开了居住将近1年的福缘门。新租的房子在三元桥某居民小区的住宅楼第10层,放眼望去,微软(中国)有限公司所在地----盛世大厦上的“Microsoft”标志清晰地映入眼帘。

  呵呵,在买的期房入住之前的这一年,我恐怕会经常在 Microsoft 的陪伴下,做着 Linux 的梦了。
Tags:
  Links Collection of OpenSource Software

  http://www.designandcommunication.co.jp/Nakano/

  一个日本的网站,上面分类搜集了众多开源软件的官方网站地址。

  例如:
  数据库类别:http://www.designandcommunication.co.jp/Nakano/Dev/Database.html
  HTTP服务器类别:http://www.designandcommunication.co.jp/Nakano/Net/HTTP.html
  前言:dbcached 1.0 beta* 在 Memcached 1.2.4 的基础上编写而成,也是我的第一个开源C项目。编写 dbcached 的目的是为了最大限度的发挥 Memcached 内存缓存的优势,便捷地维护 Memcached 服务器节点哈希列表,智能地支持 Memcached 故障转移,同时保证数据的持久化存储。

  dbcached

  协议:New BSD License
  作者:张宴
  网址:http://code.google.com/p/dbcached/

  dbcached 是什么?

  ● dbcached 是一款基于 Memcached 和 NMDB 的分布式 key-value 数据库内存缓存系统。

  ● dbcached = Memcached + 持久化存储管理器 + NMDB 客户端接口

  ● Memcached 是一款高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。

  ● NMDB 是一款多协议网络数据库(dbm类)管理器,它由内存缓存和磁盘存储两部分构成,使用 QDBM 或 Berkeley DB 作为后端数据库。

  ● QDBM 是一个管理数据库的例程库,它参照 GDBM 为了下述三点而被开发:更高的处理速度,更小的数据库文件大小,和更简单的API。QDBM 读写速度比 Berkeley DB 要快,详细速度比较见《Report of Benchmark Test》。

  


  Memcached 和 dbcached 在功能上一样吗?

  ● 兼容:Memcached 能做的,dbcached 都能做。除此之外,dbcached 还将“Memcached、持久化存储管理器、NMDB 客户端接口”在一个程序中结合起来,对任何原有 Memcached 客户端来讲,dbcached 仍旧是个 Memcached 内存对象缓存系统,但是,它的数据可以持久存储到本机或其它服务器上的 QDBM 或 Berkeley DB 数据库中。

年关时分[原创]

[不指定 2008-2-1 22:39 | by 张宴 ]
  年关将近,最近真够忙的。边查找解决服务器故障,边用C语言写“Memcached→MySQL”关联程序,边用PHP做删除黄色图片及更新Cache的接口程序,边弄异地IDC数据同步测试,边讨论年后的新架构,时不时的还有一些多多少少的新需求进来。明天恐怕还得当一回画家,绘出新的系统架构图。

  湖南千里冰封,人车难行,北京游子如织,一票难求。

  昨天为线上一组Nginx+PHP服务器的PHP5.2.5(FastCGI)加上了xcache,增大php-cgi进程数为250,系统负载马上降下来了,维持在1左右,访问速度提高不少。

  确定PHP5.2.5(FastCGI)进程数是否够用的方法:
引用
netstat -anpo | grep php-cgi | wc -l
  可以统计出当前正在处理请求的FastCGI进程数,如果等于或接近开启的FastCGI进程总数,则不够用,需要优化程序或加大进程数。

  1月30日参加了新浪年会,开始节目精彩,但后来恶搞过多,则乏味了,而且sohu听了会很生气。
  同事拍摄的年会照片:http://photo.sina.com.cn/list/photo_s.php?uid=1400314314&ctg_id=99798&page=1
  年会视频:http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=1534667&uid=1244293405#11508575

  被评为“2007年度新浪互动社区事业部优秀员工”,截图一张。要写“获奖感言”的朋友,可以改改,或许能用得上,免得费时间去搜了。
  这段视频在技术上对Nginx和Apache进行了比较,给出了一些如何让两者结合使用的例子。


Tags: ,

工作一周年纪念[原创]

[不指定 2008-1-25 17:12 | by 张宴 ]
  2007年1月20日,离开武汉;
  2007年1月21日,抵达北京;
  2007年1月23日,新浪面试;
  2007年1月25日,到岗工作。

  待续......
  xbayDNS

  协议:New BSD License
  作者:huangdong
  团队:新浪研发中心──系统研发
  网址:http://code.google.com/p/xbaydns/

  xBayDNS是一个基于Web的BIND 9管理界面。与通常我们所知道的管理界面所不同的是,它尽可能的将DNS的管理简化,并帮助用户建立起一个容易管理、维护、扩展的DNS系统。

  一个普通的DNS服器可以提供域名的解析、代理、缓存这样的服务。我们期望DNS不但是一个服务,它更应该承担起GSLB、用户访问加速这样的任务。而在现实的环境中,应用DNS已经能够很好的完成这样的工作。所以沿着从前的经历,我们启动了xBayDNS这个项目,它的目的是让DNS服务在承担着GSLB和访问加速这样的工作时更容易管理。做为xBayDNS附加的礼物,也可以从中学到如何形成一个基于DNS的GSLB和用户访问加速的原理。

  xBayDNS的特性如下:
  • 基于Web的BIND管理
  • 非常容易的支持多种操作系统(现有我们考虑支持的就有FreeBSD、OpenBSD、MacOSX、Linux)
  • 支持ACL、View、TSIG这样的BIND高级管理功能

  什么时候使用xBayDNS?
  • 你需要简单的管理一台BIND的DNS服务器
  • 你需要多台DNS服务器来为你的用户提供解晰服务
  • 一套基于DNS的GSLB系统
  • 一套基于DNS的分布式GSLB系统
  • 你需要维护多台分布式的服务器

  安装:
Tags: , , ,
  Memcachedb

  协议:New BSD License
  作者:stvchu, gary.caokai, forever.sky81
  团队:新浪互动社区事业部──博客产品
  网址:http://www.memcachedb.org/

  Memcachedb = memcache + Berkeley DB

  Memcachedb是一款支持高并发的分布式持久存储系统,对任何原有memcached客户端来讲,它仍旧是个memcached,但是,它的数据是可以持久存储的。
  前端:memcached的网络层
  后端:Berkeley DB存储

  写速度:从本地服务器通过memcache客户端(libmemcache) set 2亿条16字节长的key,10字节长的Value的记录,耗时16572秒,平均速度12000条记录/秒。
  读速度:从本地服务器通过memcache客户端(libmemcache) get 100万条16字节长的key,10字节长的Value的记录,耗时103秒,平均速度10000条记录/秒。

  • 支持的memcache命令
  get, set, add, replace
  incr, decr
  delete
  stats
  flush_all

  • 私有命令
  db_checkpoint, db_archive
  db_ismaster, db_whoismaster (for replication)

  编译及安装方法:
  http://blog.csdn.net/simonlsy/archive/2008/01/07/2027940.aspx

  点击在新窗口中浏览此图片



  ncache

  协议:New BSD License
  作者:shinepf, shuiyang
  团队:新浪互动社区事业部──博客产品
  网址:http://code.google.com/p/ncache/

  ncache是一款基于nginx的缓存系统,比Squid更快更高效。

  01
  点击在新窗口中浏览此图片
分页: 11/31 第一页 上页 6 7 8 9 10 11 12 13 14 15 下页 最后页 [ 显示模式: 摘要 | 列表 ]