Latest Posts »
Latest Comments »
Popular Posts »

spawn-fcgi

Written by bixuan on 2009年06月12号 – 10:38

spawn-fcgi

1.概况

spawn-fcgi官方:http://redmine.lighttpd.net/projects/spawn-fcgi/wiki,可以从这里下载到最新稳定版本。
lighttpd官方:http://www.lighttpd.net/
其实spawn-fcgi是lighttpd的一个分支项目,是一个cgi进程的管理器,效率不错。

2.安装

  1. 下载:
    wget -c http://www.lighttpd.net/download/spawn-fcgi-1.6.2.tar.bz2
    wget -c http://www.lighttpd.net/download/lighttpd-1.4.22.tar.bz2 #(spawn-php.sh这个文件需要从这里提取,具体在:lighttpd-1.4.22/doc/下)
  2. spawn-fcgi安装:
    tar jxvfp spawn-fcgi-1.6.2.tar.bz2
    cd spawn-fcgi-1.6.2
    ./configure
    make
    make install

3.配置

这里主要整理spawn-fcgi相关配置!
安装好后,可以通过:spawn-fcgi -h
Usage: spawn-fcgi [options] [-- <fcgiapp> [fcgi app arguments]]
spawn-fcgi v1.6.2 (ipv6) - spawns FastCGI processes
Options:
-f <path>      filename of the fcgi-application (ignored if <fcgiapp> is given)
-d <directory> chdir to directory before spawning
-a <address>   bind to IPv4/IPv6 address (defaults to 0.0.0.0)
-p <port>      bind to TCP-port
-s <path>      bind to Unix domain socket
-M <mode>      change Unix domain socket mode
-C <children>  (PHP only) numbers of childs to spawn (default: not setting
the PHP_FCGI_CHILDREN environment variable - PHP defaults to 0)
-F <children>  number of children to fork (default 1)
-P <path>      name of PID-file for spawned process (ignored in no-fork mode)
-n             no fork (for daemontools)
-v             show version
-?, -h         show this help
(root only)
-c <directory> chroot to directory
-S             create socket before chroot() (default is to create the socket in the chroot)
-u <user>      change to user-id
-g <group>     change to group-id (default: primary group of user if -u is given)
-U <user>      change Unix domain socket owner to user-id
-G <group>     change Unix domain socket group to group-id
看到详细的参数说明,不过这里为了方便,还是喜欢通过这个spawn-php.sh来管理php-cgi比较方便^_^
有个地方需要注意:spawn-php.sh这个文件有个bug,见下面红色字体部分:
# cat spawn-php.sh
#!/bin/bash
## ABSOLUTE path to the spawn-fcgi binary
SPAWNFCGI=”/usr/local/bin/spawn-fcgi
## ABSOLUTE path to the PHP binary
FCGIPROGRAM=”/app/app/php5-fastcgi/bin/php-cgi
## TCP port to which to bind on localhost
FCGIPORT=”9002″
## number of PHP children to spawn
PHP_FCGI_CHILDREN=10
## maximum number of requests a single PHP process can serve before it is restarted
PHP_FCGI_MAX_REQUESTS=1000
## IP addresses from which PHP should access server connections
FCGI_WEB_SERVER_ADDRS=”192.168.11.159
pripath=”/app/wwwroot/www.ourlinux.net”
# allowed environment variables, separated by spaces
ALLOWED_ENV=”pripath PATH USER”
## if this script is run as root, switch to the following user
USERID=nobody
GROUPID=nobody
################## no config below this line
if test x$PHP_FCGI_CHILDREN = x; then
PHP_FCGI_CHILDREN=5
fi
export PHP_FCGI_MAX_REQUESTS
export FCGI_WEB_SERVER_ADDRS
ALLOWED_ENV=”$ALLOWED_ENV PHP_FCGI_MAX_REQUESTS FCGI_WEB_SERVER_ADDRS”
if test x$UID = x0; then
EX=”$SPAWNFCGI -a $FCGI_WEB_SERVER_ADDRS -p $FCGIPORT -f $FCGIPROGRAM -u $USERID -g $GROUPID -C $PHP_FCGI_CHILDREN”
else
EX=”$SPAWNFCGI -a $FCGI_WEB_SERVER_ADDRS -p $FCGIPORT -f $FCGIPROGRAM -C $PHP_FCGI_CHILDREN”
fi
# copy the allowed environment variables
E=
for i in $ALLOWED_ENV; do
E=”$E $i=${!i}”
done
# clean the environment and set up a new one
env - $E $EX
以上红色部分是要自己补上去,不然默认监听在0.0.0.0,绿色字体部分是要根据具体情况做相应的修改!蓝色字体部分是根据自己的需求加的参数,意思是:php的代码放在pripath这个变量所在的目录下,这个是为了跨机器执行php-cgi,这样可以通过proxy来调用,可以提升cpu利用率(将php-cgi进程跑在cpu消耗低的机器上)

