分页: 12/31 第一页 上页 7 8 9 10 11 12 13 14 15 16 下页 最后页 [ 显示模式: 摘要 | 列表 ]

YouTube 系统架构

[不指定 2007-12-27 18:08 | by 张宴 ]
  视频演讲:Cuong Do (YouTube/Google 的一位工程部经理)
  演讲地点:西雅图扩展性的技术研讨会

  以下为 Kyle Cordes 根据上述视频写下的文章:

  YouTube Scalability Talk

  Cuong Do of YouTube / Google recently gave a Google Tech Talk on scalability.

  I found it interesting in light of my own comments on YouTube’s 45 TB a while back.

  Here are my notes from his talk, a mix of what he said and my commentary:

  In the summer of 2006, they grew from 30 million pages per day to 100 million pages per day, in a 4 month period. (Wow! In most organizations, it takes nearly 4 months to pick out, order, install, and set up a few servers.)

  YouTube uses Apache for FastCGI serving. (I wonder if things would have been easier for them had they chosen nginx, which is apparently wonderful for FastCGI and less problematic than Lighttpd)

12·18,爱情两周年[原创]

[不指定 2007-12-18 23:50 | by 张宴 ]
  12月18日,
  爱情两周年。

  两年前的今天,
  武汉,
  在南湖之畔美丽的民大校园,
  爱情之花在我们之间绽放。

  新闻网,
  曾经共事过的校园媒体,
  让我们有缘携手共赏北国风光。

  A4纸,
  24张,
  写下我们24个月的点点滴滴,
  我以自创的方法,
  将它们叠成24颗永恒的心,
  纪念这神圣的一刻!

  轻轻紧握你的手,
  一股温暖在心头。

  任凭它寒风劲舞,
  怎能敌冬日暖阳!
http://my2008.sina.com.cn/

  本文已有最新版本:

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




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

  前言:本文为我2007年9月写过的文章《Nginx 0.5.31 + PHP 5.2.4(FastCGI)搭建可承受3万以上并发连接数,胜过Apache 10倍的Web服务器》的第2版,经过了多台服务器的测试,修正了PHP iconv和gd库冲突的BUG,增加了PHP mcrypt、memcache扩展,修改了PHP和Nginx编译参数,优化了Nginx配置文件,添加了部分功能。

  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.33 + PHP 5.2.5 (FastCGI) 可以承受3万以上的并发连接数,相当于同等环境下Apache的10倍

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

  而这台 Nginx 0.5.33 + PHP 5.2.5 (FastCGI) 服务器在3万并发连接下,开启的10个Nginx进程消耗150M内存(15M*10=150M),开启的64个php-cgi进程消耗1280M内存(20M*64=1280M),加上系统自身消耗的内存,总共消耗不到2GB内存。如果服务器内存较小,完全可以只开启25个php-cgi进程,这样php-cgi消耗的总内存数才500M。

  在3万并发连接下,访问Nginx 0.5.33 + PHP 5.2.5 (FastCGI) 服务器的PHP程序,仍然速度飞快。下图为Nginx的状态监控页面,显示的活动连接数为28457(关于Nginx的监控页配置,会在本文接下来所给出的Nginx配置文件中写明):

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

  以下为 Nginx 0.5.33 + PHP 5.2.5 (FastCGI) 服务器在3万并发连接下,开启的10个Nginx进程和64个php-cgi进程时的系统负载情况:

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



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

  一、获取相关开源程序:
  1、下载程序源码包到当前目录:
  本文中提到的所有开源软件为截止到2007年11月25日的最新稳定版。我将它们打了两个压缩包。
