在
新的一年,
Yo2 的
服务器压力比以前大多了。为了能够提供快度的
博客访问,我们使用了多种
服务软件。比如
nginx、
squid、
lighttpd等,这些在 linux
系统上的
性能都是十分棒的

不过我们还在追求更快、更高效率的解决方案。
我作为一个开发员,想法又特别的多 _-!! 居然想到自己写个 web server _-!! 汗~
有了想法当然必须做出行动
立刻到网上查找相关资料,首先从英文网站出发(国外的开源项目多,并且代码都很好),逛了一整天,终于找到一个国人写的 epoll 代码模型。因为只是个模型,根本没有任何业务处理能力,这些就得自己写了
花费2天 时间,就在这个基础模型上实现了 web server 功能。
yo2pagengine 终于面世
不到 1000 行代码,当然还有很多功能没加进去,但已经可以实现基本的 web server 服务。
我使用了 siege web 服务压力测试软件,测试了一下 yo2pagengine 的性能。在 gdb 调试进程内服务,得出的成绩是每秒处理 150 个请求。我把该结果告诉了 charles 和一个熟悉 web 系统的网友,都觉得这个成绩很棒咯。呵呵,但这个数据只是我在 debug 模式测试出来的,真正的业务处理能力在下面:
$:siege -c 300 -r 100 -f oneoo.com.url (包含350个URL)
Transactions: 30000 hits
Availability: 100.00 %
Elapsed time: 83.53 secs
Data transferred: 217.47 MB
Response time: 0.07 secs
Transaction rate: 359.15 trans/sec
Throughput: 2.60 MB/sec
Concurrency: 25.49
Successful transactions: 30000
Failed transactions: 0
Longest transaction: 13.77
Shortest transaction: 0.00
处理能力达到每秒处理 360 个请求 !哇~这个成绩是在我自己的电脑上测试的,web server 和 siege 都开在同一个电脑上,还有 linux 效率比较低的 X (在我的电脑上,Vista 运行起来比它流畅多了,很不解,怎么人人都说它性能好)如果是在真正的服务器上使用,肯定不只这个成绩 
下面才是本文主要部分:
其实我也不熟悉C语言,只能算入门。但还是顺利实现了自己的需要的功能 
这么多的编程语言,人是不可能全都熟悉的,问题是人的思维是否灵活。
不要担心前路是否平坦,只有踏出了第一步,你才真正知道这条路的好坏,遇到什么问题,尽努力逐一解决,方可实现自己的目标。但如果你连第一步都无法踏出去,你连成功的机会都没了。
点
子、
idea、
想法太多,会使人抓狂。就像我现在的状态一样。
对于新版yo2的开发,我有着太多的想法,很想把全部想到的都做出来,但现实上,我是无法实现的。可能我只能完成想到的50%,更糟糕的是每当我完成一部分,新的点子又出来了 _-!!
我现在就好比进入了程序的死循环一样,无论我怎么做都无法break;我自己并未给自己设计这一功能 _-!! 呵呵。
纳闷,所以记录一下 
S
ubversion是什么?
Subversion是一个自由/开源版本控制系统,它管理文件和目录可以超越时间。一组文件存放在中心版本库,这个版本库很像一个普通的文件服务器,只是它可以记录每一次文件和目录的修改,这便使你可以取得数据以前的版本,从而可以检查所作的更改。从这个方面看,许多人把版本控制系统当作一种“时间机器”。
Subversion可以通过网络访问它的版本库,从而使用户可以在不同的电脑上使用。一定程度上可以说,允许用户在各自的地方修改同一份数据是促进协作。进展可能非常的迅速,并没有一个所有的改变都会取得效果的通道,由于所有的工作都有历史版本,你不必担心由于失去某个通道而影响质量,如果存在不正确的改变,只要取消改变。
一些版本控制系统也是软件配置管理(SCM)系统,这种系统经过特定的精巧设计来管理源代码,有许多关于软件开发的特性—本身理解编程语言、或者提供构建程序的工具。然而,Subversion不是这样一个系统,它是一个通用系统,可以管理任何类型的文件集,对你这可能是源代码—对别人,可能是一个货物清单或者是数字电影。
SVN svnserve 方式安装及配置
I.Linux RedHat 9
1.卸载原版本
# rpm -ev subversion-0.17.1-4503.0
2.安装包
# rpm -ivh --nodeps apr-0.9.5-0.2.i386.rpm
# rpm -ivh --nodeps apr-util-0.9.5-0.1.i386.rpm
# rpm -ivh --nodeps neon-0.24.7-1.i386.rpm
# rpm -ivh --nodeps subversion-1.2.3-1.rh90.i386.rpm
3.建立用户svn,创建repostory
$ svnadmin create /home/svn/svnroot
4.启动SVN服务
$ svnserve -d -r /home/svn/svnroot
这样就简单的建立了一个基础的 SubVersion 开发环境,普通情况下代码是存放在 SubVersion 的数据库中,我们是无法直接把这些代码及时应用,当然 SubVersion 的功能不至于这么简单
我们可以在代码更新的时候添加一个 hook 上去,让 SubVersion 自动把代码更新到我们应用的地方。
添加自动更新的 hook
在 /home/svn/svnroot/hooks 创建一个名称为 post-commit 的脚本,内容为:
#!/bin/sh
REPOS="$1"
REV="$2"
# 第一次更新代码,请使用 checkout 方法把全部文件导出
svn checkout svn://localhost /home/svn/willbe --username oneoo --password ******
# svn://localhost => SubVersion 访问地址
# /home/svn/willbe => 将要把代码输出到的目录
# 次后的代码更新只需要做 update 处理
#svn update /home/svn/willbe --username oneoo --password ******
最新评论
说得好!! 8...
可惜老头和村民没看见这篇文...
顶老...
有这样的态度 赞一个 ^^ 希望yo2越做越好~也肯定会越做越好...
哈哈……你还玩QQ堂…… 卡通片……话说我只看过很少很少的卡通片,为此被鄙视了很多次…...
第二项不是很清楚,只要固定不变的东西是不是就可以开启这块呢...
呀,原来是YO2老大,久仰久仰!~~~~...
以前的卖家已经转为做批发,没有零售了。 你可以在淘宝找找其他的 :...
我觉得还不错呀,怎么联系卖家...
...