4.后记

如果结合lvs,nginx(lighttpd等L7的负载均衡软件)、memcahced等,这样就可以很方便的实现高可用、高性能的分布式系统:)

Tags: , , , ,
Posted in 运维小技巧 | No Comments »

Nginx模块一致性hash的patch

Written by bixuan on 2009年06月10号 – 17:07

威总威武:

Consistent Hashing 如下所示:首先求出所有备选服务器(节点)的哈希值,并将其
配置到0~232的圆(continuum)上。然后用同样的方法求出存储数据的键的哈希值,并
映射到圆上。然后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个服务器
上。如果超过232仍然找不到服务器,就会保存到第一台服务器上.

详细文档这里下载: nginx_hasnginx_upstream_hash 增加一致性hash


Tags: , ,
Posted in 负载均衡 | No Comments »

51com招聘

Written by bixuan on 2009年06月10号 – 16:32

下面是2则51com招聘的需求,有兴趣的朋友抓住机会啊:)

招聘岗位:IM服务器开发工程师

工作地点:上海市

招聘人数:1人

工作年限:2年以上

外语要求:良好

学历要求:本科及以上

工作职责:

负责IM后台服务器端开发。

特殊要求(技能/工作风格):

1、 精通TCP/IP协议编程,熟悉linux、C/C++编程;

2、 熟悉Mysql数据库开发;

3、 了解大容量、高性能的分布式服务器系统开发原理;

4、 良好的沟通和团队协作能力;

5、 热爱程序开发,喜欢研究追踪最新技术;

有IM后台开发经验者优先。

招聘岗位:PHP开发工程师(游戏事业部)

工作地点:上海市

招聘人数:1人

工作年限:1年以上

外语要求:一般

学历要求:大专及以上

性    别:男

工作职责:

游戏官网开发以及游戏活动开发。

特殊要求(技能/工作风格):

1、 熟悉linux系统;

2、 精通Php+Mysql+Apache开发;

3、 熟悉设计模式;

4、 熟悉Linux下c/c++编程人员优先;

5、 有游戏网站开发、游戏活动开发经验者优先。

有兴趣的朋友可以联系我[bixuan at gmail dot com]!


Posted in 生活日志 | No Comments »

DNS部署原则实践

Written by bixuan on 2009年05月31号 – 11:36

部署原则

主要是按照3H1L(高可用、高性能、高安全、低成本)原则来部署,加上DNS本来就是一个强大的分布式数据库,且会根据RTT值来选择最快的DNS,以及结合中国复杂的网络环境,具体实践方法如下:
  • 至少有2台以上的服务器,防止服务器的单点;
  • 分布在不同的IDC,且不同的ISP机房,最好是不在同一城市,防止IDC和链路的单点;
  • 所在IDC链路的速度要稳定和高效,比如是骨干节点
  • 放在防火墙后面,因为DNS服务器一旦遭受攻击效果非常明显,后果非常严重;
  • 放在在不同的机柜下,防止电源单点;
  • 放在不同的交换机下,防止交换机单点;
  • 我们现在使用的BIND9是一款老牌知名的DNS软件,稳定性高,性能可以达到:30Kqps;
  • DNS对系统资源消耗并不是很多(带宽也就几百Kbps),普通的DELL(根据经验,DELL的机器相对是比较稳定的)机器就可以了;
  • 维护方便,不然出问题不能很快响应那是很糟糕的;

