Sep
5
代码优化
通常要求程序员要有好的编程习惯,尽量减少冗余代码的出现,目前也有好多工具能够完成这项功能,对于一般的html文件,用于减少冗余的减肥工具很多,而对于PHP程序来说这样的工具就不太多了,但是Zend Technologies的Zend Optimizer是一款非常好的代码优化工具,可以免费从Zend Technologies的网站上获得。Zend Optimizer的使用方法也非常简单,只要将下载的ZendOptimizer-1[1].0.0-PHP_4.0.4- Linux_glibc21-i386.tar.gz文件解压缩,将其中的ZendOptimizer.so文件拷贝到/usr/local/Zend/lib目录下,然后修改php.ini文件,在最后添加以下几行:
显示说明Zend Optimizer工作正常
zend_optimizer.optimization_level=15
zend_extension="/usr/local/ Zend/lib/ ZendOptimizer.so"
设置完成后重启Apache服务器,编写一段PHP程序:
<?
Phpinfo();
?>
一般来说Zend Optimizer能将系统的效率提升30%~40%,这是用户最关心的。
压缩页面
HTTP1.1协议支持页面压缩传送,也就是说服务器把一个页面压缩传送到客户端,然后在客户端将页面解压缩再显示给客户。在服务器端有两种传输方式,一种是页面事先已经压缩好了,传送时只要将压缩页面传送到客户端就行,这种适用于静态网页多的情况,但是对于大多数站点,动态页面比较多,这种方法不太适合,因为很多传到客户端的页面其实是没有的,是服务器接到客户端用户请求动态产生的,所以就要求每生成一个动态页面都要在传到客户端以前先打包压缩。从PHP的4.0.4版以后,可以在php.ini文件中增加一行配置“output_handler = ob_gzhandler”,这样每个动态生成的页面在传送到客户端之前都会进行压缩,但是根据PHP官方站点的说明,这个参数不能与“zlib.output_compression = on”参数同时使用,因为容易引起PHP工作不正常,另外它只能压缩PHP程序的动态生成的页面,对于大量的静态页面尤其是图像文件就不行了。但是mod_gzip模块为Apahe提供了将静态页面在传给客户端以前先压缩的功能,它的压缩比最大能到10,一般情况下可以到 3,也就是说网站的传输速率一下提高了三倍多。要想使用mod_gzip功能首先要下载mod_gzip.c或mod_gzip.so文件,如果下载的是.c文件还要用Apache带的工具将它转化为.so文件才能使用,方法是运行下面的命令:
-i -a mod_gzio.c
cp mod_foo.so/path/to/apache/libexec/mod_gzip.so
chmod 755/path/to/apache/libexec/mod_foo.so
系统会在/path/to/apache/ etc/httpd.conf中自动激活该模块,如果下载的是.so文件则要将该文件拷贝到相应的目录下,然后在httpd.conf文件中添加LoadModule gzip_module libexec/ mod_gzip.so,使模块生效。需要注意两点,第一,要想使用.so文件,Apache必须包含了mod_so模块(可以通过httpd -l命令来查询该模块是否生效);第二,如果下载的是.so文件,它是与Apache的版本有关的,要注意下载的版本与自己使用的Apache是否一致,如果是.c文件就没有这个问题。模块生效后还要对Apache进行相应的配置,需要在httpd.conf文件中加入一些参数:
mod_gzip_on Yes(模块是否生效)
mod_gzip_minimum_file_size 1002(最小压缩文件大小)
mod_gzip_maximum_file_size 0(最大压缩文件大小,0表示没有限制)
mod_gzip_maximum_inmem_size 60000(最大可占用内存)
mod_gzip_item_include file "..gif102SINA>DOUBLE_QUOTATION (以gif结尾的文件要压缩传送)
mod_gzip_item_include file ".txt102SINA>DOUBLE_QUOTATION
mod_gzip_item_include file ".html102SINA>DOUBLE_QUOTATION
mod_gzip_item_exclude file ".css102SINA>DOUBLE_QUOTATION
使用了压缩模块后,当用户访问站点时会在日志文件中记录相应的信息,比如“mod_gzip :OK In:file_length Out:gzipfile_length”,表示该页面传输中使用了gzip功能,输入文件、输出文件大小都有说明。
文件缓存
这种方法通常是针对PHP、PERL等CGI程序而言的,因为这些程序有一个共同的特征就是接到用户的请求后不是马上将结果返回给用户,而是经过解释器解释执行后将执行结果返回给客户,这期间通常都要涉及到数据库的访问。这样就会出现一个问题,当两个用户访问同一个页面时,系统将分别对两个请求进行操作,但事实上这两个操作可能是一模一样的,这样无形当中增加了系统的负担。所以通常的解决办法是在系统内存中开辟出一段空间,当用户第一次访问页面后将执行结果存放在该内存中,当有用户再一次访问该页面时,系统就将页面直接从内存中调出而不需要重新解释执行,这段内存空间就叫缓存。目前流行的缓存管理程序有两个,一个是FastCGI,另一个是Zend Technologies公司的Zend Cache。FastCGI主要是针对Perl、C、C++等CGI脚本程序设计的,可以有效地利用内存作缓存,来自客户端的请求都会被传送到FastCGI应用服务程序,FastCGI处理用户的请求后将结果返回给用户。一般的CGI程序这时将结束进程自动退出,但是FastCGI进程继续保持,这时它在接到新的用户请求后不必建立新的进程,可以立即处理用户请求,也就是说CGI程序建立进程顺序执行然后退出,而FastCGI程序顺序执行并永远循环。
Zend Cache的管理界面
要想使用FastCGI首先要把FastCGI编译到Apache中,方法非常简单,这里就不说明了,还要在http.conf文件里作设置:
AddHandler fastcgi-script .fcg .fcgi .fpl
Options ExecCGI Indexes Includes
这样FastCGI就可以正常工作了,下面是FastCGI程序员手册中的一段例子程序:
#!fcgi-savvy-perl
use FCGI; # 初始化
# Initialization code
= 0;
# Response loop
while (FCGI::accept >= 0) {
#FastCGI建立循环体
print "Content-type:text/html "; #程序执行
print "<head><title>FastCGI Demo Page (perl)</title></head> ";
print "<h1>FastCGI Demo Page (perl)</h1> ";
print "This is coming from a FastCGI server. <BR> ";
print "Running on <EM>publish152.internal.sina.com.cn</EM> to <EM></EM><BR> ";
++;
print "This is connection number ";
}
FastCGI对Perl等CGI程序的功能非常强大,但是它对PHP程序确是无能为力的,而且需要在编程时增加内容,也就是说它需要一些人为的因素才能发挥作用。相比之下Zend Technologies公司的Zend Cache针对PHP的缓存功能是很强大的,只要安装了该软件,程序员就像编写其他PHP程序一样,不需要增加代码,就可以实现缓存功能,有利于系统升级,十分方便。它是一个付费软件。它有缓存功能并能通过图形界面对其进行管理,其中:Cache Control页面,可以配置Zend Cache,显示其当前状态,还能启动和停止Zend Cache功能;Scripts页面,Zend Cache的内容,包括每个文件的状态,还可以根据点击次数和缓存占有大小选择文件;Benchmark页面,可以测试Zend Cache的缓存效果,并以图形方式给出显示,它测试的是每秒钟完成PHP请求的次数。
它的安装、验证方法与Zend Optimizer基本相同,这里就不详细说明了,感兴趣的读者可以参考用户手册,它的强大功能和便利的管理方法确实让人心动。
以上是网站提速常见的几种方法,对于不同的网站需要采用不同的手段,所对应的提速方案也不尽相同,但总体上不外乎是以上提到的三招,读者可以根据自己的实际情况具体问题具体分析。
注意:考虑到客户端软件的复杂性,因为有些客户端软件可能不支持某些特性,比如,mod_gzip对页面进行压缩,但是如果客户端使用的是Netscape就不行,因为它不能把接收到的压缩页面解压缩,导致页面不能正常显示。
通常要求程序员要有好的编程习惯,尽量减少冗余代码的出现,目前也有好多工具能够完成这项功能,对于一般的html文件,用于减少冗余的减肥工具很多,而对于PHP程序来说这样的工具就不太多了,但是Zend Technologies的Zend Optimizer是一款非常好的代码优化工具,可以免费从Zend Technologies的网站上获得。Zend Optimizer的使用方法也非常简单,只要将下载的ZendOptimizer-1[1].0.0-PHP_4.0.4- Linux_glibc21-i386.tar.gz文件解压缩,将其中的ZendOptimizer.so文件拷贝到/usr/local/Zend/lib目录下,然后修改php.ini文件,在最后添加以下几行:
显示说明Zend Optimizer工作正常
zend_optimizer.optimization_level=15
zend_extension="/usr/local/ Zend/lib/ ZendOptimizer.so"
设置完成后重启Apache服务器,编写一段PHP程序:
<?
Phpinfo();
?>
一般来说Zend Optimizer能将系统的效率提升30%~40%,这是用户最关心的。
压缩页面
HTTP1.1协议支持页面压缩传送,也就是说服务器把一个页面压缩传送到客户端,然后在客户端将页面解压缩再显示给客户。在服务器端有两种传输方式,一种是页面事先已经压缩好了,传送时只要将压缩页面传送到客户端就行,这种适用于静态网页多的情况,但是对于大多数站点,动态页面比较多,这种方法不太适合,因为很多传到客户端的页面其实是没有的,是服务器接到客户端用户请求动态产生的,所以就要求每生成一个动态页面都要在传到客户端以前先打包压缩。从PHP的4.0.4版以后,可以在php.ini文件中增加一行配置“output_handler = ob_gzhandler”,这样每个动态生成的页面在传送到客户端之前都会进行压缩,但是根据PHP官方站点的说明,这个参数不能与“zlib.output_compression = on”参数同时使用,因为容易引起PHP工作不正常,另外它只能压缩PHP程序的动态生成的页面,对于大量的静态页面尤其是图像文件就不行了。但是mod_gzip模块为Apahe提供了将静态页面在传给客户端以前先压缩的功能,它的压缩比最大能到10,一般情况下可以到 3,也就是说网站的传输速率一下提高了三倍多。要想使用mod_gzip功能首先要下载mod_gzip.c或mod_gzip.so文件,如果下载的是.c文件还要用Apache带的工具将它转化为.so文件才能使用,方法是运行下面的命令:
-i -a mod_gzio.c
cp mod_foo.so/path/to/apache/libexec/mod_gzip.so
chmod 755/path/to/apache/libexec/mod_foo.so
系统会在/path/to/apache/ etc/httpd.conf中自动激活该模块,如果下载的是.so文件则要将该文件拷贝到相应的目录下,然后在httpd.conf文件中添加LoadModule gzip_module libexec/ mod_gzip.so,使模块生效。需要注意两点,第一,要想使用.so文件,Apache必须包含了mod_so模块(可以通过httpd -l命令来查询该模块是否生效);第二,如果下载的是.so文件,它是与Apache的版本有关的,要注意下载的版本与自己使用的Apache是否一致,如果是.c文件就没有这个问题。模块生效后还要对Apache进行相应的配置,需要在httpd.conf文件中加入一些参数:
mod_gzip_on Yes(模块是否生效)
mod_gzip_minimum_file_size 1002(最小压缩文件大小)
mod_gzip_maximum_file_size 0(最大压缩文件大小,0表示没有限制)
mod_gzip_maximum_inmem_size 60000(最大可占用内存)
mod_gzip_item_include file "..gif102SINA>DOUBLE_QUOTATION (以gif结尾的文件要压缩传送)
mod_gzip_item_include file ".txt102SINA>DOUBLE_QUOTATION
mod_gzip_item_include file ".html102SINA>DOUBLE_QUOTATION
mod_gzip_item_exclude file ".css102SINA>DOUBLE_QUOTATION
使用了压缩模块后,当用户访问站点时会在日志文件中记录相应的信息,比如“mod_gzip :OK In:file_length Out:gzipfile_length”,表示该页面传输中使用了gzip功能,输入文件、输出文件大小都有说明。
文件缓存
这种方法通常是针对PHP、PERL等CGI程序而言的,因为这些程序有一个共同的特征就是接到用户的请求后不是马上将结果返回给用户,而是经过解释器解释执行后将执行结果返回给客户,这期间通常都要涉及到数据库的访问。这样就会出现一个问题,当两个用户访问同一个页面时,系统将分别对两个请求进行操作,但事实上这两个操作可能是一模一样的,这样无形当中增加了系统的负担。所以通常的解决办法是在系统内存中开辟出一段空间,当用户第一次访问页面后将执行结果存放在该内存中,当有用户再一次访问该页面时,系统就将页面直接从内存中调出而不需要重新解释执行,这段内存空间就叫缓存。目前流行的缓存管理程序有两个,一个是FastCGI,另一个是Zend Technologies公司的Zend Cache。FastCGI主要是针对Perl、C、C++等CGI脚本程序设计的,可以有效地利用内存作缓存,来自客户端的请求都会被传送到FastCGI应用服务程序,FastCGI处理用户的请求后将结果返回给用户。一般的CGI程序这时将结束进程自动退出,但是FastCGI进程继续保持,这时它在接到新的用户请求后不必建立新的进程,可以立即处理用户请求,也就是说CGI程序建立进程顺序执行然后退出,而FastCGI程序顺序执行并永远循环。
Zend Cache的管理界面
要想使用FastCGI首先要把FastCGI编译到Apache中,方法非常简单,这里就不说明了,还要在http.conf文件里作设置:
AddHandler fastcgi-script .fcg .fcgi .fpl
Options ExecCGI Indexes Includes
这样FastCGI就可以正常工作了,下面是FastCGI程序员手册中的一段例子程序:
#!fcgi-savvy-perl
use FCGI; # 初始化
# Initialization code
= 0;
# Response loop
while (FCGI::accept >= 0) {
#FastCGI建立循环体
print "Content-type:text/html "; #程序执行
print "<head><title>FastCGI Demo Page (perl)</title></head> ";
print "<h1>FastCGI Demo Page (perl)</h1> ";
print "This is coming from a FastCGI server. <BR> ";
print "Running on <EM>publish152.internal.sina.com.cn</EM> to <EM></EM><BR> ";
++;
print "This is connection number ";
}
FastCGI对Perl等CGI程序的功能非常强大,但是它对PHP程序确是无能为力的,而且需要在编程时增加内容,也就是说它需要一些人为的因素才能发挥作用。相比之下Zend Technologies公司的Zend Cache针对PHP的缓存功能是很强大的,只要安装了该软件,程序员就像编写其他PHP程序一样,不需要增加代码,就可以实现缓存功能,有利于系统升级,十分方便。它是一个付费软件。它有缓存功能并能通过图形界面对其进行管理,其中:Cache Control页面,可以配置Zend Cache,显示其当前状态,还能启动和停止Zend Cache功能;Scripts页面,Zend Cache的内容,包括每个文件的状态,还可以根据点击次数和缓存占有大小选择文件;Benchmark页面,可以测试Zend Cache的缓存效果,并以图形方式给出显示,它测试的是每秒钟完成PHP请求的次数。
它的安装、验证方法与Zend Optimizer基本相同,这里就不详细说明了,感兴趣的读者可以参考用户手册,它的强大功能和便利的管理方法确实让人心动。
以上是网站提速常见的几种方法,对于不同的网站需要采用不同的手段,所对应的提速方案也不尽相同,但总体上不外乎是以上提到的三招,读者可以根据自己的实际情况具体问题具体分析。
注意:考虑到客户端软件的复杂性,因为有些客户端软件可能不支持某些特性,比如,mod_gzip对页面进行压缩,但是如果客户端使用的是Netscape就不行,因为它不能把接收到的压缩页面解压缩,导致页面不能正常显示。
Jul
5
400 无法解析此请求。
401.1 未经授权:访问由于凭据无效被拒绝。
401.2 未经授权: 访问由于服务器配置倾向使用替代身份验证方法而被拒绝。
401.3 未经授权:访问由于 ACL 对所请求资源的设置被拒绝。
401.4 未经授权:Web 服务器上安装的筛选器授权失败。
401.5 未经授权:ISAPI/CGI 应用程序授权失败。
401.7 未经授权:由于 Web 服务器上的 URL 授权策略而拒绝访问。
403 禁止访问:访问被拒绝。
403.1 禁止访问:执行访问被拒绝。
403.2 禁止访问:读取访问被拒绝。
403.3 禁止访问:写入访问被拒绝。
403.4 禁止访问:需要使用 SSL 查看该资源。
403.5 禁止访问:需要使用 SSL 128 查看该资源。
403.6 禁止访问:客户端的 IP 地址被拒绝。
403.7 禁止访问:需要 SSL 客户端证书。
403.8 禁止访问:客户端的 DNS 名称被拒绝。
403.9 禁止访问:太多客户端试图连接到 Web 服务器。
403.10 禁止访问:Web 服务器配置为拒绝执行访问。
403.11 禁止访问:密码已更改。
403.12 禁止访问:服务器证书映射器拒绝了客户端证书访问。
403.13 禁止访问:客户端证书已在 Web 服务器上吊销。
403.14 禁止访问:在 Web 服务器上已拒绝目录列表。
403.15 禁止访问:Web 服务器已超过客户端访问许可证限制。
403.16 禁止访问:客户端证书格式错误或未被 Web 服务器信任。
403.17 禁止访问:客户端证书已经到期或者尚未生效。
403.18 禁止访问:无法在当前应用程序池中执行请求的 URL。
403.19 禁止访问:无法在该应用程序池中为客户端执行 CGI。
403.20 禁止访问:Passport 登录失败。
404 找不到文件或目录。
404.1 文件或目录未找到:网站无法在所请求的端口访问。
注意 404.1 错误只会出现在具有多个 IP 地址的计算机上。如果在特定 IP 地址/端口组合上收到客户端请求,而且没有将 IP 地址配置为在该特定的端口上侦听,则 IIS 返回 404.1 HTTP 错误。例如,如果一台计算机有两个 IP 地址,而只将其中一个 IP 地址配置为在端口 80 上侦听,则另一个 IP 地址从端口 80 收到的任何请求都将导致 IIS 返回 404.1 错误。只应在此服务级别设置该错误,因为只有当服务器上使用多个 IP 地址时才会将它返回给客户端。
404.2 文件或目录无法找到:锁定策略禁止该请求。
404.3 文件或目录无法找到:MIME 映射策略禁止该请求。
405 用于访问该页的 HTTP 动作未被许可。
406 客户端浏览器不接受所请求页面的 MIME 类型。
407 Web 服务器需要初始的代理验证。
410 文件已删除。
412 客户端设置的前提条件在 Web 服务器上评估时失败。
414 请求 URL 太大,因此在 Web 服务器上不接受该 URL。
500 服务器内部错误。
500.11 服务器错误:Web 服务器上的应用程序正在关闭。
500.12 服务器错误:Web 服务器上的应用程序正在重新启动。
500.13 服务器错误:Web 服务器太忙。
500.14 服务器错误:服务器上的无效应用程序配置。
500.15 服务器错误:不允许直接请求 GLOBAL.ASA。
500.16 服务器错误:UNC 授权凭据不正确。
500.17 服务器错误:URL 授权存储无法找到。
500.18 服务器错误:URL 授权存储无法打开。
500.19 服务器错误:该文件的数据在配置数据库中配置不正确。
500.20 服务器错误:URL 授权域无法找到。
500 100 内部服务器错误:ASP 错误。
501 标题值指定的配置没有执行。
502 Web 服务器作为网关或代理服务器时收到无效的响应。
WIN2003 SERVER IIS6.0 ASP 错误解析
事件 ID 描述
0100 内存不足。无法分配所需的内存。
0101 意外错误。函数返回 |。
0102 要求字符串输入。函数需要字符串输入。
0103 要求数字输入。函数需要数字输入。
0104 不允许操作。
0105 索引超出范围。数组索引超出范围。
0106 类型不匹配。遇到未处理的数据类型。
0107 数据大小太大。请求中发送的数据大小超出允许的限制。
0108 创建对象失败。创建对象 '%s' 时出错。
0109 成员未找到。
0110 未知的名称。
0111 未知的界面。
0112 参数丢失。
0113 脚本超时。超过了脚本运行的最长时间。可以通过为 Server.ScriptTimeout 属性指定一个新值或在 IIS 管理工具中修改值来更改此限制。
0114 对象不可用于自由线程。应用程序对象仅接受自由线程对象;而对象 '%s' 不可用于自由线程。
0115 意外错误。外部对象中发生一个可捕捉的错误 (%X)。脚本无法继续运行。
0116 脚本分隔符结束标记丢失。脚本块缺少脚本结束标记 (%>)。
0117 脚本结束标记丢失。脚本块缺少脚本结束标记 () 或标记结束符号 (>)。
0118 对象的结束标记丢失。对象块缺少对象结束标记 () 或标记结束符号 (>)。
0119 Classid 或 Progid 属性丢失。对象实例 '|' 在对象标记中需要有效的 Classid 或 Progid。
0120 Runat 属性无效。脚本标记或对象标记的 Runat 属性只能有 'Server' 值。
0121 对象标记中的范围无效。对象实例 '|' 的作用范围不能是 Application 或 Session。要创建有 Session 或 Application 作用范围的对象实例,请将在 Global.asa 文件中加入 Object 标记。
0122 对象标记中的范围无效。对象实例 '|' 必须有 Application 或 Session 作用范围。这将应用于所有在 Global.asa 文件内创建的对象。
0123 缺少 Id 属性。缺少 Object 标记所需的 Id 属性。
0124 Language 属性丢失。缺少 Object 标记所需的 Language 属性。
0125 属性结束标记丢失。'|' 属性的值没有结束分隔符。
0126 未找到 Include 文件。未找到 Include 文件 '|'。
0127 HTML 注释的结束标记丢失。HTML 注释或在服务器端的包含文件缺少结束标记 (-->)。
0128 File 或 Virtual 属性丢失。Include 文件名必须用 File 或 Virtual 属性指定。
0129 未知的脚本语言。服务器上找不到脚本语言 '|'。
0130 File 属性无效。File 属性 '|' 不能以斜杠或反斜杠开始。
0131 不允许的父路径。Include 文件 '|' 不能包含 '..' 来表示父目录。
0132 编译错误。无法处理 Active Server Page '|'。
0133 ClassID 属性无效。对象标记有一个无效的 ClassID '|'。
0134 ProgID 属性无效。对象有一个无效的 ProgID '|'。
0178 Server.CreateObject 访问错误。检查权限时调用 Server.CreateObject 失败。对此对象的访问被拒绝。
0179 应用程序初始化错误。初始化 Application 对象时发生错误。
0180 禁止的对象使用。Application 对象中不能保存内部对象。
0181 线程模型无效。使用单元线程模型的对象不能存储在 Application 对象中。
0182 对象信息丢失。Application 对象中不能保存信息不全的对象。需要此对象的线程模型信息。
0183 空 Cookie 项。不能保存空项 Cookie。
0184 Cookie 名称丢失。必须为 Cookie 指定名称。
0185 默认属性丢失。未找到对象的默认属性。
0186 证书分析错误。
0187 对象添加冲突。无法将对象添加到应用程序。应用程序被另一个要求添加对象的请求锁定。
0188 禁止的对象使用。无法将用对象标记创建的对象添加到会话内部。
0189 禁止的对象使用。无法将用对象标记创建的对象添加到应用程序内部。
0190 意外错误。释放外部对象时发生可捕获错误。
0191 意外错误。外部对象的 OnStartPage 方法中发生可捕获错误。
0192 意外错误。外部对象的 OnEndPage 方法中发生可捕获错误。
0193 OnStartPage 失败。外部对象的 OnStartPage 方法中出错。
0194 OnEndPage 失败。外部对象的 OnEndPage 方法中出错。
0195 无效的服务器方法调用。Session_OnEnd 和 Application_OnEnd 期间不能调用 Server 对象的此方法。
0196 无法启动进程外组件。只能使用 InProc 服务器组件。若要使用 LocalServer 组件,必须设置 AspAllowOutOfProcComponents 配置数据库设置。请参阅帮助文件,了解重要注意事项。
0197 禁止的对象使用。不能将有单元模型行为的对象添加到应用程序内部对象。
0198 服务器正在关闭。不能处理请求。
0199 禁止的对象使用。不能将 JScript 对象添加到会话。
0200 超出 'Expires' 属性范围。为 'Expires' 指定的日期和时间在 1980 年 1 月 1 日之前或在 2038 年 1 月 19 日 3:14:07 GMT 之后。
0201 默认脚本语言无效。为此应用程序指定的默认脚本语言无效。
0202 代码页丢失。代码页属性丢失。
0203 代码页无效。指定的代码页属性无效。
0204 CodePage 值无效。指定的 CodePage 值无效。
0205 更改通知。创建更改通知事件失败。
0206 不能调用 BinaryRead。使用 Request.Form 集合后不能调用 BinaryRead。
0207 不能使用 Request.Form。调用 BinaryRead 后不能使用 Request.Form 集合。
0208 不能使用通用 Request 集合。调用 BinaryRead 后不能使用通用 Request 集合。
0209 TRANSACTION 属性的值非法。TRANSACTION 属性只能是 REQUIRED、REQUIRES_NEW、SUPPORTED 或 NOT_SUPPORTED。
0210 方法未实施。此方法尚未实施。
0211 对象超出范围。引用内置的 ASP 对象,此操作已不再有效。
0212 无法清除缓冲区。客户端调试启用时,Response.Flush 之后不能有 Response.Clear。
0214 路径参数无效。Path 参数超出允许的最大长度。
0215 ENABLESESSIONSTATE 属性的值非法。ENABLESESSIONSTATE 属性的值只能是 TRUE 或 FALSE。
0216 MSDTC 服务未运行。如果未运行 MSDTC 服务,则不能运行事务性网页。
0217 对象标记中的范围无效。对象的作用范围必须是 Page、Session 或 Application。
0218 LCID 丢失。LCID 属性丢失。
0219 LCID 无效。指定的 LCID 不可用。
0220 不允许请求 GLOBAL.ASA。不允许请求指向 GLOBAL.ASA 的 URL。
0221 @ 命令指令无效。指定的 '|' 选项未知或无效。
0222 TypeLib 规范无效。METADATA 标记包含无效的类型库规范。
0223 未找到 TypeLib。METADATA 标签含有的类型库规范和注册表项不符。
0224 无法加载 TypeLib。无法加载 METADATA 标记中指定的类型库。
0225 无法包装 TypeLib。不能通过 METADATA 标记中指定的类型库创建类型库包装对象。
0226 无法修改 StaticObjects。运行时无法修改 StaticObjects 集合。
0227 Server.Execute 失败。调用 Server.Execute 失败。
0228 Server.Execute 错误。加载此页时调用 Server.Execute 失败。
0229 Server.Transfer 失败。调用 Server.Transfer 失败。
0230 Server.Transfer 错误。加载此页时调用 Server.Transfer 失败。
0231 Server.Execute 错误。使用的 URL 格式无效,或者使用了完全限定的绝对 URL。请使用相对 URL。
0232 Cookie 规范无效。METADATA 标记包含无效的 Cookie 规范。
0233 无法加载 Cookie 脚本源。无法加载 METADATA 标记中指定的 Cookie 脚本源文件。
0234 包含指令无效。脚本块中可能没有服务器端包含文件指令。
401.1 未经授权:访问由于凭据无效被拒绝。
401.2 未经授权: 访问由于服务器配置倾向使用替代身份验证方法而被拒绝。
401.3 未经授权:访问由于 ACL 对所请求资源的设置被拒绝。
401.4 未经授权:Web 服务器上安装的筛选器授权失败。
401.5 未经授权:ISAPI/CGI 应用程序授权失败。
401.7 未经授权:由于 Web 服务器上的 URL 授权策略而拒绝访问。
403 禁止访问:访问被拒绝。
403.1 禁止访问:执行访问被拒绝。
403.2 禁止访问:读取访问被拒绝。
403.3 禁止访问:写入访问被拒绝。
403.4 禁止访问:需要使用 SSL 查看该资源。
403.5 禁止访问:需要使用 SSL 128 查看该资源。
403.6 禁止访问:客户端的 IP 地址被拒绝。
403.7 禁止访问:需要 SSL 客户端证书。
403.8 禁止访问:客户端的 DNS 名称被拒绝。
403.9 禁止访问:太多客户端试图连接到 Web 服务器。
403.10 禁止访问:Web 服务器配置为拒绝执行访问。
403.11 禁止访问:密码已更改。
403.12 禁止访问:服务器证书映射器拒绝了客户端证书访问。
403.13 禁止访问:客户端证书已在 Web 服务器上吊销。
403.14 禁止访问:在 Web 服务器上已拒绝目录列表。
403.15 禁止访问:Web 服务器已超过客户端访问许可证限制。
403.16 禁止访问:客户端证书格式错误或未被 Web 服务器信任。
403.17 禁止访问:客户端证书已经到期或者尚未生效。
403.18 禁止访问:无法在当前应用程序池中执行请求的 URL。
403.19 禁止访问:无法在该应用程序池中为客户端执行 CGI。
403.20 禁止访问:Passport 登录失败。
404 找不到文件或目录。
404.1 文件或目录未找到:网站无法在所请求的端口访问。
注意 404.1 错误只会出现在具有多个 IP 地址的计算机上。如果在特定 IP 地址/端口组合上收到客户端请求,而且没有将 IP 地址配置为在该特定的端口上侦听,则 IIS 返回 404.1 HTTP 错误。例如,如果一台计算机有两个 IP 地址,而只将其中一个 IP 地址配置为在端口 80 上侦听,则另一个 IP 地址从端口 80 收到的任何请求都将导致 IIS 返回 404.1 错误。只应在此服务级别设置该错误,因为只有当服务器上使用多个 IP 地址时才会将它返回给客户端。
404.2 文件或目录无法找到:锁定策略禁止该请求。
404.3 文件或目录无法找到:MIME 映射策略禁止该请求。
405 用于访问该页的 HTTP 动作未被许可。
406 客户端浏览器不接受所请求页面的 MIME 类型。
407 Web 服务器需要初始的代理验证。
410 文件已删除。
412 客户端设置的前提条件在 Web 服务器上评估时失败。
414 请求 URL 太大,因此在 Web 服务器上不接受该 URL。
500 服务器内部错误。
500.11 服务器错误:Web 服务器上的应用程序正在关闭。
500.12 服务器错误:Web 服务器上的应用程序正在重新启动。
500.13 服务器错误:Web 服务器太忙。
500.14 服务器错误:服务器上的无效应用程序配置。
500.15 服务器错误:不允许直接请求 GLOBAL.ASA。
500.16 服务器错误:UNC 授权凭据不正确。
500.17 服务器错误:URL 授权存储无法找到。
500.18 服务器错误:URL 授权存储无法打开。
500.19 服务器错误:该文件的数据在配置数据库中配置不正确。
500.20 服务器错误:URL 授权域无法找到。
500 100 内部服务器错误:ASP 错误。
501 标题值指定的配置没有执行。
502 Web 服务器作为网关或代理服务器时收到无效的响应。
WIN2003 SERVER IIS6.0 ASP 错误解析
事件 ID 描述
0100 内存不足。无法分配所需的内存。
0101 意外错误。函数返回 |。
0102 要求字符串输入。函数需要字符串输入。
0103 要求数字输入。函数需要数字输入。
0104 不允许操作。
0105 索引超出范围。数组索引超出范围。
0106 类型不匹配。遇到未处理的数据类型。
0107 数据大小太大。请求中发送的数据大小超出允许的限制。
0108 创建对象失败。创建对象 '%s' 时出错。
0109 成员未找到。
0110 未知的名称。
0111 未知的界面。
0112 参数丢失。
0113 脚本超时。超过了脚本运行的最长时间。可以通过为 Server.ScriptTimeout 属性指定一个新值或在 IIS 管理工具中修改值来更改此限制。
0114 对象不可用于自由线程。应用程序对象仅接受自由线程对象;而对象 '%s' 不可用于自由线程。
0115 意外错误。外部对象中发生一个可捕捉的错误 (%X)。脚本无法继续运行。
0116 脚本分隔符结束标记丢失。脚本块缺少脚本结束标记 (%>)。
0117 脚本结束标记丢失。脚本块缺少脚本结束标记 () 或标记结束符号 (>)。
0118 对象的结束标记丢失。对象块缺少对象结束标记 () 或标记结束符号 (>)。
0119 Classid 或 Progid 属性丢失。对象实例 '|' 在对象标记中需要有效的 Classid 或 Progid。
0120 Runat 属性无效。脚本标记或对象标记的 Runat 属性只能有 'Server' 值。
0121 对象标记中的范围无效。对象实例 '|' 的作用范围不能是 Application 或 Session。要创建有 Session 或 Application 作用范围的对象实例,请将在 Global.asa 文件中加入 Object 标记。
0122 对象标记中的范围无效。对象实例 '|' 必须有 Application 或 Session 作用范围。这将应用于所有在 Global.asa 文件内创建的对象。
0123 缺少 Id 属性。缺少 Object 标记所需的 Id 属性。
0124 Language 属性丢失。缺少 Object 标记所需的 Language 属性。
0125 属性结束标记丢失。'|' 属性的值没有结束分隔符。
0126 未找到 Include 文件。未找到 Include 文件 '|'。
0127 HTML 注释的结束标记丢失。HTML 注释或在服务器端的包含文件缺少结束标记 (-->)。
0128 File 或 Virtual 属性丢失。Include 文件名必须用 File 或 Virtual 属性指定。
0129 未知的脚本语言。服务器上找不到脚本语言 '|'。
0130 File 属性无效。File 属性 '|' 不能以斜杠或反斜杠开始。
0131 不允许的父路径。Include 文件 '|' 不能包含 '..' 来表示父目录。
0132 编译错误。无法处理 Active Server Page '|'。
0133 ClassID 属性无效。对象标记有一个无效的 ClassID '|'。
0134 ProgID 属性无效。对象有一个无效的 ProgID '|'。
0178 Server.CreateObject 访问错误。检查权限时调用 Server.CreateObject 失败。对此对象的访问被拒绝。
0179 应用程序初始化错误。初始化 Application 对象时发生错误。
0180 禁止的对象使用。Application 对象中不能保存内部对象。
0181 线程模型无效。使用单元线程模型的对象不能存储在 Application 对象中。
0182 对象信息丢失。Application 对象中不能保存信息不全的对象。需要此对象的线程模型信息。
0183 空 Cookie 项。不能保存空项 Cookie。
0184 Cookie 名称丢失。必须为 Cookie 指定名称。
0185 默认属性丢失。未找到对象的默认属性。
0186 证书分析错误。
0187 对象添加冲突。无法将对象添加到应用程序。应用程序被另一个要求添加对象的请求锁定。
0188 禁止的对象使用。无法将用对象标记创建的对象添加到会话内部。
0189 禁止的对象使用。无法将用对象标记创建的对象添加到应用程序内部。
0190 意外错误。释放外部对象时发生可捕获错误。
0191 意外错误。外部对象的 OnStartPage 方法中发生可捕获错误。
0192 意外错误。外部对象的 OnEndPage 方法中发生可捕获错误。
0193 OnStartPage 失败。外部对象的 OnStartPage 方法中出错。
0194 OnEndPage 失败。外部对象的 OnEndPage 方法中出错。
0195 无效的服务器方法调用。Session_OnEnd 和 Application_OnEnd 期间不能调用 Server 对象的此方法。
0196 无法启动进程外组件。只能使用 InProc 服务器组件。若要使用 LocalServer 组件,必须设置 AspAllowOutOfProcComponents 配置数据库设置。请参阅帮助文件,了解重要注意事项。
0197 禁止的对象使用。不能将有单元模型行为的对象添加到应用程序内部对象。
0198 服务器正在关闭。不能处理请求。
0199 禁止的对象使用。不能将 JScript 对象添加到会话。
0200 超出 'Expires' 属性范围。为 'Expires' 指定的日期和时间在 1980 年 1 月 1 日之前或在 2038 年 1 月 19 日 3:14:07 GMT 之后。
0201 默认脚本语言无效。为此应用程序指定的默认脚本语言无效。
0202 代码页丢失。代码页属性丢失。
0203 代码页无效。指定的代码页属性无效。
0204 CodePage 值无效。指定的 CodePage 值无效。
0205 更改通知。创建更改通知事件失败。
0206 不能调用 BinaryRead。使用 Request.Form 集合后不能调用 BinaryRead。
0207 不能使用 Request.Form。调用 BinaryRead 后不能使用 Request.Form 集合。
0208 不能使用通用 Request 集合。调用 BinaryRead 后不能使用通用 Request 集合。
0209 TRANSACTION 属性的值非法。TRANSACTION 属性只能是 REQUIRED、REQUIRES_NEW、SUPPORTED 或 NOT_SUPPORTED。
0210 方法未实施。此方法尚未实施。
0211 对象超出范围。引用内置的 ASP 对象,此操作已不再有效。
0212 无法清除缓冲区。客户端调试启用时,Response.Flush 之后不能有 Response.Clear。
0214 路径参数无效。Path 参数超出允许的最大长度。
0215 ENABLESESSIONSTATE 属性的值非法。ENABLESESSIONSTATE 属性的值只能是 TRUE 或 FALSE。
0216 MSDTC 服务未运行。如果未运行 MSDTC 服务,则不能运行事务性网页。
0217 对象标记中的范围无效。对象的作用范围必须是 Page、Session 或 Application。
0218 LCID 丢失。LCID 属性丢失。
0219 LCID 无效。指定的 LCID 不可用。
0220 不允许请求 GLOBAL.ASA。不允许请求指向 GLOBAL.ASA 的 URL。
0221 @ 命令指令无效。指定的 '|' 选项未知或无效。
0222 TypeLib 规范无效。METADATA 标记包含无效的类型库规范。
0223 未找到 TypeLib。METADATA 标签含有的类型库规范和注册表项不符。
0224 无法加载 TypeLib。无法加载 METADATA 标记中指定的类型库。
0225 无法包装 TypeLib。不能通过 METADATA 标记中指定的类型库创建类型库包装对象。
0226 无法修改 StaticObjects。运行时无法修改 StaticObjects 集合。
0227 Server.Execute 失败。调用 Server.Execute 失败。
0228 Server.Execute 错误。加载此页时调用 Server.Execute 失败。
0229 Server.Transfer 失败。调用 Server.Transfer 失败。
0230 Server.Transfer 错误。加载此页时调用 Server.Transfer 失败。
0231 Server.Execute 错误。使用的 URL 格式无效,或者使用了完全限定的绝对 URL。请使用相对 URL。
0232 Cookie 规范无效。METADATA 标记包含无效的 Cookie 规范。
0233 无法加载 Cookie 脚本源。无法加载 METADATA 标记中指定的 Cookie 脚本源文件。
0234 包含指令无效。脚本块中可能没有服务器端包含文件指令。
Mar
5
MYSQL难道和404页面冲突吗?今天就遇到了这个问题,刚开始以为是MYSQL数据库有损坏的表,结果使用以前的备份还是一样,这样就排除了是MYSQL的问题,那究竟是什么问题呢?经过研究和查找终于知道原来是因为404页面的问题,
设置从404.htm页面的属性上面设置301永久重定向
以后,mysqld_nt.exe占用cpu100%,
把404页面改回去就一切正常了。
设置从404.htm页面的属性上面设置301永久重定向
以后,mysqld_nt.exe占用cpu100%,
把404页面改回去就一切正常了。
Mar
4
虚拟化技术实现了多个操作系统在同一台计算机上运行应用软件,由于这可更好地管理和利用IT资源,因此引起了IT管理者的关注。
然而,一些IT经理和安全研究人员警告企业,采用虚拟化后呈现出的技术问题将使公司系统更容易受到黑客的攻击。
一家金融服务公司的技术安全官员Chad Lorenc说,虚拟机的IT安全与合规性项目远比运行单一操作系统和应用软件的服务器更为复杂。
“目前,无法找出单一的方案来解决虚拟环境的安全问题。而要从客户、流程以及技术等多个角度来考虑。”
虚拟化技术使得企业可以整合运行在单一服务器多个系统上的应用软件,这就简化了管理需求,并使得IT硬件资源更好地被利用。然而,尽管这一技术已经存在了很多年,IT企业直到近期才对这一技术有了浓厚的兴趣。同时,英特尔、AMD、VMware、微软和IBM等公司也研发了很多产品。
一家安全公司的技术分析师George Gerchow说,在IT架构转而采用虚拟化工具之前,他们必须明白将多个服务器合并为一个并不会改变其安全需求。
事实上,他注意到,每个虚拟服务器分别面临着与传统服务器同样的威胁。George说:“如果一台主机容易受到攻击,那么所有的虚拟客户机以及这些虚拟机上的企业应用软件也同样处于危险中。”
因此,一台运行虚拟机的服务器面临着比一台物理服务器更多的危险。
他注意到,虚拟化软件使开发者、质量保证小组以及其他企业用户建立虚拟机的程序变得更加容易,且不易出现技术漏洞。如果IT管理人员不着手对之进行控制,这样的虚拟机就可能会突然出现、在系统间进行转移或者完全消失。
“IT部门经常未做好应对这一复杂系统的准备,因为他们不了解虚拟机存在于哪台服务器上,也不明白哪台是运行的、哪台处于未运行状态。”由于不了解虚拟机的运行情况,公司通常不能在必要时给系统打补丁或者进行升级。
给系统打补丁的复杂性
即使IT员工的确了解了虚拟机的运行情况,他们仍面临着安装补丁或者使系统脱机以执行常规安全升级的问题。随着虚拟机数目的增多,系统补丁以及应用软件升级随之而来的风险也会逐台增加。
Lorenc建议企业在创建虚拟服务器时安装可快速检查和发现虚拟机的工具。他还建议企业出台严格的政策以控制虚拟机的数量的扩充。同时,对于IT经理很重要的一点是对企业每个应用软件在虚拟环境的运行有清醒的认识。企业应该为虚拟机建立单独的补丁流程,并创建严格的改进管理政策,同时限制对虚拟环境的访问。
我们还处在这样的阶段:必须通过改进管理和技术而自己使这一领域的一些操作流程成熟起来。
BT Radianzd的首席安全官员Lloyd Hession说,虚拟化也揭示了一个潜在的网络访问路径控制问题。他注意到这一技术使得有多种访问需求的不同应用软件服务器运行在只有单一IP地址的一台主机上。因此,IT管理人员应该采用适当的访问路径控制方式来确保一个网络许可对应一台主机上的虚拟服务器。
当前,大多数网络不是虚拟化的。很多网络许可控制技术使得“进入”和“不得进入”的决定是未知的,无论某台服务器是不是虚拟机。
安全专家也注意到来自主要供应商虚拟化工具的扩展功能给黑客和安全研究人员提供一堆未经研究的代码,从中可发现安全漏洞和系统的攻击方式。
这个月,微软发布了一个补丁以处理其虚拟化软件的一个漏洞――用户可在未经控制的情况下进入操作系统和应用软件,微软将这一缺陷评价为重要的而非关键的。
安全专家说,随着虚拟化技术的普及,软件包中将出现更多这样的漏洞。
可能的缺陷
IBM网络系统部X-Force小组的主管Kris Lamb采用了虚拟机控制工具――管理系统的虚拟化功能,作为黑客对虚拟机攻击的一个强大的潜在平台。
作为硬件和主机不同虚拟机之间的分界,虚拟机管理器采用了控制台来管理主机资源。
据安全专家说,控制软件通常仅位于某一硬件水平上,用于发布无法察觉的对操作系统和应用软件的攻击。事实上,安全研究人员说他们已经证明了控制软件如何开展虚拟机攻击。比如,微软和密歇根大学的研究人员今年年初发现了SubVirt――可采用“根文件”以在一个操作系统下安装虚拟机控制器,这一行为使得研究人员实现了对虚拟机的完全控制。
一个相似的攻击方法被称为Blue Pill,是由Joanne Rutkowska开发的。Rutkowska的“根文件”攻击方法是基于AMD的安全虚拟机,代码名称为Pacifica。其采用与SubVirt攻击方式类似的方法攻击虚拟系统,然而却仍未被IT人员发现。
对于黑客,这样的软件给他们提供了一个靶子。
然而,一些IT经理和安全研究人员警告企业,采用虚拟化后呈现出的技术问题将使公司系统更容易受到黑客的攻击。
一家金融服务公司的技术安全官员Chad Lorenc说,虚拟机的IT安全与合规性项目远比运行单一操作系统和应用软件的服务器更为复杂。
“目前,无法找出单一的方案来解决虚拟环境的安全问题。而要从客户、流程以及技术等多个角度来考虑。”
虚拟化技术使得企业可以整合运行在单一服务器多个系统上的应用软件,这就简化了管理需求,并使得IT硬件资源更好地被利用。然而,尽管这一技术已经存在了很多年,IT企业直到近期才对这一技术有了浓厚的兴趣。同时,英特尔、AMD、VMware、微软和IBM等公司也研发了很多产品。
一家安全公司的技术分析师George Gerchow说,在IT架构转而采用虚拟化工具之前,他们必须明白将多个服务器合并为一个并不会改变其安全需求。
事实上,他注意到,每个虚拟服务器分别面临着与传统服务器同样的威胁。George说:“如果一台主机容易受到攻击,那么所有的虚拟客户机以及这些虚拟机上的企业应用软件也同样处于危险中。”
因此,一台运行虚拟机的服务器面临着比一台物理服务器更多的危险。
他注意到,虚拟化软件使开发者、质量保证小组以及其他企业用户建立虚拟机的程序变得更加容易,且不易出现技术漏洞。如果IT管理人员不着手对之进行控制,这样的虚拟机就可能会突然出现、在系统间进行转移或者完全消失。
“IT部门经常未做好应对这一复杂系统的准备,因为他们不了解虚拟机存在于哪台服务器上,也不明白哪台是运行的、哪台处于未运行状态。”由于不了解虚拟机的运行情况,公司通常不能在必要时给系统打补丁或者进行升级。
给系统打补丁的复杂性
即使IT员工的确了解了虚拟机的运行情况,他们仍面临着安装补丁或者使系统脱机以执行常规安全升级的问题。随着虚拟机数目的增多,系统补丁以及应用软件升级随之而来的风险也会逐台增加。
Lorenc建议企业在创建虚拟服务器时安装可快速检查和发现虚拟机的工具。他还建议企业出台严格的政策以控制虚拟机的数量的扩充。同时,对于IT经理很重要的一点是对企业每个应用软件在虚拟环境的运行有清醒的认识。企业应该为虚拟机建立单独的补丁流程,并创建严格的改进管理政策,同时限制对虚拟环境的访问。
我们还处在这样的阶段:必须通过改进管理和技术而自己使这一领域的一些操作流程成熟起来。
BT Radianzd的首席安全官员Lloyd Hession说,虚拟化也揭示了一个潜在的网络访问路径控制问题。他注意到这一技术使得有多种访问需求的不同应用软件服务器运行在只有单一IP地址的一台主机上。因此,IT管理人员应该采用适当的访问路径控制方式来确保一个网络许可对应一台主机上的虚拟服务器。
当前,大多数网络不是虚拟化的。很多网络许可控制技术使得“进入”和“不得进入”的决定是未知的,无论某台服务器是不是虚拟机。
安全专家也注意到来自主要供应商虚拟化工具的扩展功能给黑客和安全研究人员提供一堆未经研究的代码,从中可发现安全漏洞和系统的攻击方式。
这个月,微软发布了一个补丁以处理其虚拟化软件的一个漏洞――用户可在未经控制的情况下进入操作系统和应用软件,微软将这一缺陷评价为重要的而非关键的。
安全专家说,随着虚拟化技术的普及,软件包中将出现更多这样的漏洞。
可能的缺陷
IBM网络系统部X-Force小组的主管Kris Lamb采用了虚拟机控制工具――管理系统的虚拟化功能,作为黑客对虚拟机攻击的一个强大的潜在平台。
作为硬件和主机不同虚拟机之间的分界,虚拟机管理器采用了控制台来管理主机资源。
据安全专家说,控制软件通常仅位于某一硬件水平上,用于发布无法察觉的对操作系统和应用软件的攻击。事实上,安全研究人员说他们已经证明了控制软件如何开展虚拟机攻击。比如,微软和密歇根大学的研究人员今年年初发现了SubVirt――可采用“根文件”以在一个操作系统下安装虚拟机控制器,这一行为使得研究人员实现了对虚拟机的完全控制。
一个相似的攻击方法被称为Blue Pill,是由Joanne Rutkowska开发的。Rutkowska的“根文件”攻击方法是基于AMD的安全虚拟机,代码名称为Pacifica。其采用与SubVirt攻击方式类似的方法攻击虚拟系统,然而却仍未被IT人员发现。
对于黑客,这样的软件给他们提供了一个靶子。
Mar
4
目前在服务器领域上,硬盘接口技术最常见的有三种:SATA、SCSI和SAS等。还有高端的光纤通道硬盘。这里我们主要对SATA、SCSI、SAS接口技术,进行简单介绍。
SATA
SATA(Serial Advanced Technology Attachment)是串行ATA的缩写,目前能够见到的有SATA-1和SATA-2两种标准,对应的传输速度分别是150MB/s和300MB/s。SATA主要用于已经取代遇到瓶颈的PATA接口技术。从速度这一点上,SATA在传输方式上SATA也比PATA先进,已经远远把PATA(并行ATA)硬盘甩到了后面。其次,从数据传输角度来看,SATA比PATA抗干扰能力更强。
SATA-1目前已经得到广泛应用,其最大数据传输率为150MBps,信号线最长1米。SATA一般采用点对点的连接方式,即一头连接主板上的SATA接口,另一头直接连硬盘,没有其他设备可以共享这条数据线,而并行ATA允许这种情况(每条数据线可以连接1-2个设备),因此也就无需像并行ATA硬盘那样设置主盘和从盘。(如下图)
另外,SATA所具备的热插拨功能是PATA所不能比的,利用这一功能可以更加方便的组建磁盘阵列。串口的数据线由于只采用了四针结构,因此相比较起并口安装起来更加便捷,更有利于缩减机箱内的线缆,有利散热。(如下图)
SCSI
SCSI(Small Computer System Interface)是一种专门为小型计算机系统设计的存储单元接口模式,可以对计算机中的多个设备进行动态分工操作,对于系统同时要求的多个任务可以灵活机动的适当分配,动态完成。
SCSI规范发展到今天,已经是第六代技术了,从刚创建时候的SCSI(8bit)、Wide SCSI(8bit)、Ultra Wide SCSI(8bit/16bit)、Ultra Wide SCSI 2(16bit)、Ultra 160 SCSI(16bit)到今天的Ultra 320 SCSI,速度从1.2MB/s到现在的320MB/s有了质的飞跃。目前的主流SCSI硬盘都采用了Ultra 320 SCSI接口,能提供320MB/s的接口传输速度,转数可达万转以上。
SCSI硬盘也有专门支持热拔插技术的SCA2接口(80-pin),与SCSI背板配合使用,就可以轻松实现硬盘的热拔插。目前在工作组和部门级服务器中,热插拔功能几乎是必备的。
SAS
SAS 是Serial Attached SCSI的缩写,即串行连接SCSI。2001年11月26日,Compaq、IBM、LSI逻辑、Maxtor和Seagate联合宣布成立SAS工作组,其目标是定义一个新的串行点对点的企业级存储设备接口。
SAS技术引入了SAS扩展器,使SAS系统可以连接更多的设备,其中每个扩展器允许连接多个端口,每个端口可以连接SAS设备、主机或其他SAS扩展器。为保护用户投资,SAS规范也兼容了SATA,这使得SAS的背板可以兼容SAS和SATA两类硬盘, 对用户来说,使用不同类型的硬盘时不需要再重新投资。
目前,SAS接口速率为3Gbps,其SAS扩展器多为12端口。不久,将会有6Gbps甚至12Gbps的高速接口出现,并且会有28或36端口的SAS扩展器出现以适应不同的应用需求。
总结:
由于SCSI具有CPU占用率低,多任务并发操作效率高,连接设备多,连接距离长等优点,对于大多数的服务器应用,建议采用SCSI硬盘,并采用最新的Ultra320 SCSI控制器;SATA硬盘也具备热插拔能力,并且可以在接口上具备很好的可伸缩性,如在机架式服务器中使用SCSI-SATA、FC-SATA转换接口,以及SATA端口位增器( Port Multiplier),使其具有比SCSI更好的灵活性。对于低端的小型服务器应用,可以采用最新的SATA硬盘和控制器。
确定了硬盘的接口和类型后,就要重点考察上面提到的影响硬盘性能的技术指标,根据转速、单碟容量、平均寻道时间、缓存等因素,并结合资金预算,选定性价比最合适的硬盘方案。
SATA
SATA(Serial Advanced Technology Attachment)是串行ATA的缩写,目前能够见到的有SATA-1和SATA-2两种标准,对应的传输速度分别是150MB/s和300MB/s。SATA主要用于已经取代遇到瓶颈的PATA接口技术。从速度这一点上,SATA在传输方式上SATA也比PATA先进,已经远远把PATA(并行ATA)硬盘甩到了后面。其次,从数据传输角度来看,SATA比PATA抗干扰能力更强。
SATA-1目前已经得到广泛应用,其最大数据传输率为150MBps,信号线最长1米。SATA一般采用点对点的连接方式,即一头连接主板上的SATA接口,另一头直接连硬盘,没有其他设备可以共享这条数据线,而并行ATA允许这种情况(每条数据线可以连接1-2个设备),因此也就无需像并行ATA硬盘那样设置主盘和从盘。(如下图)
另外,SATA所具备的热插拨功能是PATA所不能比的,利用这一功能可以更加方便的组建磁盘阵列。串口的数据线由于只采用了四针结构,因此相比较起并口安装起来更加便捷,更有利于缩减机箱内的线缆,有利散热。(如下图)
SCSI
SCSI(Small Computer System Interface)是一种专门为小型计算机系统设计的存储单元接口模式,可以对计算机中的多个设备进行动态分工操作,对于系统同时要求的多个任务可以灵活机动的适当分配,动态完成。
SCSI规范发展到今天,已经是第六代技术了,从刚创建时候的SCSI(8bit)、Wide SCSI(8bit)、Ultra Wide SCSI(8bit/16bit)、Ultra Wide SCSI 2(16bit)、Ultra 160 SCSI(16bit)到今天的Ultra 320 SCSI,速度从1.2MB/s到现在的320MB/s有了质的飞跃。目前的主流SCSI硬盘都采用了Ultra 320 SCSI接口,能提供320MB/s的接口传输速度,转数可达万转以上。
SCSI硬盘也有专门支持热拔插技术的SCA2接口(80-pin),与SCSI背板配合使用,就可以轻松实现硬盘的热拔插。目前在工作组和部门级服务器中,热插拔功能几乎是必备的。
SAS
SAS 是Serial Attached SCSI的缩写,即串行连接SCSI。2001年11月26日,Compaq、IBM、LSI逻辑、Maxtor和Seagate联合宣布成立SAS工作组,其目标是定义一个新的串行点对点的企业级存储设备接口。
SAS技术引入了SAS扩展器,使SAS系统可以连接更多的设备,其中每个扩展器允许连接多个端口,每个端口可以连接SAS设备、主机或其他SAS扩展器。为保护用户投资,SAS规范也兼容了SATA,这使得SAS的背板可以兼容SAS和SATA两类硬盘, 对用户来说,使用不同类型的硬盘时不需要再重新投资。
目前,SAS接口速率为3Gbps,其SAS扩展器多为12端口。不久,将会有6Gbps甚至12Gbps的高速接口出现,并且会有28或36端口的SAS扩展器出现以适应不同的应用需求。
总结:
由于SCSI具有CPU占用率低,多任务并发操作效率高,连接设备多,连接距离长等优点,对于大多数的服务器应用,建议采用SCSI硬盘,并采用最新的Ultra320 SCSI控制器;SATA硬盘也具备热插拔能力,并且可以在接口上具备很好的可伸缩性,如在机架式服务器中使用SCSI-SATA、FC-SATA转换接口,以及SATA端口位增器( Port Multiplier),使其具有比SCSI更好的灵活性。对于低端的小型服务器应用,可以采用最新的SATA硬盘和控制器。
确定了硬盘的接口和类型后,就要重点考察上面提到的影响硬盘性能的技术指标,根据转速、单碟容量、平均寻道时间、缓存等因素,并结合资金预算,选定性价比最合适的硬盘方案。