Tags: , ,
  [文章作者:张宴 本文版本:v1.2 最后修改:2008.01.02 转载请注明出处:http://blog.zyan.cc]

  我曾经写过一篇文章──《初步试用Squid的替代产品──Varnish Cache网站加速器》,但当时仅仅是用着玩,没做深入研究。

  今天写的这篇关于Varnish的文章,已经是一篇可以完全替代Squid做网站缓存加速器的详细解决方案了。网上关于Varnish的资料很少,中文资料更是微乎其微,希望本文能够吸引更多的人研究、使用Varnish。

  在我看来,使用Varnish代替Squid的理由有三点:
  1、Varnish采用了“Visual Page Cache”技术,在内存的利用上,Varnish比Squid具有优势,它避免了Squid频繁在内存、磁盘中交换文件,性能要比Squid高。
  2、Varnish的稳定性还不错,我管理的一台图片服务器运行Varnish已经有一个月,没有发生过故障,而进行相同工作的Squid服务器就倒过几次。
  3、通过Varnish管理端口,可以使用正则表达式快速、批量地清除部分缓存,这一点是Squid不能具备的。

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


  下面来安装Varnish网站缓存加速器(Linux系统):
  1、创建www用户和组,以及Varnish缓存文件存放目录(/var/vcache):
Tags: , , ,
  写了一个简单的发送HTML邮件的PHP函数。

  函数说明:send_mail("发件人地址", "收件人地址", "邮件主题", "邮件正文");

  示例:send_mail($from, "info@zyan.cc", "这是邮件的主题", "<html><head></head><body><p><font color=red>这是邮件正文</font></p></body></html>");

  代码如下:
Tags:
  [文章作者:张宴 本文版本:v1.0 最后修改:2007.11.16 转载请注明出处:http://blog.zyan.cc]

  最近遇到一个问题,Linux下的PHP命令行程序作为守护进程,需要从队列文件中读一行数据,通过TCP协议发送给外地的接收服务器,再读下一行数据,再发送。当本地与外地的网络状况不好时,有时候发送一条数据所耗费的时间就较长,累积起来容易造成队列堵塞和延迟。

  于是,我准备用该PHP命令行程序生成多个子进程,将串行处理变成并行处理。最简单的方法就是在PHP中用exec()或popen()函数将一个shell命令行推到后台去执行,例如:
<?php
exec("/bin/sh /opt/zhangyan.sh &");
?>
  最后的&表示将shell脚本推到后台去执行。

  但是这样会有一个问题,如果推到后台的进程太多,可能会导致服务器系统资源耗尽而崩溃,所以必须控制进程数量。



  我写了一个PHP程序(/opt/zhangyan.php)、一个shell程序(/opt/zhangyan.sh)作为测试用例。

  程序的逻辑:
  1、设置/opt/zhangyan.php最多允许生成500个子进程;
  2、当/opt/zhangyan.php读取到一条数据后,将允许生成的子进程数减1(空闲进程数$p_number=500-1=499),然后将数据交给/opt/zhangyan.sh去后台处理,不等待/opt/zhangyan.sh处理结束,继续读取下一条数据;
  3、当允许生成的子进程数减至0时(空闲进程数$p_number=0),/opt/zhangyan.php会等待1秒钟,然后检查后台还有多少个/opt/zhangyan.sh子进程尚未处理结束;
  4、如果1秒钟之后/opt/zhangyan.php发现后台的/opt/zhangyan.sh子进程数还是500(空闲进程数$p_number=0),会继续等待1秒钟,如此反复;
  5、如果/opt/zhangyan.php发现后台尚未处理结束的/opt/zhangyan.sh子进程数减少到300个了(空闲进程数$p_number=500-300=200),那么/opt/zhangyan.php会再往后台推送200个/opt/zhangyan.sh子进程;
Tags: ,
  上午,我去清华科技园的“诚志健康体检中心”进行了全身健康检查(新浪公司付费)。我虽然瘦了点,但血压、B超、心电图等立刻能出结果的体检项一切OK,抽血化验、X光等还需等待两天才能知道结果。

  清华科技园真是名企云集啊,光著名的IT企业就有SUN、NEC、谷歌(Google)、微软(Microsoft)、搜狐(sohu)、威盛(VIA)等等。

  用手机拍了点照:

  清华科技园入口
  点击在新窗口中浏览此图片

  谷歌(Google)大厦

京城随记[原创]

[不指定 2007-11-8 21:53 | by 张宴 ]
  过去的几个周末,我曾驻足过京城的一些地方……

  香山

  秋来谁思枫林醉,数点红光婉婉香。
  西山晴雪虽无缘一见,然而身坠香山红叶之中,凭高临远,却是另一种风味。
  只见山峦玉列,峰岭琼联,黄绿相间,旭日照辉。
  从湘西的巍巍群山中走出来,终日面对都市的高楼林立,京城再见丛山,倍感亲切。

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

  动物园的草坪

  老虎、狮子们的野性已经荡然无存,懒洋洋地睡着觉,如同病猫。
  不过门内的那块草坪,却在肃杀的深秋,呈现出生气勃勃的气息。
  碧草晴天,落叶静躺,有些欧洲庄园的味道。
  但它更让我回想起武汉南湖之滨,曾经生活四年的美丽校园。
  一种唯美的感觉油然而生。

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

  国家大剧院

  西长安街,人民大会堂西侧,尚未全部完工的国家大剧院是我最欣赏的建筑之一。
  它呈半椭圆形,漂浮于人造水面之上,犹如超越想象的“湖中明珠”。
  为什么众多的标志性建筑,都是国外设计师所设计,是什么扼杀了我们宏邈高远的想象力和创造力?
  在如今的社会,要想拥有竞争力,就必须突破习惯、创新思考。

  点击在新窗口中浏览此图片
  以前我写过一篇《清除指定squid缓存文件的脚本》,但在取URL时存在10%的错误率。如今找到一款老外的程序,可以批量清除某类URL的Squid缓存,支持正则表达式。

  下载网址:http://www.wa.apana.org.au/~dean/squidpurge/

  编译:
引用
wget http://www.wa.apana.org.au/~dean/sources/purge-20040201-src.tar.gz
tar zxvf purge-20040201-src.tar.gz
cd purge
make

  清除Squid缓存示例:
  1、清除 URL 以“.mp3”结尾的缓存文件(例如 http://www.zyan.cc/abc.mp3http://www.zyan.cc/01/a.mp3
引用
./purge -p localhost:80 -P 1 -se '\.mp3$'

  2、清除URL中包含zyan.cc的所有缓存:
引用
./purge -p localhost:80 -P 1 -se 'zyan.cc'

  我喜欢将程序推到后台去执行,让它慢慢地去清Squid缓存,同时将输出内容记录到purge.log文件:
引用
./purge -p localhost:80 -P 1 -se 'zyan.cc' > purge.log 2>&1 &
Tags: ,
  DNS轮循
  DNS轮循是指将相同的域名解释到不同的IP,随机使用其中某台主机的技术。但其具有明显的缺点:一旦某个服务器出现故障,即使及时修改了DNS设置,还是要等待足够的时间(刷新时间)才能发挥作用,在此期间,保存了故障服务器地址的客户计算机将不能正常访问服务器。DNS负载均衡采用的是简单的轮循负载算法,不能区分服务器的差异,不能反映服务器的当前运行状态,不能做到为性能较好的服务器多分配请求,甚至会出现客户请求集中在某一台服务器上的情况。

  F5 BIG-IP
点击在新窗口中浏览此图片  简介:F5 Networks 公司的著名硬件负载均衡交换机。支持硬件四层、七层交换。不同的型号性能不同,BIG-IP 6400可以支持800万条并发连接,低一点型号的可以支持400万条以上的并发连接。性能极高,但价格也不菲。
  价格:BIG-IP 6400的价格在16万元人民币左右。
  网址:http://www.f5.com.cn/(中国) http://www.f5.com/(全球)

  LVS(Linux Virtual Server)
  简介:软件四层交换。LVS是在Linux内核中作四层交换,只花128个字节记录一个连接信息,不涉及到文件句柄操作,故没有65535最大文件句柄数的限制。LVS性能很高,可以支持100~400万条并发连接。
  价格:免费、开源
  网址:http://zh.linuxvirtualserver.org/

  L7SW(Layer7 switching)
  简介:软件七层交换。这是一款类似LVS的新负载均衡软件,我没有实际应用过,性能未知,因此不作评价。这是它的英文介绍:Layer7 switching is driving a low-level engine using networking design to speed-up forwarding of data stream. Implementation in this project is split into a userspace daemon and a low-level kernelspace forwarding engine. Userspace daemon is responsible for scheduling and switching decisions. Kernelspace forwarding engine is responsible for forwarding stream and using TCP-Splicing scheme. TCP-Splicing is the postponement of the connection between the client and the server in order to obtain sufficient information to make a routing decision. This project is close to Linux Virtual Server project since lot of discusions on this topics have been made online and offline LVS project.
  价格:免费、开源
  网址:http://www.linux-l7sw.org/

  HAProxy
  简介:软件七层交换,反向代理服务器。目前还不支持虚拟主机,但其配置简单,拥有非常不错的服务器健康检查功能,当其代理的后端服务器出现故障,HAProxy会自动将该服务器摘除,故障恢复后再自动将该服务器加入。另外,HAProxy还支持双机热备。我曾经用过一段时间,能支持2~3万条并发连接。现在我用它做普通的小并发负载均衡,主要用到的是它的服务器健康检查功能。
  价格:免费、开源
  网址:http://haproxy.1wt.eu/

  Nginx
  简介:软件七层交换,反向代理服务器。能够很好地支持虚拟主机,可配置性很强,可以按URL做负载均衡。我目前一直在用,大约能支持3~5万条并发连接。
  价格:免费、开源
  网址:http://wiki.codemongers.com/NginxChs(中文维基)
  www.zyan.cc 和 blog.zyan.cc 域名均指向 Nginx 所在的服务器IP。

  用户访问http://www.zyan.cc,将其负载均衡到192.168.1.2:80、192.168.1.3:80、192.168.1.4:80、192.168.1.5:80四台服务器。

  用户访问http://blog.zyan.cc,将其负载均衡到192.168.1.7服务器的8080、8081、8082端口。

  以下为配置文件nginx.conf:

和谐[原创]

[不指定 2007-10-22 23:02 | by 张宴 ]
这是一篇隐藏日志。您需要以合适的身份登入后才能查看。
  睡梦中,
  女友叫醒我。
  我,觉半醒,意朦胧。
  不知道,她在问什么。

  我只是在,回答着梦言梦语:
  “我睡得好香,
  留了很多口水,
  我将它们编了号,
  01,02,03......”

  被女友打断:“你给口水还编号?”
  我答道:“是啊,看看有多少,好做负载均衡。”
这是一篇隐藏日志。您需要以合适的身份登入后才能查看。
Tags:
分页: 12/31 第一页 上页 7 8 9 10 11 12 13 14 15 16 下页 最后页 [ 显示模式: 摘要 | 列表 ]