IT log

moral & concision is my dream.

Archive for February, 2007

识别交换机性能质量优劣的五个方面

发布时间:2007-2-17 18:54:51
随着网络应用的逐渐深入,电信级交换机,特别是三层交换机已经成为当今市场争夺的焦点。但是在功能各异、种类繁多的交换机设备中,用户要如何拨开迷雾,找到符合自身应用特点的产品?这不仅需要用户从传统的交换机评价指标入手,考量产品的性价比,还要特别留意产品是否能够提供对一些具有高附加值的最新功能的支持。
一般来讲,评价交换机的优劣要从总体构架、性能和功能三方面入手。总体架构是指交换机设备的端口密度、端口支持的最高速率、交换容量等基本性能参数的值,可以让用户从总体上把握该设备的定位和档次。

而交换机的性能除了要满足RFC2544建议的基本标准,即吞吐量、时延、丢包率外,随着用户业务的增加和应用的深入,还增加了一些额外的指标,如MAC地址数、路由表容量(三层交换机)、ACL数目、LSP容量、支持VPN数量等。以MAC地址数为例。MAC地址数是指交换机的MAC地址表中可以最多存储的MAC地址数量,支持的MAC地址数越多,数据转发的速率也就越高。

功能是最直接指标

对于一般的接入层交换机,简单的QoS保证、安全机制、支持网管策略、生成树协议和VLAN都是必不可少的功能,但是如果仔细分析,在简单的表象下还可以对某些功能进行进一步的细分,而这些细分功能正是导致产品差异的主要原因,也是体现产品附加值的重要途径。

应用级QoS保证

为了在实际应用中为用户提供更大的灵活性,交换机的QoS策略必须支持多级别的数据包优先级设置,既可分别针对MAC地址、VLAN、IP地址、端口进行优先级设置。同时,交换机还要具有良好的拥塞控制和流量限制的能力,支持Diffserv区分服务,能够根据源/目的的MAC/IP智能的区分不同的应用流,满足实时多媒体应用的需求。目前市场上的一些交换机虽然也号称具有QoS保证,但其实只支持单级别的优先级设置,为用户的实际应用带来很多不便。

VLAN支持

VLAN即虚拟局域网,通过将局域网划分为虚拟网络VLAN网段,可以强化网络管理和网络安全,控制不必要的数据广播,网络中工作组可以突破共享网络中的地理位置限制,而根据管理功能来划分子网。不同厂商的交换机对VLAN的支持能力不同,支持VLAN的数量也不同。

网管功能

通过网管功能可以使用管理软件来管理、配置交换机,比如可通过Web浏览器、Telnet、SNMP、RMON等管理。通常,交换机厂商都提供管理软件或第三方管理软件远程管理交换机。一般的交换机满足SNMPMIBI/MIBII统计管理功能,并且支持配置管理、服务质量的管理、告警管理等策略,而复杂一些的千兆交换机会通过增加内置RMON组(mini-RMON)来支持RMON主动监视功能。瑞斯康达ISCOM2826交换机就具备这样的策略支持,在SNMP网管方式下,可由瑞斯康达公司的综合网管平台RCNVIEW进行管理。

链路聚合

链路聚合可以让交换机之间和交换机与服务器之间的链路带宽有非常好的伸缩性,比如可以把2个、3个、4个千兆的链路绑定在一起,使链路的带宽成倍增长。链路聚合技术可以实现不同端口的负载均衡,同时也能够互为备份,保证链路的冗余性。在一些千兆以太网交换机中,最多可以支持4组链路聚合,每组中最大4个端口。生成树协议和链路聚合都可以保证一个网络的冗余性。在一个网络中设置冗余链路,并用生成树协议让备份链路阻塞,在逻辑上不形成环路,而一旦出现故障,启用备份链路。我们此次推荐的三款交换机设备都对链路聚合、生成树协议予以了有效支持,其中GreenNet公司的TiNetS3526不仅支持8个10/100Base-T自适应端口的捆绑,还支持千兆端口的聚合。