Tags: , , , ,
Posted in 运维小技巧 | No Comments »

Linux系统安装

Written by bixuan on 2009年05月24号 – 12:08

Linux系统安装

现在Linux版本可谓百花齐放,但是在商业用途上,我个人建议还是使用商业版比较好。当然使用商业版并不一定要去购买,比如RHAS的版本其实可以从网上找的到iso,你可以放心使用。
为什么推荐使用商业版呢?主要原因是:对硬件驱动的支持比较好!因为有些硬件驱动只对商业版支持的比较好!当然,也不是说非商业版不能用,这里需要特别申明,免得被人抛砖,哈……

安装建议

这里以比较大众化的RHAS5为例吧,个人建议在安装RHAS的时候,如果作为服务器用的,那么尽量不要安装X-Window,可以节省空间,同时下面的包建议安装:
@ editors
@ development-tools
@ x-software-development
ntp
sysstat
pcre
pcre-devel
net-snmp
ncurses-devel
libxml2-devel
lrzsz
openssl-devel
dstat
kernel-module-xfs-2.6.18-92.el5-0.4-1.el5.x86_64.rpm
xfsprogs-2.9.4-1.sl5.x86_64.rpm
xfsprogs-devel-2.9.4-1.sl5.x86_64.rpm

其中红色标出的3个包默认的ISO里是没有的,需要从外面去下载,不如去centos站点下载。

系统配置建议

系统安装完毕后,有些服务是必须要启动的,比如:
  • sshd
  • crond
  • network
当然建议下面的服务也启动:
  • syslog
  • acpid
  • readahead
  • irqbalance
  • rawdevices
  • readahead_early
其中红色标出的特别建议!
不太建议启动selinux和iptables,除非有特别需要。
基本的服务配置好后,时间校验是必须要配置的,否则随着机器的运行,系统时间将会变得不准,我这里是这样的:
* */4 * * * root /usr/sbin/ntpdate -u 192.168.6.2; hwclock -w;
其中192.168.6.2是我们的时间服务器(ntpd),至于如何配置,请见《架设时间服务器》一文。
最后请做好好应用程序安装目录的规范!

Tags: , , , , , ,
Posted in 操作系统, 运维小技巧 | 1 Comment »

IDC管理

Written by bixuan on 2009年05月24号 – 11:51

IDC管理

这个话题比较大,结合我自己的经验或者印象记录一下,欢迎指教!

IDC标准

  1. 环境保证
    机房整体抗地震级别高达8级,地板承重达800/平方米;多台空调机采用侧送和风管输送相结合的方式送风,保证通风、恒温、恒湿。机房温度:15-25摄氏度,相对湿度:30%-70%;绝缘地板设计,温度烟雾感应消防系统、防火报警探测头,遇火情时系统自动报警,并启动气体自动灭器灭火。
  2. 电力保障
    两路一类市电采用10KV三相线路,互为主备用;双路冗余大功率智能UPS系统,保证持续供电;双备份柴油发电机组后备电源,保证99.9%持续电力供应;交流电220V 50HZ(16A或25A)标准19英寸机架,每台机架采用双路UPS电源直接供电;
  3. 安全保障
    专业保安24小时值守,进出机房验证登记制度;数据中心安装美国AV公司的闭路电视监控系统,提供全智能化管理。电视墙监控系统专人7×24小时值守,所有录像保存三个月以上;数据中心安装德国西门子公司的非接触式IC卡电子门禁系统及指纹示别系统,采用先进的数据库管理,IC卡内保存有持卡人编号、进出区域限制、时间限制等资料,只有经过特殊授权的人员才能进入重要区域。
  4. 网络保障
    是否为骨干节点,有效保障网络的稳定性和高速性;CISCO GSR 12008(或JUNIPER M20)高端路由器支撑IDC内部骨干;IDC内部重要网络设备采用双点备份,避免单点故障,增强网络可靠性;
  5. 技术支持
    我们拥有雄厚的维护和支持力量,其资深专业工程师具备多年电信机房管理、互联网网络维护及网站建设维护经验,将为您提供从机房设备维护、网络实时监控到网络设备故障排除等全方位的7×24小时的专业技术支持。
