分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]
  9月,是最忙碌的一个月,

  的服务器与网络系统架构将进行一次彻底的改变,

  前端缓存服务器以广州、天津为试点,开始在全国分布,

  Nginx + PHP(FastCGI)等性能很高的新技术组合也将投入正式应用。

  “十一”之后,全新系统架构和全新改版的将正式上线,

  值得期待!

  虽然,这一段时间经常加班,

  但是,我经历了重构系统架构的全过程,

  收获颇丰。

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

  美丽的中秋节,滴滴闹着要大月亮,作为一只成熟的蘑菇,点点究竟会想出什么办法解决呢?  
  本文已有最新版本:

  请点击Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)




  [文章作者:张宴 本文版本:v1.3 最后修改:2007.11.06 转载请注明出处:http://blog.zyan.cc]

  Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。

  Nginx 的中文维基:http://wiki.codemongers.com/NginxChs

  在高并发连接的情况下,Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。根据我的测试结果,Nginx 0.5.31 + PHP 5.2.4 (FastCGI) 可以承受3万以上的并发连接数,相当于同等环境下Apache的10倍

  以下是 Nginx 0.5.31 + PHP 5.2.4 (FastCGI) 服务器在3万并发连接下的TCP状况:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

  各种状态TCP连接数如下(各项值所代表的含义见我的另一篇文章《查看Apache并发请求数及其TCP连接状态》):
引用
LAST_ACK 1
SYN_RECV 991
CLOSE_WAIT 1
ESTABLISHED 18789
FIN_WAIT1 1478
FIN_WAIT2 181
TIME_WAIT 506

  根据我的经验,4GB内存的服务器+Apache(prefork模式)一般只能处理3000个并发连接,因为它们将占用3GB以上的内存,还得为系统预留1GB的内存。我曾经就有两台Apache服务器,因为在配置文件中设置的MaxClients为4000,当Apache并发连接数达到3800时,导致服务器内存和Swap空间用满而崩溃。

  而这台 Nginx 0.5.31 + PHP 5.2.4 (FastCGI) 服务器在3万并发连接下,开启的10个Nginx进程消耗100M内存(20MB*10=100M),开启的250个php-cgi进程消耗1G内存(4MB*250≈1GB),加上系统自身消耗的内存,总共才消耗2GB内存。如果服务器内存较小,完全可以只开启25个php-cgi进程,这样php-cgi消耗的总内存数才100M。在开启25个php-cgi进程的情况下,每分钟的处理能力只比开启250个php-cgi进程时低了不到一半。

  以下为 Nginx 0.5.31 + PHP 5.2.4 (FastCGI) 服务器在3万并发连接下,开启的10个Nginx进程和250个php-cgi进程时的系统负载情况:
  点击在新窗口中浏览此图片


  安装步骤:
  (系统要求:Linux 2.6+ 内核,本文中的Linux操作系统为CentOS 4.4)

  一、获取相关开源程序:
  1、下载程序源码包到当前目录:
  本文中提到的所有开源软件为截止到2007年9月21日的最新稳定版。我将它们打了两个压缩包。
Tags: , , ,
  在微软的MSDN网站上看到一篇理论文章《Failover Cluster(故障转移群集) 》,文中的故障转移群集解决方案,有点类似两台 F5 BIG-IP 负载均衡交换机通过串口线进行心跳检测的互备模式,对我来说很有参考价值。

  最近打算写一套基于Linux系统的实际应用方案,在两台Web服务器之间实现故障转移:用户实际访问的IP地址是“x.x.1.10”,两台服务器自动切换用Linux的IP别名来实现,当主服务器“x.x.1.1”正常时,主服务器的IP别名“x.x.1.10”对外提供服务,当两台服务器之间的心跳检测程序发现主服务器“x.x.1.1”发生故障或死机时,会停掉主服务器“x.x.1.1”的IP别名“x.x.1.10”(主服务器死机时该IP别名会自动消失),而由备用服务器“x.x.1.2”启用相同的IP别名“x.x.1.10”来接替主服务器提供服务;“信号”打算自己写一个心跳检测程序来实现;共享数据部分还没想好用什么方式来实现,NFS吗?不知道NFS在高负载读写下的性能如何?

  附:故障转移群集解决方案
  点击在新窗口中浏览此图片

  第一台服务器 (Database01) 是处理所有事务的活动服务器。 仅当 Database01 发生故障时,处于空闲状态的第二台服务器 (Database02) 才会处理事务。 群集将一个虚拟 IP 地址和主机名 (Database10) 在客户端和应用程序所使用的网络上公开。

  注意:您可以将此设计扩展为包括多台活动服务器(除了所示的服务器外),要么使它们共享单个备用服务器,要么将每个活动服务器配置为另一个活动服务器的备用服务器。
Tags:
  [文章作者:张宴 本文版本:v1.0 最后修改:2007.09.12 转载请注明出处:http://blog.zyan.cc]

  一、发现问题:
  在一台配置较低的Linux服务器(内存、硬盘比较小)的/data分区内创建文件时,系统提示磁盘空间不足,用df -h命令查看了一下磁盘使用情况,发现/data分区只使用了66%,还有12G的剩余空间,按理说不会出现这种问题。

  二、分析问题:
  后来用df -i查看了一下/data分区的索引节点(inode),发现已经用满(IUsed=100%),导致系统无法创建新目录和文件。
  点击在新窗口中浏览此图片

  inode译成中文就是索引节点,每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是Block,Block是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,能通过inode值最快的找到相对应的文件。

  而这台服务器的Block虽然还有剩余,但inode已经用满,因此在创建新目录或文件时,系统提示磁盘空间不足。

  三、查找原因:
  /data/cache目录中存在数量非常多的小字节缓存文件,占用的Block不多,但是占用了大量的inode。

  四、解决方案:
  1、删除/data/cache目录中的部分文件,释放出/data分区的一部分inode。

  2、用软连接将空闲分区/opt中的newcache目录连接到/data/cache,使用/opt分区的inode来缓解/data分区inode不足的问题:
  ln -s /opt/newcache /data/cache

  3、更换服务器,用高配置的服务器替换低配置的服务器。很多时候用钱去解决问题比用技术更有效,堆在我办公桌上5台全新的 DELL PowerEdge 1950 服务器即将运往IDC机房。
  点击在新窗口中浏览此图片
Tags:
  我在海淀图书城翻阅图书时,发现一本小册子《你的灯亮着吗?》,翻了翻,一下子就被吸引住了。买下?No。那怎么办?记下书名,回来Google一下,找到了电子版。

  电子版下载地址(无插图):http://ishare.iask.sina.com.cn/cgi-bin/fileid.cgi?fileid=2228956

点击在新窗口中浏览此图片  《你的灯亮着吗?》这原本是一本写给计算机程序员们的通俗书,写作它的目的是为了帮助程序员们搞清楚自己所面临的问题的真正所在,以便能够找到一种最为合适的方法来解决它们。但这并不是一本计算机书籍,他是一本定义分析和解决问题的书籍。

  全书分为六个主题,由20个寓意深刻的小故事组成。每个主题都有若干生动有趣而又有警戒意义的故事作为主线,通过对故事中实际问题的解决,引申出作者对于问题解决领域的重要观点。书中关注了像“人们如何思考”、“人们在遇到棘手的难题时会如何思考和处理”、“对于某一个特定的问题,人们会用什么样的角度去思考”这样的话题;提出了像“问题其实就是你期望的东西和你体验的东西之间的差别”、“不管看上去如何,人们很少知道他们想要什么,直到你给了他们所要的东西”这样的深刻见解,这为人们思考能力的提高提供了一些启迪性的帮助。全书幽默地引导读者在处理问题时首先应该识别真正的问题,然后确定问题的拥有者,再找出问题的来源,直到最后才来确定我们是否真的需要解决它。

  该书适合所有不自以为是的人,还有那些真正遭遇过解决问题的挫折而又有理性去分析问题的根源并愿意改进它的人们。该书提出了一种新型的解决问题的考虑方式,这种方式非常简单却又惊人而有效。

  关于这本书的作者:温伯格(Gerald M. Weinberg),他是从个体心理、组织行为和企业文化角度研究软件管理和软件工程的权威和代表人物。在超过40年的软件职业生涯中,温伯格从事过软件开发,软件项目管理、软件管理教学和咨询,他更是一位杰出的软件专业作家和思想家。1997年,温伯格因其在软件领域的杰出贡献,被美国计算机博物馆的计算机名人堂选为首批5位成员之一。这个名人堂至今只有20名成员。
  [文章作者:张宴 本文版本:v1.0 最后修改:2007.09.10 转载请注明出处:http://blog.zyan.cc]

  1、如果未安装Apache。编译时,加上--enable-deflate,例如:(仅针对Linux版,Windows版无须此步骤)
  ./configure --prefix=/usr/local/apache --enable-rewrite --enable-so --enable-deflate

  2、如果已安装Apache。添加mod_deflate模块,例如:(仅针对Linux版,Windows版无须此步骤)
  /usr/local/apache/bin/apxs -i -a -c /home/zhangyan/software/httpd-2.0.59/modules/filters/mod_deflate.c
  注:/home/zhangyan/software/httpd-2.0.59/为Apache源码路径。

  3、进行以上步骤后,会在httpd.conf中自动加入一行:(Windows版请将下行最前面的#号去掉)
引用
LoadModule deflate_module     modules/mod_deflate.so

  4、编辑httpd.conf,增加:
  Linux版:
引用
<ifmodule mod_deflate.c>
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
#DeflateFilterNote Input instream
#DeflateFilterNote Output outstream
#DeflateFilterNote Ratio ratio
#LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
#CustomLog logs/deflate_log.log deflate
</ifmodule>

  Windows版:
引用
<ifmodule deflate_module>
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
#DeflateFilterNote Input instream
#DeflateFilterNote Output outstream
#DeflateFilterNote Ratio ratio
#LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
#CustomLog logs/deflate_log.log deflate
</ifmodule>

  如果将#号去掉,可以在logs/deflate_log.log日志文件中看到文件压缩前后的字节数、压缩比,例如:
  "GET /index.html HTTP/1.1" 49373/276249 (17%)
  压缩前的字节数为276249,压缩后的字节数为49373,压缩比为17%

  5、详细配置见Apache官方网站:http://httpd.apache.org/docs/2.0/mod/mod_deflate.html
Tags:
  我们要蔚蓝的天,我不要流浪的云。
  我们要清澈的眼睛,我不要阴霾的心。
  我们要城市里能看见海景。
  我们听椰风,我们看海浪。
  我们在海景轻柔的沙滩上。

  毕业之后的这个夏季,工作了,日子也忙碌起来,没有机会像去年夏季一样去北戴河看海了。同事博博给了我两张60元的“城市海景”的门票,今天,我带着女友前往了北京市的“大海”──蟹岛度假村·城市海景(水上乐园)。

  城市海景(水上乐园)是中国最大的人造海滨浴场。坐落在北京朝阳区机场辅路中段南侧(蟹岛度假村内)。她总占地面积为6万平方米,园内浓缩热带海滨风情,建有大型的人造海浪池,广阔的沙滩区。其间椰树环抱,阳伞林立,并附以各项娱乐及服务设施,是北京人夏日休闲,就近享受海景的绝佳去处。

  公交车:688(始发站东直门),359,418(始发站东直门),735,835,小20,935,813,小52路至蟹岛度假村下车。

  租了只橡皮艇,给女友拍张照
  点击在新窗口中浏览此图片

  再给自己来一张
分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]