﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-Wiseman's Code Life</title><link>http://www.cnblogs.com/wuxilin/</link><description>任凭溺水三千,吾只取一瓢饮;纵若万千风情,吾只对你情有独钟!</description><language>zh-cn</language><lastBuildDate>Wed, 10 Feb 2010 08:37:48 GMT</lastBuildDate><pubDate>Wed, 10 Feb 2010 08:37:48 GMT</pubDate><ttl>60</ttl><item><title>IIS ftp的一个问题:home directory inaccessible</title><link>http://www.cnblogs.com/wuxilin/archive/2009/05/28/ftp_home_directory_inaccessible_problem.html</link><dc:creator>wiseman</dc:creator><author>wiseman</author><pubDate>Wed, 27 May 2009 17:12:00 GMT</pubDate><guid>http://www.cnblogs.com/wuxilin/archive/2009/05/28/ftp_home_directory_inaccessible_problem.html</guid><description><![CDATA[<p>阅读: 706 评论: 0 作者: <a href="http://www.cnblogs.com/wuxilin/" target="_blank">wiseman</a> 发表于 2009-05-28 01:12 <a href="http://www.cnblogs.com/wuxilin/archive/2009/05/28/ftp_home_directory_inaccessible_problem.html" target="_blank">原文链接</a></p><p>今天上架了台机器,在配ftp时出现一个相当奇怪的问题:<br />用户名和密码都正确的情况下,每次连接都提示:530 User&nbsp;&lt;username&gt; cannot log in, home directory inaccessible.</p>
<p>按这个提示,查了些资料,给出的答复无非就是两种:1.ftp的目录不存在;2.登录用户所在的用户组对这个目录没有读权限.</p>
<p>我仔细查了用户登录访问的目录权限,证明是没有问题的,但是实际情况就是一直反复的出这个提示,登录不了.</p>
<p>折腾了大半晚上,最后检查默认ftp站点的根目录,发现有一个c:\inetpub\ftproot,这个目录的恰恰缺少了登录用户组的读权限,补上,重新连接,一切正常.</p>
<p>问题的根源大概是之前所做的一次服务器安全优化,优化过程中可能对某些系统文件夹的读写权限做了修改。</p>
<p>问题记下,备忘.</p><img src="http://www.cnblogs.com/wuxilin/aggbug/1491202.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/wuxilin/archive/2009/05/28/ftp_home_directory_inaccessible_problem.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/wuxilin/archive/2009/05/28/ftp_home_directory_inaccessible_problem.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56855/" target="_blank">NDepend 3.0已与Visual Studio集成</a><span style="color:gray">(2010-02-10 16:17)</span><br/>· <a href="http://news.cnblogs.com/n/56854/" target="_blank">Ruby in Steel 1.5发布，去除IronRuby支持</a><span style="color:gray">(2010-02-10 16:14)</span><br/>· <a href="http://news.cnblogs.com/n/56852/" target="_blank">淘宝网通过索引模式涉足网络文学</a><span style="color:gray">(2010-02-10 15:59)</span><br/>· <a href="http://news.cnblogs.com/n/56851/" target="_blank">苹果发布 iPhone/iPad SDK 3.2 beta2 开发包</a><span style="color:gray">(2010-02-10 15:37)</span><br/>· <a href="http://news.cnblogs.com/n/56850/" target="_blank">“谷姐”：披着“谷歌”羊皮的悲哀？</a><span style="color:gray">(2010-02-10 15:32)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/news/tag/Buzz/" target="_blank">Google Buzz相关新闻</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>MS SQLServer2000 的孤立用户问题及解决.</title><link>http://www.cnblogs.com/wuxilin/archive/2008/10/22/Error-21002-SQLDMO.html</link><dc:creator>wiseman</dc:creator><author>wiseman</author><pubDate>Tue, 21 Oct 2008 23:29:00 GMT</pubDate><guid>http://www.cnblogs.com/wuxilin/archive/2008/10/22/Error-21002-SQLDMO.html</guid><description><![CDATA[<p>阅读: 160 评论: 0 作者: <a href="http://www.cnblogs.com/wuxilin/" target="_blank">wiseman</a> 发表于 2008-10-22 07:29 <a href="http://www.cnblogs.com/wuxilin/archive/2008/10/22/Error-21002-SQLDMO.html" target="_blank">原文链接</a></p><p>在备份数据库之后,进行还原时,如果发生了错误,则会产生所谓的孤立用户.这个用户是还原之前的数据的用户,假如你再添加同名用户,则会出现错误:</p>
<p>错误21002:[SQL-DMO]用户"xxx"已经存在。当你在企业管理器中点开数据库树菜单,选择用户,想要删除这个孤立用户时,则会提示无法删除.</p>
<p>google了几下,找出了最快捷的解决方案,备忘</p>
<p>1.打开查询分析器,并在数据库下拉菜单中选择需要修复的库</p>
<p>2.exec sp_change_users_login 'REPORT' 获取孤立用户列表</p>
<p>3.新建用户,假如为之前的同名用户,userA</p>
<p>3.exec sp_change_users_login 'UPDATE_ONE','孤立用户表的用户名','userA'</p>
<p>这里如果你的孤立用户名与新建用户名相同的话,则为exec sp_change_users_login 'UPDATE_ONE','userA','userA'</p>
<img src="http://www.cnblogs.com/wuxilin/aggbug/1316399.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/wuxilin/archive/2008/10/22/Error-21002-SQLDMO.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/wuxilin/archive/2008/10/22/Error-21002-SQLDMO.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56855/" target="_blank">NDepend 3.0已与Visual Studio集成</a><span style="color:gray">(2010-02-10 16:17)</span><br/>· <a href="http://news.cnblogs.com/n/56854/" target="_blank">Ruby in Steel 1.5发布，去除IronRuby支持</a><span style="color:gray">(2010-02-10 16:14)</span><br/>· <a href="http://news.cnblogs.com/n/56852/" target="_blank">淘宝网通过索引模式涉足网络文学</a><span style="color:gray">(2010-02-10 15:59)</span><br/>· <a href="http://news.cnblogs.com/n/56851/" target="_blank">苹果发布 iPhone/iPad SDK 3.2 beta2 开发包</a><span style="color:gray">(2010-02-10 15:37)</span><br/>· <a href="http://news.cnblogs.com/n/56850/" target="_blank">“谷姐”：披着“谷歌”羊皮的悲哀？</a><span style="color:gray">(2010-02-10 15:32)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/news/tag/Buzz/" target="_blank">Google Buzz相关新闻</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>服务器部署.NET 3.5的问题</title><link>http://www.cnblogs.com/wuxilin/archive/2008/05/21/dotNet35SetUpProblem.html</link><dc:creator>wiseman</dc:creator><author>wiseman</author><pubDate>Wed, 21 May 2008 09:57:00 GMT</pubDate><guid>http://www.cnblogs.com/wuxilin/archive/2008/05/21/dotNet35SetUpProblem.html</guid><description><![CDATA[<p>阅读: 885 评论: 2 作者: <a href="http://www.cnblogs.com/wuxilin/" target="_blank">wiseman</a> 发表于 2008-05-21 17:57 <a href="http://www.cnblogs.com/wuxilin/archive/2008/05/21/dotNet35SetUpProblem.html" target="_blank">原文链接</a></p><p>今天重装了一台服务器,然后安装.net 3.5环境,先用的2.7M那个安装包<br />
因为服务器下载速度快,所以一般安装时下载文件也都不会觉得慢.<br />
但这次总是在下载时就不动了,我以为是微软今天网络不是太好,于是换了197M的完整版安装包.谁知道找个版本安装过程依然需要下载一些东西,例如语言包之类的,结果就是卡着不动,等了半小时,1KB没下!<br />
后来在网上查了些资料,无意中看到有人在XP下安装.NET 3.5出现过类似问题,装上SP2就好了,我想起服务器刚重装2003,还没来得及打SP2补丁呢,莫非还跟这个有关?于是把SP2补丁打上了,结果安装,一切正常....<br />
挺无语的一个问题,记下来备忘,有类似问题的朋友可以参考解决.</p>
<img src="http://www.cnblogs.com/wuxilin/aggbug/1204246.html?type=1" width="1" height="1" alt=""/><p>评论: 2　<a href="http://www.cnblogs.com/wuxilin/archive/2008/05/21/dotNet35SetUpProblem.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/wuxilin/archive/2008/05/21/dotNet35SetUpProblem.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56855/" target="_blank">NDepend 3.0已与Visual Studio集成</a><span style="color:gray">(2010-02-10 16:17)</span><br/>· <a href="http://news.cnblogs.com/n/56854/" target="_blank">Ruby in Steel 1.5发布，去除IronRuby支持</a><span style="color:gray">(2010-02-10 16:14)</span><br/>· <a href="http://news.cnblogs.com/n/56852/" target="_blank">淘宝网通过索引模式涉足网络文学</a><span style="color:gray">(2010-02-10 15:59)</span><br/>· <a href="http://news.cnblogs.com/n/56851/" target="_blank">苹果发布 iPhone/iPad SDK 3.2 beta2 开发包</a><span style="color:gray">(2010-02-10 15:37)</span><br/>· <a href="http://news.cnblogs.com/n/56850/" target="_blank">“谷姐”：披着“谷歌”羊皮的悲哀？</a><span style="color:gray">(2010-02-10 15:32)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/news/tag/Buzz/" target="_blank">Google Buzz相关新闻</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>愚蠢的错误</title><link>http://www.cnblogs.com/wuxilin/archive/2008/01/18/1044831.html</link><dc:creator>wiseman</dc:creator><author>wiseman</author><pubDate>Fri, 18 Jan 2008 11:02:00 GMT</pubDate><guid>http://www.cnblogs.com/wuxilin/archive/2008/01/18/1044831.html</guid><description><![CDATA[<p>阅读: 241 评论: 0 作者: <a href="http://www.cnblogs.com/wuxilin/" target="_blank">wiseman</a> 发表于 2008-01-18 19:02 <a href="http://www.cnblogs.com/wuxilin/archive/2008/01/18/1044831.html" target="_blank">原文链接</a></p>今天给一台新服务器配WEB(win2003)的时候发现所有的动态文件均无法调用,表现为"该页无法显示",没有其他任何信息,事件查看器也没有错误.<br />
花了整整一天的时间来查原因,最后甚至叫IDC帮忙重装了系统,居然还是不行!<br />
刚刚终于找到了原因:<br />
非常小的一个问题,我安装IIS的时候,选取的I386文件夹是wind2003未打SP补丁的原版文件,然后系统本身是SP2的,因此安装一会儿会提示插入SP2的盘,于是我再定位到SP2补丁解压后的I386文件夹,系统可以找到所需的文件,并完成安装.<br />
<br />
问题就出在这,2003原版的I386目录和SP2的I386目录存在相同名字,但是不同版本的程序集,而我在安装的时候因为是先从原版2003的I386目录获取了部分程序集,然后因为提示文件缺失,再到SP2补丁的I386目录获取了缺失的程序集,并且还获取了部分原版2003的I386目录下同样也存在的程序集,这整个过程使的IIS的安装变的混乱,最后直接导致安装后的IIS存在不可预料的错误(居然还能正常的发布HTML静态页)<br />
<br />
解决方案:把SP2的I386全部拷贝到原版的I386目录下.再重新安装IIS.<br />
<br />
教训一个,记下.
<img src="http://www.cnblogs.com/wuxilin/aggbug/1044831.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/wuxilin/archive/2008/01/18/1044831.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/wuxilin/archive/2008/01/18/1044831.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56855/" target="_blank">NDepend 3.0已与Visual Studio集成</a><span style="color:gray">(2010-02-10 16:17)</span><br/>· <a href="http://news.cnblogs.com/n/56854/" target="_blank">Ruby in Steel 1.5发布，去除IronRuby支持</a><span style="color:gray">(2010-02-10 16:14)</span><br/>· <a href="http://news.cnblogs.com/n/56852/" target="_blank">淘宝网通过索引模式涉足网络文学</a><span style="color:gray">(2010-02-10 15:59)</span><br/>· <a href="http://news.cnblogs.com/n/56851/" target="_blank">苹果发布 iPhone/iPad SDK 3.2 beta2 开发包</a><span style="color:gray">(2010-02-10 15:37)</span><br/>· <a href="http://news.cnblogs.com/n/56850/" target="_blank">“谷姐”：披着“谷歌”羊皮的悲哀？</a><span style="color:gray">(2010-02-10 15:32)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/news/tag/Buzz/" target="_blank">Google Buzz相关新闻</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>VS2005项目迁移至VS2008初体验.</title><link>http://www.cnblogs.com/wuxilin/archive/2007/12/12/VS2008Startkit.html</link><dc:creator>wiseman</dc:creator><author>wiseman</author><pubDate>Wed, 12 Dec 2007 10:05:00 GMT</pubDate><guid>http://www.cnblogs.com/wuxilin/archive/2007/12/12/VS2008Startkit.html</guid><description><![CDATA[<p>阅读: 1125 评论: 1 作者: <a href="http://www.cnblogs.com/wuxilin/" target="_blank">wiseman</a> 发表于 2007-12-12 18:05 <a href="http://www.cnblogs.com/wuxilin/archive/2007/12/12/VS2008Startkit.html" target="_blank">原文链接</a></p>近段时间忙于其他的事物,无暇旁顾.NET,以至于大半个月前就装好的VS2008也一直没机会试用.昨天,发现一个以前的项目需要修正个bug,正好借这个机会小试了下VS2008.<br />
我下的版本是VS2008 Team suit rtm版,用TS主要是因为有单元测试,如果不考虑这个,用pro版也一样的.<br />
不大记得2005的TS版有多大了,我机子上只有个2005 pro版,是2.69G,这次下的VS2008 TS有3.82G之大(都包含了MSDN),要换了以前的破电脑,20G的硬盘,下完后再安装下,大半硬盘空间就没了.....<br />
<br />
同2003迁移到2005一样,VS2005的项目要迁移到2008一样非常的简单,双击2005的solution或project文件,就会出现升级的提示框,按提示一路点下去就好了,我注意到里面有段话说到,"升级后的项目有可能无法在更早版本的VS中打开",其实我压根就没指望升成2008后还能在2005下使用(以前用VC6升级成VC7后,是不能用再返回去用VS6打开的),按MS的意思,应该还是可能的了?以后可以试下:)<br />
<br />
大部分的2005的项目都可以像上面说的那样,简单的迁移完成,编译后就可以用了.在安装2008之后,虽然.NET Framework升级到了3.5,但是在IIS里,ASP.NET版本选项卡中,依然只有1.1和2.0的选项,我试验了下,只要选择2.0的环境就可以正常的运行.NET 3.5版本的WEB程序.这是个好消息,说明如果你的程序里不包含3.5特性的话,编译后依然可以直接放在以前服务器上运行,而不需要升级服务器的.NET版本(刚刚查了下,目前.NET所有的名字空间的runtime都在2.0或更低的版本框架下).<br />
<br />
除此之外,VS2008的项目属性中多了一项TargetFramework,你可以选择2.0,3.0和3.5三个版本,如果是2.0或3.0,那么会有部分的.NET名字空间无法引用,具体表现是在引用-&gt;.NET的列表中为灰色不可选择.由2005升级到2008的项目,默认的TargetFramework为2.0版本<br />
<br />
我在迁移项目的过程中也不是一帆风顺,在solution下,有个项目使用了MS ASP.NET AJAX 1.0和相应的ajaxControlToolkit,编译时直接报错.<br />
这是因为在VS2008中集成了ASP.NET AJAX1.0,而且版本号和路径都变化了,所以需要删除以前的引用,重新引用.<br />
AJAX用到的空间是System.Web.Extensions和System.Web.Extensions.Design,重新引用后,编译可以通过了,但是一运行又是一堆错误.要改的东西还不少.<br />
首先是web.config文件,在assemblies,configsections等节点下的Extensions相关的type全部需要修改,最简单的方法是新建个VS2008的WEBSITE项目,往页面随便扔个ajax的控件,像ScriptManager之类的,然后再去查看它的web.config文件,对照来改吧.<br />
改完后再运行还是会报错,这个时候是因为我使用了ajaxControlToolkit的原因,他的版本是.NET 2.0,问题不是出在这,而是出在它引用的AJAX包的文件,与上面的项目一样,版本是错误的.因此,把ajaxControlToolkit的solution打开,重新对System.Web.Extensions和System.Web.Extensions.Design引用,然后再rebuild.再运行自己的项目,一切都OK了.<br />
<br />
这次我只是小小的试用了下VS2008,虽然一般的项目迁移不会有什么问题,但只要牵涉到第三方组件的时候,问题就会变的复杂,不过只要自己能够认真的一步步找问题,这都不是问题了:) 
<img src="http://www.cnblogs.com/wuxilin/aggbug/992530.html?type=1" width="1" height="1" alt=""/><p>评论: 1　<a href="http://www.cnblogs.com/wuxilin/archive/2007/12/12/VS2008Startkit.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/wuxilin/archive/2007/12/12/VS2008Startkit.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56855/" target="_blank">NDepend 3.0已与Visual Studio集成</a><span style="color:gray">(2010-02-10 16:17)</span><br/>· <a href="http://news.cnblogs.com/n/56854/" target="_blank">Ruby in Steel 1.5发布，去除IronRuby支持</a><span style="color:gray">(2010-02-10 16:14)</span><br/>· <a href="http://news.cnblogs.com/n/56852/" target="_blank">淘宝网通过索引模式涉足网络文学</a><span style="color:gray">(2010-02-10 15:59)</span><br/>· <a href="http://news.cnblogs.com/n/56851/" target="_blank">苹果发布 iPhone/iPad SDK 3.2 beta2 开发包</a><span style="color:gray">(2010-02-10 15:37)</span><br/>· <a href="http://news.cnblogs.com/n/56850/" target="_blank">“谷姐”：披着“谷歌”羊皮的悲哀？</a><span style="color:gray">(2010-02-10 15:32)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/news/tag/Buzz/" target="_blank">Google Buzz相关新闻</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>Linux学习笔记:REHL AS4的上网配置,Http服务安装及配置,ftp服务的安装及配置</title><link>http://www.cnblogs.com/wuxilin/archive/2007/12/11/RedhatEnterpriseLinux_AS4_Step2.html</link><dc:creator>wiseman</dc:creator><author>wiseman</author><pubDate>Tue, 11 Dec 2007 10:28:00 GMT</pubDate><guid>http://www.cnblogs.com/wuxilin/archive/2007/12/11/RedhatEnterpriseLinux_AS4_Step2.html</guid><description><![CDATA[<p>阅读: 1819 评论: 1 作者: <a href="http://www.cnblogs.com/wuxilin/" target="_blank">wiseman</a> 发表于 2007-12-11 18:28 <a href="http://www.cnblogs.com/wuxilin/archive/2007/12/11/RedhatEnterpriseLinux_AS4_Step2.html" target="_blank">原文链接</a></p><p><strong style="font-size: 14pt">Linux下上网.</strong><br />
<br />
&nbsp;&nbsp;&nbsp; 其实在linux下上网和在windows下上网一样简单,常用的方式有EthernetConnection,XDSL Connection和Wireless Connection.<br />
在REHL AS4下,通过图形界面,可以很轻松的配置.在应用程序-&gt;系统工具-&gt;网络设备控制中可以调出设置面板.点添加新设备,可以根据自己的网络情况来选择以何种方式.如下图:<br />
<img height="500" alt="" src="http://www.cnblogs.com/images/cnblogs_com/wuxilin/WisemanPic00002.jpg" width="591" border="0" /><br />
因为我自己是小区宽带接入方式,因此我选择了以太网连接.像学校教育网内学生宿舍那种使用固定内网IP的,也应该选用这种,如果是自动获取IP的,也是这个,只是在后来的IP设置中选dhcp自动获得.<br />
如果是家庭的ADSL拨号上网,则选用XDSL链接方式,无线网卡上网则选择无线连接,这里就不赘述了.<br />
因为我是在VMW里用rehl上网,因此我还需要安装些针对虚拟机的特殊服务.我VMW网络选择的桥接模式(bridge),因此还需要安装<font face="Courier New">VMware网络服务接口</font>和<font face="Courier New">VMware桥接网络服务,另外还要开启dhcp服务.这些在安装VMW时应该就都会安装上,不过因为我使用的是绿色版本,所以需要手动来安装和启动,稍微麻烦点.<br />
这些都配好后,在以太网设备属性选项卡里根据自己的情况,勾选自动获取IP和DNS或静态输入.<br />
在保证你的宿主机能正常上网的前提下,现在你的虚拟机下的linux应该也能上网了.测试一下:<br />
在terminal中输入ifconfig命令可以查看当前的网络状况.ping 网关来测试与路由器是否连接正常.最后ping 外网地址,能通的话,就算大功告成了.<br />
<br />
<strong style="font-size: 14pt">Http服务和apache</strong><br />
<br />
&nbsp;&nbsp;&nbsp; 作为服务器OS,提供http服务是再经常不过的一项需求,在windows2000/2003中,我们最经常使用IIS作为web server来提供http服务.在linux下可没有IIS,这里最广泛使用的web server是apache,虽然我最终会选用lighthttpd来作为我的web server,但是在这之前要先了解下apache.<br />
&nbsp;&nbsp;&nbsp; rhel默认安装包含了apache,如果你不确定,可以用rpm -q httpd来查询一下,如果已经安装了,将返回版本号,比如在rhel AS4下,输入后将返回:httpd-2.0.52-25.ent.如果没有安装的话,你可以在<font face="Courier New">Applications-&gt;System Settings-&gt;Add/Remove Applications中,把Web Server(万维网服务)前的勾给选上,再点更新即可.如果提示插入安装盘,按提示把盘放入光驱即可.或者直接去apache的网站下载最新的版本,解压后,用rpm -ivh来安装也可以.<br />
&nbsp;&nbsp;&nbsp; 安装了apache后,需要在启动http服务,rehl一样提供了非常简单直观的图形操作界面,可以在<font face="Courier New">Applications-&gt;System Settings-&gt;Service中选中httpd,然后启动它.或者直接输入命令service httpd start.<br />
&nbsp;&nbsp;&nbsp; 服务启动后,就已经可以访问了,打开浏览器,在里面输入<a href="http://localhost/">http://localhost/</a>,就可以看到默认的redhat的页面了,如下所示:<br />
<img height="480" alt="" src="http://www.cnblogs.com/images/cnblogs_com/wuxilin/WisemanPic00003.jpg" width="672" border="0" /><br />
这个时候,如果是在一个局域网内,就可以用其他的机器输入IP来直接访问该页面了.<br />
接下来是配置问题,rhel提供了一个http服务的配置工具,在<font face="Courier New">Applications-&gt;System Settings-&gt;Server Settings-&gt;HTTP</font>可以调出该配置器,使用非常的简单.如果有过配置IIS的经验,配置这个也不难,但是里面没有配置虚拟目录的功能(不会是我没找到吧?),这里我介绍下如何配置虚拟目录.<br />
在linux中,软件大量的依赖配置文件,不光是静态信息,功能和模块也大量使用配置文件动态生成(保存后常常需要重启服务).这对于软件的扩展非常好,如果要增加第三方的组件,可以很容易实现,其本身的配置也可以相当的灵活.这些年在.NET项目里,配置文件也开始大量的被使用,与早期的开发方式相比,这种方式优点太多,低耦合,易维护,灵活等,像CS,castle,DNN都是典型.<br />
继续回到apache的配置中来,上面说到配置文件,虚拟目录的建立也需要通过修改配置文件实现.<br />
首先找到配置文件并编辑<br />
vi /etc/httpd/conf/httpd.conf<br />
在apache中添加虚拟目录是通过"别名(alias)"来实现的,具体如下:<br />
比如我要在根目录下添加一个虚拟目录User,指向一个我自己的文件价/UserData/wiseman,那么我该这么写<br />
Alias /User/ "/UserData/wiseman/"<br />
把上面这句写入到配置文件当中.注意这里路径的"/"号,两个路径的"/"号应该保持一致,即,前面带的话,后面也带,不带,则都不带.在访问的时候,如果配置的带了"/"号,那么输入地址必须要写,否则将返回404错误,如果不带"/"号的话,则输入地址无论带不带"/"号,都能正确显示.即是:<br />
假如你配置了<a href="http://localhost/user/">http://localhost/user/</a>,那么你只能通过<a href="http://localhost/wiseman/">http://localhost/user/</a>来访问,假如你输入了<a href="http://localhost/user">http://localhost/user</a>,将返回404错误.如果你配置的是<a href="http://localhost/user/">http://localhost/user</a>,那么无论是<a href="http://localhost/user/">http://localhost/user</a>还是<a href="http://localhost/user/">http://localhost/user/</a>都能正确显示.<br />
添加了别名,如果想要用户能够访问,还需要添加目录权限.<br />
在conf文件底部填写如下的内容<br />
<font face="Courier New">&lt;Directory "/UserData/wiseman"&gt;<br />
Options Indexes Includes FollowSymLinks<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
AllowOverride None<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
Allow from all</p>
<p>Order allow,deny</p>
<p>&lt;/Directory&gt;<br />
AllowOverride None</font>保证所有用户都可以访问该目录下页面.<br />
Allow from all 保证所有来源都可以显示该目录下内容,这个部分可以用来做防盗链,from 后面填写自己的网站地址即可.<br />
Order allow,deny 表示默认情况是不允许任何网站的访问,然后不在allow范围的网站和在deny范围的网站将被禁止访问.<br />
这里allow所有网站,deny没有,因此最后得出允许所有网站访问的结论.<br />
关于allow,deny和order指令,可以参看这篇介绍:<font face="Courier New"><a href="http://man.chinaunix.net/newsoft/ApacheManual/mod/mod_access.html"><font face="Courier New">http://man.chinaunix.net/newsoft/ApacheManual/mod/mod_access.html</font><br />
</a>其他的参数含义如下:<br />
<font face="Courier New">　　Option：定义在目录内所能执行的操作。 <br />
　　None：表示只能浏览， <br />
　　FollowSymLinks：允许页面连接到别处， <br />
　　ExecCGI：允许执行CGI， <br />
　　MultiViews：允许看动画或是听音乐之类的操作， <br />
　　Indexes：允许服务器返回目录的格式化列表， <br />
　　Includes：允许使用SSI。这些设置可以复选。 <br />
　　All：则可以做任何事，但不包括MultiViews。 <br />
　　AllowOverride：加None参数表示任何人都可以浏览该目录下的文件。 <br />
　　另外的参数有：FileInfo、AuthConfig、Limit。</font><br />
修改完毕后,用:wq退出vi,然后service httpd restart<br />
再通过<a href="http://localhost/User/">http://localhost/User/</a>看,已经可以访问了.<br />
<br />
<br />
<br />
<span style="font-size: 14pt"><strong>FTP服务和vsftp<br />
</strong></span><br />
&nbsp;&nbsp;&nbsp; 最后是ftp的配置了.在win2003下,我最常使用的ftp服务端软件是serverU,功能确实强大,不过有一些安全漏洞,可以通过配置权限解决,这里不多说明了.<br />
可惜的是,在linux下没有serverU,不过一样也有其他的ftp软件,这里面最受推崇的就是vsftp(very safe ftp)了,听名字就知道是个非常安全的<a href="ftp://ftp.ftp">ftp.ftp</a>的配置过程比较的复杂,也没有任何配置工具,全部要手工输命令操作,下面介绍下简单的流程.<br />
&nbsp;&nbsp;&nbsp; 首先,同样是检查vsftp的安装.在rhel AS4里,默认安装时,是没有安装vsftp的,如果当时安装的时候没有勾选的话,那么就需要先安装.检查自己的机子是否安装的命令是rpm -qa |grep vsftpd,如果有安装,将返回版本号,在AS4的光盘中带的vsftp版本是2.0.X.<br />
&nbsp;&nbsp;&nbsp; 与安装apache一样,你可以通过rehl图形界面里的添加/删除工具添加ftp服务,然后按提示插入光盘,最后安装vsftp.或者在光盘中找到rpm包,通过rpm ivh安装.在安装完毕后,记得输入rpm -qa |grep vsftpd来确定已经安装成功(如下图).<br />
<img height="275" alt="" src="http://www.cnblogs.com/images/cnblogs_com/wuxilin/WisemanPic00004.jpg" width="627" border="0" /><br />
接下来,service vsftpd start<br />
启动ftp服务,然后ftp localhost(或者IP),这时已经可以连上ftp了,提示输入用户名和密码.这个时候,如果你输入root和口令,将提示login failed,如果你有建立其他的系统用户,输入用户名和相应的口令就能登录成功.<br />
vsftp默认的配置是与linux系统共用用户库的,即是,操作系统的用户可以登录ftp,默认的列表是其用户目录(/Home/用户名),在/etc/vsftpd/vsftpd.conf中可以修改其权限,匿名用户的设置也在那里.<br />
不过我想要的并不是这种ftp服务,我希望像serverU一样,可以建立用户,这个用户与OS登录的用户没有任何关系,其可以管理的文件夹位置也可以自己定义.这种用户被称为虚拟用户.在linux里,要实现上面的功能一般有两种方法.第一种是建立用户,然后去掉shell登录权限,然后设定文件路径.另一种是建立用户库,里面包含若干用户,映射到一个系统用户上,然后设定文件路径.<br />
我使用的是第二种方法.<br />
首先建立虚拟用户vUser,这个用户不用来ftp登录,作为虚拟用户存在,每一个虚拟用户可以看作一个用户组.<br />
useradd -d /ftp地址 vUser //建立用户组,并指定该组用户的列表文件夹<br />
chmod 700 /ftp地址&nbsp; //把该文件夹设置为仅该组用户可以操作.<br />
<br />
然后是具体的过程<br />
1)构造口令文件ftpUserInfo.txt<br />
按照奇数行为用户名,偶数行为密码的方式创建该文件.如,文件内容如下:<br />
wiseman<br />
12345<br />
wiseman2<br />
54321<br />
表示有两个用户,wiseman的密码是12345,wiseman2的密码是54321,这两个用户最终用于ftp登录.<br />
建立文件可以用cat或vi命令,如果在图形界面下,也可以直接创建.<br />
这里有个问题,我在创建的时候,在后面的build过程中出现过如下出错提示:<br />
<font face="Courier New">db_load: unexpected end of input data or key/data pair <br />
db_load: odd number of key/data pairs </font><br />
原因大概是在ftpUserInfo.txt最后需要再加个回车,加回车后,就没问题了,在图形界面的文本编辑器保存默认也会添加一个回车,所以,如果是在图形界面的文本编辑器下直接生成的,不会出现该错误.<br />
2)生成加密用户库<br />
db_load -T -t hash -f ~/ftpUserInfo.txt /etc/vsftpd_login.db<br />
chmod 600 /etc/vsftpd_login.db //修改加密用户库文件的权限<br />
这部分很容易出问题,首先是hash那个参数,这指定的是用hash加密(也就是md5),使用其他的,或没该参数,最后登录会出错.<br />
然后是db_load指令,似乎很多版本的linux都没装这个命令,至少rhel AS4默认就没装,网上很多朋友也说没有装.如果指定该指令出现"没有该指令"的提示,说明肯定没装了.<br />
先用rpm -qa|grep db4查下自己的系统装了什么.在rhel AS4里,默认装了个db4-4.XXX,实际上,该指令还需要db4-devel-xxx,db4-utils-xxx两个文件.在rhel 4的安装盘里,这几个文件都有,具体哪张盘不记得了,如果有问题的,可以自己去rpm包里找找.<br />
安装完后,在执行db_load命令就没问题了.<br />
<br />
3)增加vsftp的pam验证.<br />
先建个文件<br />
<font face="Courier New">vi /etc/pam.d/ftp.vu<br />
然后再里面加入两句命令,对ftp的登录进行处理.<br />
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login<br />
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login<br />
<br />
4)修改vsftp的配置文件<br />
vi /etc/vsftpd/vsftpd.conf<br />
主要修改下面的内容<br />
<font face="Courier New">listen=YES<br />
anonymous_enable=NO<br />
local_enable=YES<br />
write_enable=NO<br />
anon_upload_enable=NO<br />
anon_mkdir_write_enable=NO<br />
anon_other_write_enable=NO<br />
chroot_local_user=YES<br />
guest_enable=YES 􀃆 //这里的guest用户就是指的上面用户库里的用户<br />
guest_username=vUser 􀃆 //与为ftp建立的用户名要一致<br />
ftpd_banner=这里填写FTP的欢迎信息<br />
pam_service_name=ftp.vu 􀃆 //这里指定PAM的配置文件.</font><br />
<br />
保存退出后,配置就算是结束了<br />
先重启服务service vsftpd restart<br />
这个时候,ftp localhost之后,返回的信息将多一行<font face="Courier New">KERBEROS_V4 rejected as an authentication type Name 这样的信息,输入在ftp用户库里的用户名和密码,就可以成功登陆了.<br />
<br />
PS:这之后,如果遇上文件不能列表,文件不能下载,不能上传等问题,请注意文件的权限,这个可以耐心点慢慢测试.<br />
</font></font></font></font></font></font></p>
<img src="http://www.cnblogs.com/wuxilin/aggbug/991148.html?type=1" width="1" height="1" alt=""/><p>评论: 1　<a href="http://www.cnblogs.com/wuxilin/archive/2007/12/11/RedhatEnterpriseLinux_AS4_Step2.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/wuxilin/archive/2007/12/11/RedhatEnterpriseLinux_AS4_Step2.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56855/" target="_blank">NDepend 3.0已与Visual Studio集成</a><span style="color:gray">(2010-02-10 16:17)</span><br/>· <a href="http://news.cnblogs.com/n/56854/" target="_blank">Ruby in Steel 1.5发布，去除IronRuby支持</a><span style="color:gray">(2010-02-10 16:14)</span><br/>· <a href="http://news.cnblogs.com/n/56852/" target="_blank">淘宝网通过索引模式涉足网络文学</a><span style="color:gray">(2010-02-10 15:59)</span><br/>· <a href="http://news.cnblogs.com/n/56851/" target="_blank">苹果发布 iPhone/iPad SDK 3.2 beta2 开发包</a><span style="color:gray">(2010-02-10 15:37)</span><br/>· <a href="http://news.cnblogs.com/n/56850/" target="_blank">“谷姐”：披着“谷歌”羊皮的悲哀？</a><span style="color:gray">(2010-02-10 15:32)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/news/tag/Buzz/" target="_blank">Google Buzz相关新闻</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>Linux学习笔记:需求和安装</title><link>http://www.cnblogs.com/wuxilin/archive/2007/12/09/RedhatEnterpriseLinux_AS4_Step1.html</link><dc:creator>wiseman</dc:creator><author>wiseman</author><pubDate>Sat, 08 Dec 2007 16:24:00 GMT</pubDate><guid>http://www.cnblogs.com/wuxilin/archive/2007/12/09/RedhatEnterpriseLinux_AS4_Step1.html</guid><description><![CDATA[<p>阅读: 196 评论: 0 作者: <a href="http://www.cnblogs.com/wuxilin/" target="_blank">wiseman</a> 发表于 2007-12-09 00:24 <a href="http://www.cnblogs.com/wuxilin/archive/2007/12/09/RedhatEnterpriseLinux_AS4_Step1.html" target="_blank">原文链接</a></p>最近有一台服务器越来越不堪重负(百万级流量),响应间隔越来越长,把症状向一位专精服务器技术的朋友说明后,他认为是网卡的原因,在采纳了他的意见后,我考虑到那台服务器的操作系统为windows2003,打算干脆把系统也换掉,毕竟在大流量下windows系统的表现不怎么样.<br />
有了这个打算后,就开始了解些这方面的知识,服务器知识我并不丰富,在最初,对于新系统的选择也比较模糊,定位在bsd系统和linux系统.<br />
BSD系统里,候选的系统有FreeBSD和OpenBSD.Linux里候选的有Redhat AS和CentOS.<br />
在网上翻阅了不少资料,了解了些知识后知道,BSD系统较Linux系统,稳定性和安全性要更强,但是磁盘系统性能嫌弱.<br />
我那台服务器提供的是图片服务,上面有数百上千万的图片,毫无疑问,它对磁盘性能的要求更高.于是,第一步定下来了,选择linux系统.<br />
<br />
我有过两次Redhat的使用经历,那还是在很早以前了,一次是早期的学习,简单的接触下linux系统,另一次是在redhat下做了些C语言的算法练习.由于年代久远而且当时的学习重心也完全不在之上,所以,对于linux的了解基本还是空白.所以Redhat和CentOS这两个广受好评的linux服务器系统,从熟悉程度来说,选哪个,都对我差不多.<br />
<br />
我最终选择的是Rhel 4,因为我用迅雷在网上很快下完了它,然后开始在虚拟机上开始了我的linux学习之旅.<br />
因为装的是linux,因此我使用<font face="Courier New">VMware</font>作为虚拟机,使用的版本是<font face="Courier New">VMwareWorkstation v6.0.下面给出在虚拟机上安装Rhel的一般流程.<br />
<br />
首先,需要通过Vmw建立新的虚拟机,该步骤很简单,文件-&gt;新建-&gt;虚拟机,接下来的基本一路next下去即可,在选择客户机时,因为这里要安装linux,我选择的OS是Linux,版本为RHEL4.需要注意的在磁盘容量设置那一步,里面有个选项"立即分配所有磁盘空间",这个勾默认是非选中的,这样,虚拟机所占的空间会随着着你的虚拟机系统文件的增大而增大,如果勾上的话,那么将立即为你的虚拟机分配上面指定的磁盘空间(即,你为虚拟机分配的文件夹将产生一个大小与你设置的最大磁盘容量相同的占位文件),这需要些时间来执行该操作,但是能提高你虚拟机的性能.<br />
<br />
虚拟机建立之后就可以开始安装linux了,这个过程也不复杂.根据你是使用光盘还是映像文件安装linux,你只需要在光驱放入光盘或者在虚拟机的硬件设置中,把CD-Rom设为ISO启动,并选中引导CD的ISO文件.然后启动虚拟机,选择图形安装界面,接下来的安装非常的简单.<br />
所有的CD依次安装完毕后,再reboot一次,然后做些设置,就可以正式进入Rhel的主界面了,至此,学习linux的第一步已经踏出.</font>
<img src="http://www.cnblogs.com/wuxilin/aggbug/988151.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/wuxilin/archive/2007/12/09/RedhatEnterpriseLinux_AS4_Step1.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/wuxilin/archive/2007/12/09/RedhatEnterpriseLinux_AS4_Step1.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56855/" target="_blank">NDepend 3.0已与Visual Studio集成</a><span style="color:gray">(2010-02-10 16:17)</span><br/>· <a href="http://news.cnblogs.com/n/56854/" target="_blank">Ruby in Steel 1.5发布，去除IronRuby支持</a><span style="color:gray">(2010-02-10 16:14)</span><br/>· <a href="http://news.cnblogs.com/n/56852/" target="_blank">淘宝网通过索引模式涉足网络文学</a><span style="color:gray">(2010-02-10 15:59)</span><br/>· <a href="http://news.cnblogs.com/n/56851/" target="_blank">苹果发布 iPhone/iPad SDK 3.2 beta2 开发包</a><span style="color:gray">(2010-02-10 15:37)</span><br/>· <a href="http://news.cnblogs.com/n/56850/" target="_blank">“谷姐”：披着“谷歌”羊皮的悲哀？</a><span style="color:gray">(2010-02-10 15:32)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/news/tag/Buzz/" target="_blank">Google Buzz相关新闻</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>通过了解MySpace的六次重构经历,来认识分布式系统到底该如何创建.</title><link>http://www.cnblogs.com/wuxilin/archive/2007/07/17/820482.html</link><dc:creator>wiseman</dc:creator><author>wiseman</author><pubDate>Mon, 16 Jul 2007 16:13:00 GMT</pubDate><guid>http://www.cnblogs.com/wuxilin/archive/2007/07/17/820482.html</guid><description><![CDATA[<p>阅读: 1585 评论: 2 作者: <a href="http://www.cnblogs.com/wuxilin/" target="_blank">wiseman</a> 发表于 2007-07-17 00:13 <a href="http://www.cnblogs.com/wuxilin/archive/2007/07/17/820482.html" target="_blank">原文链接</a></p><p><strong>这是我在网上无意中看到的一篇文章,介绍了myspace的六次重构,对于做海量用户系统的朋友来说,应该能从中受到很多启发.</strong><br><br><span style="COLOR: #800000">在每个里程碑，站点负担都会超过底层系统部分组件的最大载荷，特别是数据库和存储系统。接着，功能出现问题，用户失声尖叫。最后，技术团队必须为此修订系统策略。</span></p>
<p style="COLOR: #800000">虽然自2005年早期，站点账户数超过7百万后，系统架构到目前为止保持了相对稳定，但MySpace仍然在为SQL Server支持的同时连接数等方面继续攻坚，Benedetto说，"我们已经尽可能把事情做到最好"。</p>
<p style="COLOR: #800000">里程碑一：50万账户</p>
<p style="COLOR: #800000">按Benedetto 的说法，MySpace最初的系统很小，只有两台Web服务器和一个数据库服务器。那时使用的是Dell双CPU、4G内存的系统。</p>
<p style="COLOR: #800000">单个数据库就意味着所有数据都存储在一个地方，再由两台Web服务器分担处理用户请求的工作量。但就像MySpace后来的几次底层系统修订时的情况一样，三服务器架构很快不堪重负。此后一个时期内，MySpace基本是通过添置更多Web服务器来对付用户暴增问题的。 </p>
<p style="COLOR: #800000">但到在2004年早期，MySpace用户数增长到50万后，数据库服务器也已开始汗流浃背。</p>
<p style="COLOR: #800000">但和Web服务器不同，增加数据库可没那么简单。如果一个站点由多个数据库支持，设计者必须考虑的是，如何在保证数据一致性的前提下，让多个数据库分担压力。</p>
<p style="COLOR: #800000">在第二代架构中，MySpace运行在3个SQL Server数据库服务器上——一个为主，所有的新数据都向它提交，然后由它复制到其他两个；另两个全力向用户供给数据，用以在博客和个人资料栏显示。这种方式在一段时间内效果很好——只要增加数据库服务器，加大硬盘，就可以应对用户数和访问量的增加。 </p>
<p style="COLOR: #800000">里程碑二：1-2百万账户 </p>
<p style="COLOR: #800000">MySpace注册数到达1百万至2百万区间后，数据库服务器开始受制于I/O容量——即它们存取数据的速度。而当时才是2004年中，距离上次数据库系统调整不过数月。用户的提交请求被阻塞，就像千人乐迷要挤进只能容纳几百人的夜总会，站点开始遭遇"主要矛盾"，Benedetto说，这意味着MySpace永远都会轻度落后于用户需求。</p>
<p style="COLOR: #800000">"有人花5分钟都无法完成留言，因此用户总是抱怨说网站已经完蛋了。"他补充道。</p>
<p style="COLOR: #800000">这一次的数据库架构按照垂直分割模式设计，不同的数据库服务于站点的不同功能，如登录、用户资料和博客。于是，站点的扩展性问题看似又可以告一段落了，可以歇一阵子。</p>
<p style="COLOR: #800000">垂直分割策略利于多个数据库分担访问压力，当用户要求增加新功能时，MySpace将投入新的数据库予以支持它。账户到达2百万后，MySpace还从存储设备与数据库服务器直接交互的方式切换到SAN（Storage Area Network，存储区域网络）——用高带宽、专门设计的网络将大量磁盘存储设备连接在一起，而数据库连接到SAN。这项措施极大提升了系统性能、正常运行时间和可靠性，Benedetto说。 </p>
<p style="COLOR: #800000">里程碑三：3百万账户</p>
<p style="COLOR: #800000">当用户继续增加到3百万后，垂直分割策略也开始难以为继。尽管站点的各个应用被设计得高度独立，但有些信息必须共享。在这个架构里，每个数据库必须有各自的用户表副本——MySpace授权用户的电子花名册。这就意味着一个用户注册时，该条账户记录必须在9个不同数据库上分别创建。但在个别情况下，如果其中某台数据库服务器临时不可到达，对应事务就会失败，从而造成账户非完全创建，最终导致此用户的该项服务无效。</p>
<p style="COLOR: #800000">另外一个问题是，个别应用如博客增长太快，那么专门为它服务的数据库就有巨大压力。 </p>
<p style="COLOR: #800000">2004年中，MySpace面临Web开发者称之为"向上扩展"对"向外扩展"（译者注：Scale Up和Scale Out，也称硬件扩展和软件扩展）的抉择——要么扩展到更大更强、也更昂贵的服务器上，要么部署大量相对便宜的服务器来分担数据库压力。一般来说，大型站点倾向于向外扩展，因为这将让它们得以保留通过增加服务器以提升系统能力的后路。</p>
<p style="COLOR: #800000">但成功地向外扩展架构必须解决复杂的分布式计算问题，大型站点如Google、Yahoo和Amazon.com，都必须自行研发大量相关技术。以Google为例，它构建了自己的分布式文件系统。</p>
<p style="COLOR: #800000">另外，向外扩展策略还需要大量重写原来软件，以保证系统能在分布式服务器上运行。"搞不好，开发人员的所有工作都将白费"，Benedetto说。</p>
<p style="COLOR: #800000">因此，MySpace首先将重点放在了向上扩展上，花费了大约1个半月时间研究升级到32CPU服务器以管理更大数据库的问题。Benedetto说，"那时候，这个方案看似可能解决一切问题。"如稳定性，更棒的是对现有软件几乎没有改动要求。 </p>
<p style="COLOR: #800000">糟糕的是，高端服务器极其昂贵，是购置同样处理能力和内存速度的多台服务器总和的很多倍。而且，站点架构师预测，从长期来看，即便是巨型数据库，最后也会不堪重负，Benedetto说，"换句话讲，只要增长趋势存在，我们最后无论如何都要走上向外扩展的道路。"</p>
<p style="COLOR: #800000">因此，MySpace最终将目光移到分布式计算架构——它在物理上分布的众多服务器，整体必须逻辑上等同于单台机器。拿数据库来说，就不能再像过去那样将应用拆分，再以不同数据库分别支持，而必须将整个站点看作一个应用。现在，数据库模型里只有一个用户表，支持博客、个人资料和其他核心功能的数据都存储在相同数据库。 </p>
<p style="COLOR: #800000">既然所有的核心数据逻辑上都组织到一个数据库，那么MySpace必须找到新的办法以分担负荷——显然，运行在普通硬件上的单个数据库服务器是无能为力的。这次，不再按站点功能和应用分割数据库，MySpace开始将它的用户按每百万一组分割，然后将各组的全部数据分别存入独立的SQL Server实例。目前，MySpace的每台数据库服务器实际运行两个SQL Server实例，也就是说每台服务器服务大约2百万用户。Benedetto指出，以后还可以按照这种模式以更小粒度划分架构，从而优化负荷分担。 </p>
<p style="COLOR: #800000">当然，还是有一个特殊数据库保存了所有账户的名称和密码。用户登录后，保存了他们其他数据的数据库再接管服务。特殊数据库的用户表虽然庞大，但它只负责用户登录，功能单一，所以负荷还是比较容易控制的。</p>
<p style="COLOR: #800000">里程碑四：9百万到1千7百万账户</p>
<p style="COLOR: #800000">2005年早期，账户达到9百万后，MySpace开始用Microsoft的C#编写ASP.NET程序。C#是C语言的最新派生语言，吸收了C++和Java的优点，依托于Microsoft .NET框架（Microsoft为软件组件化和分布式计算而设计的模型架构）。ASP.NET则由编写Web站点脚本的ASP技术演化而来，是Microsoft目前主推的Web站点编程环境。</p>
<p style="COLOR: #800000">可以说是立竿见影， MySpace马上就发现ASP.NET程序运行更有效率，与ColdFusion相比，完成同样任务需消耗的处理器能力更小。据技术总监Whitcomb说，新代码需要150台服务器完成的工作，如果用ColdFusion则需要246台。Benedetto还指出，性能上升的另一个原因可能是在变换软件平台，并用新语言重写代码的过程中，程序员复审并优化了一些功能流程。</p>
<p style="COLOR: #800000">最终，MySpace开始大规模迁移到ASP.NET。即便剩余的少部分ColdFusion代码，也从Cold-Fusion服务器搬到了ASP.NET，因为他们得到了BlueDragon.NET（乔治亚州阿尔法利塔New Atlanta Communications公司的产品，它能将ColdFusion代码自动重新编译到Microsoft平台）的帮助。</p>
<p style="COLOR: #800000">账户达到1千万时，MySpace再次遭遇存储瓶颈问题。SAN的引入解决了早期一些性能问题，但站点目前的要求已经开始周期性超越SAN的I/O容量——即它从磁盘存储系统读写数据的极限速度。 </p>
<p style="COLOR: #800000">原因之一是每数据库1百万账户的分割策略，通常情况下的确可以将压力均分到各台服务器，但现实并非一成不变。比如第七台账户数据库上线后，仅仅7天就被塞满了，主要原因是佛罗里达一个乐队的歌迷疯狂注册。</p>
<p style="COLOR: #800000">某个数据库可能因为任何原因，在任何时候遭遇主要负荷，这时，SAN中绑定到该数据库的磁盘存储设备簇就可能过载。"SAN让磁盘I/O能力大幅提升了，但将它们绑定到特定数据库的做法是错误的。"Benedetto说。</p>
<p style="COLOR: #800000">最初，MySpace通过定期重新分配SAN中数据，以让其更为均衡的方法基本解决了这个问题，但这是一个人工过程，"大概需要两个人全职工作。"Benedetto说。 </p>
<p style="COLOR: #800000">长期解决方案是迁移到虚拟存储体系上，这样，整个SAN被当作一个巨型存储池，不再要求每个磁盘为特定应用服务。MySpace目前采用了一种新型SAN设备——来自加利福尼亚州弗里蒙特的3PARdata。</p>
<p style="COLOR: #800000">在3PAR的系统里，仍能在逻辑上按容量划分数据存储，但它不再被绑定到特定磁盘或磁盘簇，而是散布于大量磁盘。这就使均分数据访问负荷成为可能。当数据库需要写入一组数据时，任何空闲磁盘都可以马上完成这项工作，而不再像以前那样阻塞在可能已经过载的磁盘阵列处。而且，因为多个磁盘都有数据副本，读取数据时，也不会使SAN的任何组件过载。 </p>
<p style="COLOR: #800000">当2005年春天账户数达到1千7百万时，MySpace又启用了新的策略以减轻存储系统压力，即增加数据缓存层——位于Web服务器和数据库服务器之间，其唯一职能是在内存中建立被频繁请求数据对象的副本，如此一来，不访问数据库也可以向Web应用供给数据。换句话说，100个用户请求同一份资料，以前需要查询数据库100次，而现在只需1次，其余都可从缓存数据中获得。当然如果页面变化，缓存的数据必须从内存擦除，然后重新从数据库获取——但在此之前，数据库的压力已经大大减轻，整个站点的性能得到提升。 </p>
<p style="COLOR: #800000">缓存区还为那些不需要记入数据库的数据提供了驿站，比如为跟踪用户会话而创建的临时文件——Benedetto坦言他需要在这方面补课，"我是数据库存储狂热分子，因此我总是想着将万事万物都存到数据库。"但将像会话跟踪这类的数据也存到数据库，站点将陷入泥沼。</p>
<p style="COLOR: #800000">增加缓存服务器是"一开始就应该做的事情，但我们成长太快，以致于没有时间坐下来好好研究这件事情。"Benedetto补充道。</p>
<p style="COLOR: #800000">里程碑五：2千6百万账户</p>
<p style="COLOR: #800000">2005年中期，服务账户数达到2千6百万时，MySpace切换到了还处于beta测试的SQL Server 2005。转换何太急？主流看法是2005版支持64位处理器。但Benedetto说，"这不是主要原因，尽管这也很重要；主要还是因为我们对内存的渴求。"支持64位的数据库可以管理更多内存。</p>
<p style="COLOR: #800000">更多内存就意味着更高的性能和更大的容量。原来运行32位版本的SQL Server服务器，能同时使用的内存最多只有4G。切换到64位，就好像加粗了输水管的直径。升级到SQL Server 2005和64位Windows Server 2003后，MySpace每台服务器配备了32G内存，后于2006年再次将配置标准提升到64G。 </p>
<p style="COLOR: #800000">意外错误</p>
<p style="COLOR: #800000">如果没有对系统架构的历次修改与升级，MySpace根本不可能走到今天。但是，为什么系统还经常吃撑着了？很多用户抱怨的"意外错误"是怎么引起的呢？</p>
<p style="COLOR: #800000">原因之一是MySpace对Microsoft的Web技术的应用已经进入连Microsoft自己也才刚刚开始探索的领域。比如11月，超出SQL Server最大同时连接数，MySpace系统崩溃。Benedetto说，这类可能引发系统崩溃的情况大概三天才会出现一次，但仍然过于频繁了，以致惹人恼怒。一旦数据库罢工，"无论这种情况什么时候发生，未缓存的数据都不能从SQL Server获得，那么你就必然看到一个'意外错误'提示。"他解释说。 </p>
<p style="COLOR: #800000">去年夏天，MySpace的Windows 2003多次自动停止服务。后来发现是操作系统一个内置功能惹的祸——预防分布式拒绝服务攻击（黑客使用很多客户机向服务器发起大量连接请求，以致服务器瘫痪）。MySpace和其他很多顶级大站点一样，肯定会经常遭受攻击，但它应该从网络级而不是依靠Windows本身的功能来解决问题——否则，大量MySpace合法用户连接时也会引起服务器反击。</p>
<p style="COLOR: #800000">"我们花了大约一个月时间寻找Windows 2003服务器自动停止的原因。"Benedetto说。最后，通过Microsoft的帮助，他们才知道该怎么通知服务器："别开枪，是友军。" </p>
<p style="COLOR: #800000">紧接着是在去年7月某个周日晚上，MySpace总部所在地洛杉矶停电，造成整个系统停运12小时。大型Web站点通常要在地理上分布配置多个数据中心以预防单点故障。本来，MySpace还有其他两个数据中心以应对突发事件，但Web服务器都依赖于部署在洛杉矶的SAN。没有洛杉矶的SAN，Web服务器除了恳求你耐心等待，不能提供任何服务。</p>
<p style="COLOR: #800000">Benedetto说，主数据中心的可靠性通过下列措施保证：可接入两张不同电网，另有后备电源和一台储备有30天燃料的发电机。但在这次事故中，不仅两张电网失效，而且在切换到备份电源的过程中，操作员烧掉了主动力线路。 </p>
<p style="COLOR: #800000">2007年中，MySpace在另两个后备站点上也建设了SAN。这对分担负荷大有帮助——正常情况下，每个SAN都能负担三分之一的数据访问量。而在紧急情况下，任何一个站点都可以独立支撑整个服务，Benedetto说。</p>
<p style="COLOR: #800000">MySpace仍然在为提高稳定性奋斗，虽然很多用户表示了足够信任且能原谅偶现的错误页面。</p>
<p style="COLOR: #800000">"作为开发人员，我憎恶Bug，它太气人了。"Dan Tanner这个31岁的德克萨斯软件工程师说，他通过MySpace重新联系到了高中和大学同学。"不过，MySpace对我们的用处很大，因此我们可以原谅偶发的故障和错误。" Tanner说，如果站点某天出现故障甚至崩溃，恢复以后他还是会继续使用。 </p>
<p style="COLOR: #800000">这就是为什么Drew在论坛里咆哮时，大部分用户都告诉他应该保持平静，如果等几分钟，问题就会解决的原因。Drew无法平静，他写道，"我已经两次给MySpace发邮件，而它说一小时前还是正常的，现在出了点问题&#8230;&#8230;完全是一堆废话。"另一个用户回复说，"毕竟它是免费的。"Benedetto坦承100%的可靠性不是他的目标。"它不是银行，而是一个免费的服务。"他说。</p>
<p style="COLOR: #800000">换句话说，MySpace的偶发故障可能造成某人最后更新的个人资料丢失，但并不意味着网站弄丢了用户的钱财。"关键是要认识到，与保证站点性能相比，丢失少许数据的故障是可接受的。"Benedetto说。所以，MySpace甘冒丢失2分钟到2小时内任意点数据的危险，在SQL Server配置里延长了"checkpoint"操作——它将待更新数据永久记录到磁盘——的间隔时间，因为这样做可以加快数据库的运行。 </p>
<p style="COLOR: #800000">Benedetto说，同样，开发人员还经常在几个小时内就完成构思、编码、测试和发布全过程。这有引入Bug的风险，但这样做可以更快实现新功能。而且，因为进行大规模真实测试不具可行性，他们的测试通常是在仅以部分活跃用户为对象，且用户对软件新功能和改进不知就里的情况下进行的。因为事实上不可能做真实的加载测试，他们做的测试通常都是针对站点。</p>
<p style="COLOR: #800000">"我们犯过大量错误，"Benedetto说，"但到头来，我认为我们做对的还是比做错的多。" </p>
<p style="COLOR: #800000">MySpace Tech Roster</p>
<p style="COLOR: #800000">January 16, 2007</p>
<p style="COLOR: #800000">By David F. Carr <br></p>
<br><br><span>我的一些思考:<br>看完这篇文章首先很惊讶myspace居然是基于.net平台的系统,windows2003+asp.net+IIS+SQLSERVER,虽然我是一个纯粹的MS技术者,但是对于MS的WEB应用总是有点疑虑,我的担心大概是来自于到处都在鼓吹的LAMP,我并不敌视开源,但是我承认,它给我带来了很大的压力.看了这篇文章,我有点庆幸也有点笑自己之前的迂腐,其实对于技术来说,优劣只在于开发者本身,myspace的六次重构,很好的说明了这一点.<br>我们常常讲分布式系统,这个概念很大,简单点说,就是把系统给拆分开来,把本来一台服务器做的事,分到两台服务器来做.如果只在一台服务器上部署两个程序来执行之前一个程序做的事,我认为那不叫分布式,也是完全没必要的,分布式的原则是"<strong>后分布</strong>"(lazy distribute),因为这本身是件损耗性能的工作,如果不能通过它来获得明显的性能提升,那为什么还要分布式?<br>myspace的六次重构基本都是围绕数据库来进行的,做了这么多年的WEB应用,我早就知道了数据库对于一个网站来说是多么的重要.在程序没有额外的问题的基础上,随着流量的增大,最先出现问题的,往往就是数据库.症状通常为,数据库查询/更新变的非常非常的慢,经常超时等.<br>这个时候,我们能做的事非常有限,无非是调整下SQLServer的内存大小,给服务器加内存换速度更快的硬盘等.如果要认真的解决这个问题,对于一般的开发者来说,都会自然的想到拆库.海量的数据查询对于SQL来说本就是不该存在的,无论你的数据库优化的多么好,比如你用的Oracle,数据吞吐量很大,难道查询100W的记录会比SQL查询1W条更快吗?拆库又分本地数据库分多个表和多个服务器分多个库,执行顺序为由前到後,当数据库的压力由海量查询变成磁盘IO之后,就需要更多的数据库服务器了.<br>除了硬件手段,更常用的是采用缓存.myspace直到第四次改版的后期才开始正式的引入缓存策略,这确实是个失误,如果从最开始就考虑到缓存的作用的话,那么数据库服务器至少不会膨胀的那么快,也可以有更多的时间来思考更好的架构.当然,正如Benedetto所说,这是件一开始就该考虑的事,但是myspace成长的太快了.<br>不是谁都有机会来为一个流量在世界上排名前10的网站来设计架构,因此myspace的后面的若干次重构,对于普通的开发者已经很难接触了,我认为,在第三个里程碑时,也就是通过服务器的横向扩展来实现的分布式,已经足够支持巨型网站的应用了.myspace是个交互型特别强的网站,用户执行的请求数会远大于一般的网站,这也是它巨大的数据库压力的来源.<br>最后总结一下WEB系统分布式的要点:<br>1.不到需要,绝对不要分布<br>2.分布式应该围绕数据库展开<br>3.分布式系统本身具有很强的扩展性,系统性能的提升和硬件的增加是线性关系.<br><br>感想写的比较乱,基本想到什么写的什么,各位看官各取所需即是.</span>
<img src="http://www.cnblogs.com/wuxilin/aggbug/820482.html?type=1" width="1" height="1" alt=""/><p>评论: 2　<a href="http://www.cnblogs.com/wuxilin/archive/2007/07/17/820482.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/wuxilin/archive/2007/07/17/820482.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56855/" target="_blank">NDepend 3.0已与Visual Studio集成</a><span style="color:gray">(2010-02-10 16:17)</span><br/>· <a href="http://news.cnblogs.com/n/56854/" target="_blank">Ruby in Steel 1.5发布，去除IronRuby支持</a><span style="color:gray">(2010-02-10 16:14)</span><br/>· <a href="http://news.cnblogs.com/n/56852/" target="_blank">淘宝网通过索引模式涉足网络文学</a><span style="color:gray">(2010-02-10 15:59)</span><br/>· <a href="http://news.cnblogs.com/n/56851/" target="_blank">苹果发布 iPhone/iPad SDK 3.2 beta2 开发包</a><span style="color:gray">(2010-02-10 15:37)</span><br/>· <a href="http://news.cnblogs.com/n/56850/" target="_blank">“谷姐”：披着“谷歌”羊皮的悲哀？</a><span style="color:gray">(2010-02-10 15:32)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/news/tag/Buzz/" target="_blank">Google Buzz相关新闻</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>WebService problem:The remote name could not be resolved</title><link>http://www.cnblogs.com/wuxilin/archive/2007/06/21/791630.html</link><dc:creator>wiseman</dc:creator><author>wiseman</author><pubDate>Thu, 21 Jun 2007 03:40:00 GMT</pubDate><guid>http://www.cnblogs.com/wuxilin/archive/2007/06/21/791630.html</guid><description><![CDATA[<p>阅读: 1614 评论: 0 作者: <a href="http://www.cnblogs.com/wuxilin/" target="_blank">wiseman</a> 发表于 2007-06-21 11:40 <a href="http://www.cnblogs.com/wuxilin/archive/2007/06/21/791630.html" target="_blank">原文链接</a></p>今天一早起来,发现网站的通行证瘫痪了,无法显示,立刻上服务器调用通行证,依然如此.提示出错信息如下:<br>
<h2><em>The remote name could not be resolved: 'xx.com'</em> </h2>
<font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif "><strong>Description: </strong>An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. <br><br><strong>Exception Details: </strong>System.Net.WebException: The remote name could not be resolved: 'xx.com'<br><br>似乎是服务器无法解析,于是直接连webservice的asmx,直接该页无法显示.更加奇怪的是,只有这一台服务器出现了这种情况,其他的服务器均能连上.于是开始怀疑是DNS问题,在出问题的服务器上ping一下通行证服务的域名,发现ping不通,再随便ping一个域名,一样ping不通.<br>问题看起来就是DNS的了,打电话给IDC,问咋回事,他告诉我XX地区的DNS今天全挂了,叫我换个DNS...不早告诉我,害我忙活了半天,遂换了个DNS,测试,没有问题.<br>如果有同样问题的朋友,可以参照解决.</font>
<img src="http://www.cnblogs.com/wuxilin/aggbug/791630.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/wuxilin/archive/2007/06/21/791630.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/wuxilin/archive/2007/06/21/791630.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56855/" target="_blank">NDepend 3.0已与Visual Studio集成</a><span style="color:gray">(2010-02-10 16:17)</span><br/>· <a href="http://news.cnblogs.com/n/56854/" target="_blank">Ruby in Steel 1.5发布，去除IronRuby支持</a><span style="color:gray">(2010-02-10 16:14)</span><br/>· <a href="http://news.cnblogs.com/n/56852/" target="_blank">淘宝网通过索引模式涉足网络文学</a><span style="color:gray">(2010-02-10 15:59)</span><br/>· <a href="http://news.cnblogs.com/n/56851/" target="_blank">苹果发布 iPhone/iPad SDK 3.2 beta2 开发包</a><span style="color:gray">(2010-02-10 15:37)</span><br/>· <a href="http://news.cnblogs.com/n/56850/" target="_blank">“谷姐”：披着“谷歌”羊皮的悲哀？</a><span style="color:gray">(2010-02-10 15:32)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/news/tag/Buzz/" target="_blank">Google Buzz相关新闻</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>烦人的CommunityServer</title><link>http://www.cnblogs.com/wuxilin/archive/2007/04/27/729963.html</link><dc:creator>wiseman</dc:creator><author>wiseman</author><pubDate>Fri, 27 Apr 2007 08:24:00 GMT</pubDate><guid>http://www.cnblogs.com/wuxilin/archive/2007/04/27/729963.html</guid><description><![CDATA[<p>阅读: 261 评论: 0 作者: <a href="http://www.cnblogs.com/wuxilin/" target="_blank">wiseman</a> 发表于 2007-04-27 16:24 <a href="http://www.cnblogs.com/wuxilin/archive/2007/04/27/729963.html" target="_blank">原文链接</a></p>CS2.0的在线列表一直就不能正确的显示在线人数，一直很忙也没时间去管，今天越看越郁闷，狠下心花了半天的时间来找问题的究竟<br>CS的缓存很庞大，在线列表也当然使用了缓存，大致流程是：<br>用户执行某个页面的浏览<br>获取了当前用户的状态<br>SetLocation(),把用户的当前在线状态写入UsersOnline这个类里的哈希表里（会员表或游客表）<br>在线用户的写入就是上面这些，需要提一下的是，这里面UsersOnline用单件模式来实现唯一性，但是实例对象不是用静态方式存储，而是以Cache方式存起来，这样一来可以遵循整个CS系统的缓存结构，二来缓存的方式也更加强大（依赖条件，Callback函数等)<br><br>接下来是在线用户的消去。正常情况下，只有一个途径会从缓存中消去在线用户（这里不存在缓存过期问题，因为上述缓存建立时是永不过期的），这个途径就是通过Jobs来定时执行消去方法。<br>在CS中，所有定时执行的类叫一个job，从IJob继承，这里负责在线用户消去的类叫做AnonymousUserJob，具体执行的方法是private void CleanUsers(int settingsid)，里面包含了Member和Guest的2个消去方法，他们的作用就是从会员表和游客表中除去已经过了n分钟没有执行动作的用户。<br>CS处理这个问题非常的马虎，直接hard code了2个参数，5和10，意思是，在执行检查时，5分钟没有活动的游客将被除去，10分钟没有活动的会员将被除去。如果你需要修改，你只能在代码里修改这2个值，然后重新编译，强烈建议自己把这2个值存到config里或者是siteSetting里。<br><br>后记：<br>我把这2个值改完之后，更新了程序，发现在线用户显示有时高有时低，特地写了个程序监视Cache，发现Cache隔了很短的时间就被清空了一次，这导致用户列表的Cache被频繁重置，根本无法正确的反映当前用户在线的信息。<br>这个问题我个人认为是由于CS系统占用服务器内存很大，导致服务器需要频繁回收Cache，使得Cache失效。但是这里也有疑点，我服务器上内存使用一般才700M左右，而IIS的进程池我并没有限定虚拟内存大小，而且缓存时我设定的优先级是aboveNormal，这个即使需要回收也应该是排在很后的。<br>在我放CS的服务器上同时还放有3个站点程序，我试着新建了个线程池然后把那3个站点都归入新的线程池中，CS独占一个线程池，这时，在线用户信息显示正常了。<br>这个问题的答案我并不满意，现在还在继续观察服务器的状态，如果有新的可能，我会来这里再公布我的新结论。<br><br>CS2.0系统庞杂，本身性能极差，而缓存使用泛滥，颗粒度的控制很糟糕，造成对服务器的压力巨大，有无数次想要重写一个自己满意的论坛，但是一直没有时间和精力，只好在CS上慢慢的修改，但是目前看来，如果不能对整个内核和缓存结构做出重写的话，依然不能解决根本问题。现在唯一的解决方法是静态化，把CS的帖子浏览和论坛列表静态化来解决用户浏览速度过慢的问题。
<img src="http://www.cnblogs.com/wuxilin/aggbug/729963.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/wuxilin/archive/2007/04/27/729963.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/wuxilin/archive/2007/04/27/729963.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56855/" target="_blank">NDepend 3.0已与Visual Studio集成</a><span style="color:gray">(2010-02-10 16:17)</span><br/>· <a href="http://news.cnblogs.com/n/56854/" target="_blank">Ruby in Steel 1.5发布，去除IronRuby支持</a><span style="color:gray">(2010-02-10 16:14)</span><br/>· <a href="http://news.cnblogs.com/n/56852/" target="_blank">淘宝网通过索引模式涉足网络文学</a><span style="color:gray">(2010-02-10 15:59)</span><br/>· <a href="http://news.cnblogs.com/n/56851/" target="_blank">苹果发布 iPhone/iPad SDK 3.2 beta2 开发包</a><span style="color:gray">(2010-02-10 15:37)</span><br/>· <a href="http://news.cnblogs.com/n/56850/" target="_blank">“谷姐”：披着“谷歌”羊皮的悲哀？</a><span style="color:gray">(2010-02-10 15:32)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/news/tag/Buzz/" target="_blank">Google Buzz相关新闻</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item></channel></rss>