分页: 10/31 第一页 上页 5 6 7 8 9 10 11 12 13 14 下页 最后页 [ 显示模式: 摘要 | 列表 ]
  [文章作者:张宴 本文版本:v1.0 最后修改:2008.06.25 转载请注明原文链接:http://blog.zyan.cc/read.php/354.htm]

  最近,在我原有的“Linux服务器系统监控程序”基础上,完善了HTTP、TCP、MySQL主动监控与MSN、E-mail、手机短信报警。监控程序以shell和PHP程序编写,以下为主要框架与部分代码:

  一、系统监控接口程序(interface.php)具有的报警方式
  1、MSN实时报警
  ①、监控程序每次检测到故障存在、或者故障恢复,都会发送短消息到管理员的MSN。
  点击在新窗口中浏览此图片
Tags: , , , ,

2008开源在中国

[不指定 2008-6-24 08:29 | by 张宴 ]
  虽然没有订阅过全年的《程序员》杂志,但是,买到的这本以“2008开源在中国”为主题的2008年06期《程序员》,还是值得一看的。

  点击在新窗口中浏览此图片专题布局:
  (1)2008开源在中国
  (2)说不尽的开源——记“开源在中国2008”研讨会
  (3)摸着石头过河——记开源社区huihu.org
  (4)莫等闲,抬望云和月
  (5)从一封信说起——记姜太文博士和他的XOOPS项目
  (6)比开源更自由的存在——哲思自由软件社区专访
  (7)解密淘宝网的开源架构
  (8)自由软件和新浪网
  (9)项庄舞剑,意在沛公?——评国际软件巨头的开源策略
  (10)大企业如何助力开源
  (11)让漫天繁星在指尖随心闪耀——专访开源专家马越
  (12)开源商业模式介绍
  (13)与开源共成长
  (14)ZK创始人叶明宪的开源进行时
  (15)开源者说——一个开源项目贡献者的自白
  (16)开源离我们有多远——中国开源现状调查
  (17)开源授权协议(License)初探
  (18)一个程序员谈开源  

  架构专栏:
  (1)Web架构师的能力
  Web架构师要在技术和业务之间找到平衡,选择最低成本的技术来实现业务需求,还要适当地为业务发展保留适当的平台空间。  

  (2)炫目的敏捷架构师
  随着敏捷软件开发的理念和方法论逐渐被越来越多的人接受,敏捷架构师在团队中的地位也越来越重要,本文讲述一个敏捷架构师应该具备的一些基本素质。  

  (3)写给Web2.0站长,不仅仅是泼冷水
  看到国外Web2.0站点的火热发展,国内众多Web创业者两眼发红,抄得兴起。然而没有扎实的技术积累和人才储备,要想持续发展几乎是不可能的事情。  

  (4)豆瓣的架构  
  经常有人说web2.0融资困难,商业模式不清楚,可能这是真的。但从技术上看,互联网技术不可能一成不变,本期选登的这两篇文章,可以让我们看到这方面的发展。  
  [文章作者:张宴 本文版本:v1.1 最后修改:2008.06.19 转载请注明原文链接:http://blog.zyan.cc/post/352/]

  Nginx 超越Apache的高性能和稳定性,使得国内使用 Nginx 作为 Web 服务器的网站也越来越多,其中有新浪、网易、腾讯等门户网站,六间房、酷6等视频分享网站,Discuz!、水木社区等知名论坛,豆瓣、YUPOO等新兴Web 2.0网站。

  Nginx 在国内的应用正在不断发展壮大!

  一、使用 Nginx 运行 PHP(FastCGI) 程序的网站:

  1、六间房视频(http://www.6.cn/):nginx/0.6.14 + PHP
[root@new-host ~]# curl --head http://6.cn/reg.php
HTTP/1.0 200 OK
Server: nginx/0.6.14
Date: Wed, 18 Jun 2008 00:58:20 GMT
Content-Type: text/html
Vary: Accept-Encoding
X-Cache: MISS from YZ-W-146
X-Cache-Lookup: MISS from YZ-W-146:80
Via: 1.0 YZ-W-146 (squid/3.0.STABLE1.dev)
Connection: close


  2、Discuz!官方论坛(http://www.discuz.net/):nginx/0.7.2 + PHP/5.2.6
[root@new-host ~]# curl --head http://www.discuz.net/index.php
HTTP/1.1 200 OK
Server: nginx/0.7.2
Date: Wed, 18 Jun 2008 00:57:16 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.2.6
Set-Cookie: dznet_sid=Ek9XYc; expires=Wed, 25-Jun-2008 00:57:16 GMT; path=/; domain=.discuz.net


  3、互联星空播客[新浪服务器](http://you.video.vnet.cn/):nginx/0.5.33 + PHP/5.2.5
[root@new-host ~]# curl --head http://you.video.vnet.cn/pg/user/userHead.js.php
HTTP/1.1 200 OK
Server: nginx/0.5.33
Content-Type: text/html; charset=gb2312
X-Powered-By: PHP/5.2.5
Expires: Sun, 13 Jul 2008 05:43:16 GMT
Last-Modified: Fri, 13 Jun 2008 05:43:16GMT
Content-Encoding: gzip
Content-Length: 22403
Date: Wed, 18 Jun 2008 01:09:33 GMT
X-Varnish: 1426517043 1413292132
Age: 415577
Via: 1.1 varnish
Connection: keep-alive

Tags: , ,
  本文已有最新版本:

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




  [文章作者:张宴 本文版本:v3.2 最后修改:2008.07.16 转载请注明原文链接:http://blog.zyan.cc/read.php/351.htm]

  前言:本文是我撰写的关于搭建“Nginx + PHP(FastCGI)”Web服务器的第3篇文章,也是Nginx 0.6系列版本成为稳定版后的第一篇文章,安装、配置方式与以往略有不同,并增加了一些在生产环境运行中不断修改、调整,总结出的配置上的优化。

  链接:《2007年9月的第1版》、《2007年12月的第2版

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

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

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

  而这台 Nginx 0.6.31 + PHP 5.2.6 (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.6.31 + PHP 5.2.6 (FastCGI) 服务器的PHP程序,仍然速度飞快。下图为Nginx的状态监控页面,显示的活动连接数为28457(关于Nginx的监控页配置,会在本文接下来所给出的Nginx配置文件中写明):

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

  我生产环境下的两台Nginx + PHP5(FastCGI)服务器,跑多个一般复杂的纯PHP动态程序,单台Nginx + PHP5(FastCGI)服务器跑PHP动态程序的处理能力已经超过“700次请求/秒”,相当于每天可以承受6000万(700*60*60*24=60480000)的访问量(更多信息见此),而服务器的系统负载也不算高:

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



  安装步骤:
  (系统要求:Linux 2.6+ 内核,本文中的Linux操作系统为CentOS 5.1,另在RedHat AS4上也安装成功)

北京太阳村的爱心之旅

[晴 2008-6-3 23:52 | by 张宴 ]
  上个星期天(2008年6月1日),国际儿童节。我和老婆以及朋友,去北京顺义区赵全营镇板桥的太阳村,看望了那里的孩子,为他们送去食物和衣物,并认领了爱心枣树,贡献上自己的一份爱心。这个儿童节,你们不会孤单!

  公交乘车路线:在“东直门外大街(东直门地铁站B出口以东)”乘916空调车(慢车)至“牛栏山道口”下车,换乘947在“板桥”站下车,往回走100米到十字路口(途中看到一个写有太阳村的门不是正门,走不通,请继续往回直到十字路口),沿着南北方向马路向北走50米。

  太阳村背景:

  童年本来应该是快乐的,但并不是每个孩子都能拥有快乐的童年。太阳村里就住着这样一群特殊的孩子,他们的父母有的在服刑,有的已经伏法。由于父母犯罪,这些孩子得不到像烈士子女那样的尊重和照顾,也得不到一般孤儿的救助,成为社会上一个特殊的群体。这些孩子曾遭受过身边人百般的歧视和污辱,有的流浪街头,以行乞、偷窃为生;有的挣扎在生死边缘,无依无靠。

  原陕西省监狱管理局一级警督张淑琴女士,在长期的监狱采访与犯罪人员接触过程中,让她发现并开始思索一个问题:假如是英雄或烈士留下的孩子,人们会把敬佩和感激之情转移到英烈子女身上;但对于罪犯的孩子有些人则会把痛恨及厌恶延伸到这些孩子身上,使他们沦为一个不幸的特殊群体。而这些孩子如果得不到妥善安置的话,很大程度上又会影响到父母在狱中的表现。为了让罪犯能安心服刑。张淑琴决定帮助那些因父母入狱而无人照看的孩子。

  从1996年5月起,张淑琴在社会各界的大力支持下,自筹资金,相继在陕西省、河南省新乡市、北京市顺义区、陕西省陇县创建了4所专门救助服刑人员未成年子女的儿童村。在过去的十年中,太阳村救助了近800名特殊的孩子。

  6.1拍下的照片:

  太阳村正门
  点击在新窗口中浏览此图片
  [文章作者:张宴 本文版本:v1.1 最后修改:2008.06.02 转载请注明出自:http://blog.zyan.cc]

  TCMalloc(Thread-Caching Malloc)是google开发的开源工具──“google-perftools”中的成员。与标准的glibc库的malloc相比,TCMalloc在内存的分配上效率和速度要高得多,可以在很大程度上提高MySQL服务器在高并发情况下的性能,降低系统负载。

  TCMalloc的实现原理和测试报告请见一篇文章:《TCMalloc:线程缓存的Malloc

  为MySQL添加TCMalloc库的安装步骤(Linux环境):

  1、64位操作系统请先安装libunwind库,32位操作系统不要安装。libunwind库为基于64位CPU和操作系统的程序提供了基本的堆栈辗转开解功能,其中包括用于输出堆栈跟踪的API、用于以编程方式辗转开解堆栈的API以及支持C++异常处理机制的API。
wget http://download.savannah.gnu.org/releases/libunwind/libunwind-0.99-alpha.tar.gz
tar zxvf libunwind-0.99-alpha.tar.gz
cd libunwind-0.99-alpha/
CFLAGS=-fPIC ./configure
make CFLAGS=-fPIC
make CFLAGS=-fPIC install


  2、安装google-perftools:
wget http://google-perftools.googlecode.com/files/google-perftools-0.97.tar.gz
tar zxvf google-perftools-0.97.tar.gz
cd google-perftools-0.97/
./configure
make && make install

echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf
/sbin/ldconfig


  3、修改MySQL启动脚本(根据你的MySQL安装位置而定):
vi /usr/local/mysql/bin/mysqld_safe

  在# executing mysqld_safe的下一行,加上:
引用
export LD_PRELOAD=/usr/local/lib/libtcmalloc.so

  保存后退出,然后重启MySQL服务器。


  4、使用lsof命令查看tcmalloc是否起效:
/usr/sbin/lsof -n | grep tcmalloc

  如果发现以下信息,说明tcmalloc已经起效:
  mysqld    10847   mysql  mem       REG        8,5  1203756   20484960 /usr/local/lib/libtcmalloc.so.0.0.0  



  注:2008年6月2日,修正了libunwind在x86_64位操作系统下的编译错误,TCMalloc无法加载等问题。

  涉及修改内容:
  1、libunwind的编译参数改为:
  CFLAGS=-fPIC ./configure
  make CFLAGS=-fPIC
  make CFLAGS=-fPIC install

  2、增加:
  echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf
  /sbin/ldconfig

  3、修改MySQL加载TCMalloc的语句:
  export LD_PRELOAD=/usr/local/lib/libtcmalloc.so

  感谢网友router。

Tags: , , ,
  [文章作者:张宴 本文版本:v1.1 最后修改:2008.07.17 转载请注明出自:http://blog.zyan.cc]

  Citrix NetScaler是一款不错的4-7层硬件负载均衡交换机,市场占有率仅次于F5 BIG-IP,位居第二。NetScaler 8.0是美国思杰系统有限公司(Citrix Systems, Inc)正式推出的最新版本NetScaler产品系列。

  从我的实际测试来看,NetScaler 8.0在七层负载均衡方面,性能和功能都要比F5 BIG-IP强。

  NetScaler 8.0的负载均衡监控中,可以对MySQL数据库进行健康检查,而F5 BIG-IP目前只支持对Oracle和Microsoft SQL Server数据库的健康检查。

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

  但是,NetScaler 8.0自带的MySQL健康检查脚本(nsmysql.pl)并不完善,它只能检查一条SQL语句执行是否出错,并不能检查MySQL主从结构中的MySQL Slave数据库同步是否正常、表有无损坏、同步延迟是否过大、是否出现错误、非sleeping状态的连程数是否过高等情况。于是,我根据自己的需要,为NetScaler 8.0写了一个MySQL Slave数据库负载均衡健康检查脚本(nsmysql-slave.pl),实现了上述需求。

  有了“nsmysql-slave.pl”做健康检查,利用NetScaler的VIP(虚拟IP),就可以完美实现多台MySQL Slave数据库的负载均衡了。当一台MySQL Slave数据库出现不同步、表损坏、同步延迟过大(本脚本中默认设置的落后MySQL主库600秒视为延迟,可根据具体应用修改)、活动连程数太高(本脚本中默认设置的是大于200视为连程数太高,可根据具体应用修改)等情况,“nsmysql-slave.pl”就会自动将其检查出来,并告知NetScaler,NetScaler会将该数据库标识为宕机,从而不将用户的查询请求传送到这台发生故障的数据库上。故障一旦修复,“nsmysql-slave.pl”会自动告知NetScaler,该数据库已经可以使用。

  “nsmysql-slave.pl”源代码如下:
Tags: , , , , ,
  我已经有很长一段时间,忘了更新《我的技术文章与计算机作品汇总页》(即“技术汇总”栏)了。今天,我已经该页的信息补充至最新。

  http://blog.zyan.cc/tech/

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

  前言:最近一直在对比测试F5 BIG-IP和Citrix NetScaler负载均衡器的各项性能,于是写下此篇文章,记录F5 BIG-IP的常见应用配置方法。

  目前,许多厂商推出了专用于平衡服务器负载的负载均衡器,如F5 Network公司的BIG-IP,Citrix公司的NetScaler。F5 BIG-IP LTM 的官方名称叫做本地流量管理器,可以做4-7层负载均衡,具有负载均衡、应用交换、会话交换、状态监控、智能网络地址转换、通用持续性、响应错误处理、IPv6网关、高级路由、智能端口镜像、SSL加速、智能HTTP压缩、TCP优化、第7层速率整形、内容缓冲、内容转换、连接加速、高速缓存、Cookie加密、选择性内容加密、应用攻击过滤、拒绝服务(DoS)攻击和SYN Flood保护、防火墙—包过滤、包消毒等功能。

  以下是F5 BIG-IP用作HTTP负载均衡器的主要功能:
  ①、F5 BIG-IP提供12种灵活的算法将所有流量均衡的分配到各个服务器,而面对用户,只是一台虚拟服务器。
  ②、F5 BIG-IP可以确认应用程序能否对请求返回对应的数据。假如F5 BIG-IP后面的某一台服务器发生服务停止、死机等故障,F5会检查出来并将该服务器标识为宕机,从而不将用户的访问请求传送到该台发生故障的服务器上。这样,只要其它的服务器正常,用户的访问就不会受到影响。宕机一旦修复,F5 BIG-IP就会自动查证应用已能对客户请求作出正确响应并恢复向该服务器传送。
  ③、F5 BIG-IP具有动态Session的会话保持功能。
  ④、F5 BIG-IP的iRules功能可以做HTTP内容过滤,根据不同的域名、URL,将访问请求传送到不同的服务器。



  下面,结合实例,配置F5 BIG-IP LTM v9.x:

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

  ①、如图,假设域名blog.zyan.cc被解析到F5的外网/公网虚拟IP:61.1.1.3(vs_squid),该虚拟IP下有一个服务器池(pool_squid),该服务器池下包含两台真实的Squid服务器(192.168.1.11和192.168.1.12)。
  ②、如果Squid缓存未命中,则会请求F5的内网虚拟IP:192.168.1.3(vs_apache),该虚拟IP下有一个默认服务器池(pool_apache_default),该服务器池下包含两台真实的Apache服务器(192.168.1.21和192.168.1.22),当该虚拟IP匹配iRules规则时,则会访问另外一个服务器池(pool_apache_irules),该服务器池下同样包含两台真实的Apache服务器(192.168.1.23和192.168.1.24)。
  ③、另外,所有真实服务器的默认网关指向F5的自身内网IP,即192.168.1.2。
  ④、所有的真实服务器通过SNAT IP地址61.1.1.4访问互联网。



  详细配置步骤:
Tags: , , , , , ,
  时间:2008年5月2日,地点:湖南省湘西自治州古丈县,我们的婚礼拉开帷幕。

  1、抢亲,敲开新娘的房门,找到被藏起的婚鞋
点击在新窗口中浏览此图片

  2、接出新娘
点击在新窗口中浏览此图片
  注:/usr/local/apache/为Apache的安装路径,/opt/httpd-2.0.55/为Apache的源代码目录。

  Linux下,执行以下命令为Apache添加mod_expires模块:
/usr/local/apache/bin/apxs -i -a -c /opt/httpd-2.0.55/modules/metadata/mod_expires.c

  报错:
引用
Warning!  dlname not found in /usr/local/apache/modules/mod_expires.la.
Assuming installing a .so rather than a libtool archive.
chmod 755 /usr/local/apache/modules/mod_expires.so
chmod: 无法访问‘/usr/local/apache/modules/mod_expires.so’: 没有那个文件或目录
apxs:Error: Command failed with rc=65536

  再执行:
gcc -shared -o /usr/local/apache/modules/mod_expires.so /opt/httpd-2.0.55/modules/metadata/mod_expires.o
/usr/local/apache/bin/apxs -i -a -c /opt/httpd-2.0.55/modules/metadata/mod_expires.c

  编译成功。
Tags: , ,
  2008年4月18日,在Alexa安排的一次“Scaling MySQL -- Up or Out?”的小组辩论中,MySQL、Sun、Flickr、Fotolog、Wkipedia、Facebook、YouTube等国际知名网站的DBA们,对其网站MySQL数据库服务器、Web服务器、缓存服务器的数量,MySQL版本,编程语言类型,操作系统类型等问题进行了回答。

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

  keepass 能帮助您安全的管理密码。你可以把所有的密码都放入一个带锁(密码)的数据库中,这样你就只用记住该密码(锁)就可以了。而数据库是用当今最先进的加密算法(AES)进行加密的。

  KeePass 官方下载地址:http://keepass.info/download.html

  KeePass 1.11 绿色中文正式版:
  运行平台:Windows

婚礼倒计时...[原创]

[不指定 2008-4-30 01:08 | by 张宴 ]
  4月26日12:20分,我和女友乘坐K267离开北京,27日抵达我家──湖南省湘西自治州古丈县,继续准备5月2日的婚礼。

  结婚典礼将于2008年5月2日早上9点在“坐龙峡大酒店”举行,婚宴将摆酒席45桌,确定参加婚礼的人数有:我的亲戚、同学、朋友,老爸的同事、朋友300余人。另外,还有5月1日即将远途赶来的女友父母、哥姐、亲戚10余人,我大学寝室的两个哥们,女友大学寝室的两位姐妹,以及我大学期间曾工作过的校园媒体──中南民族大学新闻网(http://news.scuec.edu.cn)2003级同学、2004~2006级师弟师妹20人。

  婚礼序曲:



Tags: , ,
  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: , , ,
分页: 10/31 第一页 上页 5 6 7 8 9 10 11 12 13 14 下页 最后页 [ 显示模式: 摘要 | 列表 ]