这里只是列出几个主要的,实际上的标准远远比这个复杂,有兴趣的可以去网上搜索……

如何选择一个好的IDC

鉴别一个IDC的好坏,大致分为3个方面:
  1. 网络质量(网络拓朴,包括冗余设计,网络架构,安全)
  2. 自身硬件资源
  3. 服务

网络质量

如何来确定一个IDC的网络质量,首先要看其网络拓扑,一般IDC都会告诉客户。网络拓扑设计的质量,直接关系到后续的服务,比如安全等。
这里我们简单的从以下三个方面来考虑:
  1. 到各个骨干节点的网络延迟
  2. 所需要的路由跳数(Hops)
  3. 各地下载速度
测试网络延迟和Hops
其中网络延迟和所需要的路由跳数(hops)可以使用mtr命令来采集数据,并绘制成图形。
/usr/sbin/mtr -c 10 -n -r 202.96.209.5
当然,后面的IP采用骨干节点来测试比较准确(实在不行就收集各地的互联星空IP也可以),或者收集各省的互联星空IP也是可以的。
测试各地下载速度
测试各地下载速度会比较麻烦,因为需要在测试的IDC里放服务器,然后通过测速系统来采集数据,然后看下载所需要的响应时间。

自身硬件资源

IDC自身硬件资源的好坏,直接影响后面的服务。这里主要涉及到:核心网络设备,UPS、机柜,可用带宽等。

服务

这里服务器主要是软服务,比如机房调整是否会提前通知,和客户配合是否很积极且效率高什么的。

常见IDC维护

说真的IDC维护是琐碎的,又是高危的活(辐射大,听到好个朋友说他认识的人中有人因为长期在机房高能根正而影响生育)
以下项目必须检查:
  • 温度:[标准:15-25摄氏度]
  • 湿度:[标准:30-70%]
  • 主机硬盘:[正常是绿灯,故障是红灯]
  • 其他…

Tags: , , , ,
Posted in 网络, 运维小技巧 | No Comments »

正在整理升级《Linux命令大全》

Written by bixuan on 2009年05月21号 – 21:41

最近在整理文档,升级《Linux命令大全》这一CHM:)


Posted in 运维小技巧 | 3 Comments »

读《提升可伸缩性的八项最佳实践》有感

Written by bixuan on 2009年05月21号 – 11:47

昨天在群里看到朋友分享的《提升可伸缩性的八项最佳实践》个人认为核心是减少延迟!

评价性能参数有以下4个指标:

  1. 延迟
  2. 吞吐量
  3. 利用率
  4. 效率

在排查问题或者设计的时候,如果将所有涉及到有延迟的地方全部整理出来,然后逐个解决延迟高的点,这样实践的点就会更多,这样也就提升了性能!


Tags: , , , , , ,
Posted in 运维小技巧 | No Comments »

监控系统

Written by bixuan on 2009年04月9号 – 19:35

最近在构思监控系统的设计,大的分类包括:

  1. 应用监控(对具体业务的监控,监控可服务情况)
  2. 物理监控(主要是底层的资源监控,监控资源件的利用率)

估计近期就会编码了…


Tags: ,
Posted in 生活日志 | No Comments »

DNS系统上线咯

Written by bixuan on 2009年04月9号 – 00:59

DNS管理系统终于上线了,嘿嘿:)


Tags:
Posted in 生活日志 | 1 Comment »
 Page 1 of 44  1  2  3  4  5 » ...  Last »