支持VRRP协议

VRRP(虚拟路由冗余协议)是一种保证网络可靠性的解决方案。在该协议中,对共享多存取访问介质上终端IP设备的默认网关(DefaultGateway)进行冗余备份,从而在其中一台三层交换机设备宕机时,备份的设备会及时接管转发工作,向用户提供透明的切换,提高了网络服务质量。VRRP协议与Cisco的HSRP协议有异曲同工之妙,只不过HSRP是Cisco私有的。目前,主流交换机厂商均已在其产品中支持了VRRP协议,但广泛应用还尚需时日。

posted by Leon Tsang in Library - Knowledge and Power and have No Comments

PHP的内存限制错误及PHP文件上传的原理及实现

Allowed memory size of 8388608 bytes exhausted (tried to allocate 46080 bytes) 错误的解决

如果看到如下的错误!

Allowed memory size of 8388608 bytes exhausted (tried to allocate 46080 bytes)

你可以去看看apache的error_log(例如在 /var/log/httpd/error_log )

你可能会看到类似「Allowed memory size of 8388608 bytes exhausted (tried to allocate 46080 bytes) in…..」的信息。

這是因为 php.ini里的 memory_limit不够大的关系。

修改 /etc/php.ini将memory_limit由 8M 改成 16M(或更大),再将 httpd restart
就可以解決了。

===================

PHP文件上传的原理及实现
2007-02-04 03:35
php.ini默认memory_limit是8M
问题描述:Fatal error: Allowed memory size of 8388608 bytes exhausted

解决方法:
法1:修改php.ini中的memory_limit值
法2:把下面代码放到index.php中即可。
ini_set(”memory_limit”, “32M”);
ini_set(”post_max_size”, “24M”);
ini_set(”upload_max_filesize”, “20M”);

利用php的文件函数来实现上传

这段代码分为两个文件,一个为upload.html,一个是upload.php

upload.html   
<form enctype="multipart/form-data" action="upload.php" method="post">
<input type="hidden" name="max_file_size" value="100000">
<input name="userfile" type="file">  
<input type="submit" value="上传文件">
</form>

其中,

请注意<form enctype="multipart/form-data"……>这是一个标签,我们要实现文件的上传,必须指定为multipart/form-data,否则服务器将不知道要干什么。   
值得注意的是文件upload.html中表单选项 MAX_FILE_SIZE 的隐藏值域,通过设置其Value(值)可以限制上载文件的大小。   
MAX_FILE_SIZE 的值只是对浏览器的一个建议,实际上它可以被简单的绕过。因此不要把对浏览器的限制寄希望于该值。实际上,PHP 设置中的上传文件最大值,是不会失效的。但是最好还是在表单中加上 MAX_FILE_SIZE,因为它可以避免用户在花时间等待上传大文件之后才发现该文件太大了的麻烦。   
upload.php   
$f=&$HTTP_POST_FILES['Myfile'];
$dest_dir=’uploads’;//设定上传目录
$dest=$dest_dir.’/’.date("ymd")."_".$f['name'];//设置文件名为日期加上文件名避免重复
$r=move_uploaded_file($f['tmp_name'],$dest);
chmod($dest, 0755);//设定上传的文件的属性

或者
<?copy($_FILES[MyFile][tmp_name],$_FILES[MyFile][name]);?>

以上范例中 $_FILES 数组的内容如下所示。我们假设文件上传字段的名称为 userfile(名称可随意命名)

$_FILES['userfile']['name'] 客户端机器文件的原名称。   
$_FILES['userfile']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如“image/gif”。   
$_FILES['userfile']['size'] 已上传文件的大小,单位为字节。   
$_FILES['userfile']['tmp_name'] 文件被上传后在服务端储存的临时文件名。   
$_FILES['userfile']['error'] 和该文件上传相关的错误代码   
值:0; 没有错误发生,文件上传成功。   
值:1; 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。   
值:2; 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。   
值:3; 文件只有部分被上传。   
值:4; 没有文件被上传。   
[编辑]PHP上传文件涉及到的参数
PHP默认的上传限定是最大2M,想上传超过此设定的文件,需要调整PHP、apache等的一些参数. 下面,我们简要介绍一下PHP文件上传涉及到的一些参数:

file_uploads   
是否允许通过HTTP上传文件的开关,默认为ON即是开

upload_tmp_dir   
upload_tmp_dir用来说明PHP上传的文件放置的临时目录,要想上传文件,得保证服务器没有关闭临时文件和有对文件夹的写权限,如果未指定则PHP使用系统默认值

upload_max_filesize   
允许上传文件大小的最大值,默认为2M

post_max_size   
控制在采用POST方法进行一次表单提交中PHP所能够接收的最大数据量。如果希望使用PHP文件上传功能,则需要将此值改为比upload_max_filesize要大

max_input_time   
以秒为单位对通过POST、GET以及PUT方式接收数据时间进行限制。如果应用程序所运行环境处在低速链路上,则需要增加此值以适应接收数据所需的更多时间

memory_limit   
为了避免正在运行的脚本大量使用系统可用内存,PHP允许定义内存使用限额。通过memory_limit变量来指定单个脚本程序可以使用的最大内存容量变量memory_limit的值应当适当大于post_max_size的值

max_execution_time   
max_execution_time设置了在强制终止脚本前PHP等待脚本执行完毕的时间,此时间以秒计算。当脚本进入了一个无限循环状态时此变量非常有用。然而,当存在一个需要很长时间完成的合法活动时(例如上传大型文件),这项功能也会导致操作失败。在这样的情况下必须考虑将此变量值增加,以避免PHP在脚本正在执行某些重要过程的时候将脚本关闭

对于linux主机,可能在/etc/httpd/conf.d/access.conf/下面里面还有php.conf 文件,这个文件可能会解决一些系统的文件大小限制问题   
[编辑]利用discuz实现PHP大文件上传应用举例

论坛的附件功能当初设计的初衷并不是为了文件管理,由于服务器配置,php,网络等多方面因素,使得通过论坛上传文件并不是一个好方案。

对于确实需要改善论坛附件上传条件的朋友可以尝试将上面提及的参数在php.ini进行设置,以适应大文件上传的需要。同时别忘记在论坛的后台相应做附件限制的地方进行设置。

论坛主要有2个地方可以对附件上传的大小进行限制,级别从高到低依次为:

帖子相关—附件类型尺寸   
用户组—附件相关   
同时,下面提供一个配置指导,来源一些成功通过http上传大附件的朋友的提供,当然,由于大家的服务器配置情况以及网络情况不同,并不一定适用你的情况,可能很多地方需要参照修改:

打开php.ini,

参数 设置 说明
file_uploads on 是否允许通过HTTP上传文件的开关。默认为ON即是开
upload_tmp_dir — 文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹
upload_max_filesize 8m 望文生意,即允许上传文件大小的最大值。默认为2M
post_max_size 8m 指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M
说明
一般地,设置好上述四个参数后,在网络正常的情况下,上传<=8M的文件是不成问题
但如果要上传>8M的大体积文件,只设置上述四项还一定能行的通。除非你的网络真有100M/S的上传高速,否则你还得继续设置下面的参数。
max_execution_time 600 每个PHP页面运行的最大时间值(秒),默认30秒
max_input_time 600 每个PHP页面接收数据所需的最大时间,默认60秒
memory_limit 8m 每个PHP页面所吃掉的最大内存,默认8M

把上述参数修改后,在网络所允许的正常情况下,就可以上传大体积文件了

posted by Leon Tsang in Library - Knowledge and Power and have No Comments