Web性能压力测试工具之WebBench详解

Webbench是知名的网站压力测试工具,它是由Lionbridge公司(http://www.lionbridge.com)开发。

Webbench能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况。webbench的标准测试可以向我们展示服务器的两项内容:每秒钟相应请求数和每秒钟传输数据量。webbench不但能具有便准静态页面的测试能力,还能对动态页面(ASP,PHP,JAVA,CGI)进 行测试的能力。还有就是他支持对含有SSL的安全网站例如电子商务网站进行静态或动态的性能测试。
Webbench最多可以模拟3万个并发连接去测试网站的负载能力。
Continue reading “Web性能压力测试工具之WebBench详解”

Open_files_limit can’t be set larger than 2048 on Windows

Description:
Currently the number of fd’s on windows is limited to 2048.
This is bad for performance, for many reasons, mostly windows servers
are stuck with a tiny table_cache or low number of concurrent connections,
compared with linux running on the same hardware.

 

Error Log:
Could not increase number of max_open_files to more than 2048 (request: 3082)

 

Othre Error:

ERROR 1135: Can’t create a new thread (errno 11). If you are not out of available memory, you can consult the manual for a possible OS-dependent bug

 

How to repeat:
Run the server

 

mysqld-nt.exe –table_cache=1000 –max_connections=500 –open_files-limit=3000 –console

 

061122 17:04:27 [Warning] Could not increase number of max_open_files to more than 2048
(request: 2510)
061122 17:04:28  InnoDB: Started; log sequence number 0 43655
061122 17:04:28 [Note] mysqld-nt: ready for connections.
Version: ’5.0.30-enterprise-gpl-nt’  socket: ”  port: 3306  MySQL Enterprise Server
(GPL)

 

More:http://bugs.mysql.com/bug.php?id=24509

 
 
 
 

Solution:

 

1.Update Your Mysql Server to Mysql5.5,It has been fix is released in 5.5.

 

2.Replacement of the operating system,Linux have not the problem.


 

NTFS最大文件尺寸

Windows XP Professional支持FAT16、FAT32和NTFS文件系统。因为NTFS不仅具有FAT16和FAT32的所有基本功能,而且还有一些高级 的存储功能,例如压缩、增强的安全性以及更大的分区和文件尺寸,所以它是我们在Windows XP Professional中推荐使用的文件系统。
 

下面是NTFS具有的一些功能:

  • 文件加密功能允许你保护文件免受未授权的访问。
  • 可以为文件夹和单个文件设置访问权限。
  • 在遇到电源故障或其他系统问题时磁盘活动恢复日志能帮你快速恢复信息。
  • 磁盘配额功能允许你监视和控制单个用户的可用磁盘空间。

更好的可伸缩性允许你使用更大的卷。NTFS卷的最大容量比FAT卷大很多。而且,随着卷容量的不断增加,NTFS卷的性能也不会像FAT卷那样迅速降低。

 

如果你是进行Windows XP Professional干净安装,我们推荐使用NTFS格式。如果是升级一台只有NTFS文件系统的计算机,你应该在Windows XP Professional下继续使用NTFS。

 

Windows XP Professional支持Windows 95、Windows 98或Windows Me的现有文件系统,包括FAT16和FAT32文件系统。如果你要升级原本使用FAT16或FAT32文件系统的计算机,不妨考虑重新格式化分区或将分 区转换为NTFS。你可以在安装时将FAT卷转换为NTFS,然而一旦你选择了这么做,就不能卸载Windows XP Professional并还原到原来的操作系统了。

 

注意:压缩的Windows 98卷不能升级,若要升级到Windows XP Professional需先解压。

 

如果你计划在同一台计算机上安装Windows XP Professional和另一个操作系统,你需要一种能被机器上所有操作系统访问的文件系统。例如说,如果计算机中使用Windows 95和Windows XP Professional操作系统,你应该在Windows 95需要访问的硬盘分区上使用FAT格式。但是如果计算机使用Windows NT 4.0和Windows XP Professional,你可以在分区上使用FAT、FAT32或者NTFS,因为这两种操作系统都支持这些文件系统格式。但是,在运行Windows NT 4.0的时候,您可能无法使用Windows XP Professional所包含的一些新的NTFS特性。

 

注意:只有在Windows NT、Windows 2000或Windows XP Professional下,你才可以访问NTFS卷。

 
 

表四列出了每种文件系统的大小和域限制。

表四 NTFS和FAT文件系统的比较
比较项 NTFS FAT16 FAT32
操作系统兼容性 一 台运行Windows 2000或Windows XP Professional的机器可以访问NTFS分区上的文件。一台运行Windows NT 4.0(SP4或更高版本) 的机器可以访问该分区上的文件,但一些NTFS功能,例如磁盘配额就不可用了。其他操作系统不能访问。 MSDOS、Windows的所有版本、Windows NT、Windows XP Professional、OS/2都可以访问。 只有在Windows 95 OSR2、Windows 98、Windows Me、Windows 2000以及Windows XP Professional下可以访问。
卷大小 推荐最小卷容量大约是10MB。

推荐实际最大卷容量是2TB。

您也可以使用更大的容量。

不能在软盘上使用。

卷最大为4GB。不能在软盘上使用。 卷大小从512MB到2TB。

在Windows XP Professional下,一个FAT32卷最大只能被格式化到32GB。

不能在软盘上使用。

文件大小 最大文件尺寸是16TB减去64KB(244减去64KB)。 最大文件尺寸为4GB。 最大文件尺寸为4GB。
每卷文件数 4,294,967,295 (232减1个文件)。 65,536 (216 个文件)。 大约4,194,304 (222个文件)。

如果你还想在你的系统中使用 MS-DOS ,你需要另一个格式化成FAT的分区,用作MS-DOS操作系统的本地文件系统。MS-DOS不能分辨NTFS或FAT32分区上的数据。

 

注意:为了格式化当前系统分区,你必须使用一种你计算机上运行的所有操作系统都能识别的文件系统。你最多能有四个初始分区,但只有一个基本分区能启动所有的操作系统。

 
 

什么是卷
 

卷,就是一种逻辑硬盘。这么说你可能很容易就想到分区,一个分区就可以构成一个逻辑硬盘。但是卷与分区最大的不同就是卷可以跨越物理硬盘。
 

动态磁盘的5种卷:

1、简单卷:构成单个物理磁盘空间的卷。它可以由磁盘上的单个区域或同一磁盘上连接在一起的多个区域组成,可以在同一磁盘内扩展简单卷。
 

2、跨区卷:简单卷也可以扩展到其它的物理磁盘,这样由多个物理磁盘的空间组成的卷就称为跨区卷。简单卷和跨区卷都不属于RAID范畴。
 

3、带区卷:以带区形式在两个或多个物理磁盘上存储数据的卷。带区卷上的数据被交替、平均(以带区形式)地分配给这些磁盘,带区卷是所有 Windows 2000 可用的卷中性能最佳的,但它不提供容错。如果带区卷上的任何一个磁盘数据损坏或磁盘故障,则整个卷上的数据都将丢失。带区卷可以看作硬件RAID中的 RAID0。
 

4、镜像卷:在两个物理磁盘上复制数据的容错卷。它通过使用卷的副本(镜像)复制该卷中的信息来提供数据冗余,镜像总位于另一个磁盘上。如果其中一个物理 磁盘出现故障,则该故障磁盘上的数据将不可用,但是系统可以使用未受影响的磁盘继续操作。镜像卷可以看作硬件RAID中的 RAID1。
 

5、RAID-5卷:具有数据和奇偶校验的容错卷,有时分布于三个或更多的物理磁盘,奇偶校验用于在阵列失效后重建数据。如果物理磁盘的某一部分失败,您 可以用余下的数据和奇偶校验信息重新创建磁盘上失败的那一部分上的数据。类似硬件RAID中的RAID5,在硬件IDE RAID中,RAID5是很少见的,通常在SCSI RAID卡和高档IDE RAID卡中才能提供,普通IDE RAID卡仅提供RAID0、RAID1和RAID0+1。
 
 

卷(也称逻辑卷)是Windows 2000的一种磁盘管理方式,目的是把硬盘空间从物理硬盘的管理方式中跳出来,进行更方便的统一管理分配。比如我们有一个8GB的硬盘和一个20GB的硬 盘,想要分成一个12GB和一个16GB的两个逻辑盘,用物理分区的方式就没法做到,但用卷来管理就可以做到。
 
每个卷可以看作一个逻辑盘,可以是一个物理硬盘的逻辑盘,也就是我们直接看到的D盘、E盘这些盘符,也可以是两个硬盘或两个硬盘的部分空间组成的RAID 0或RAID 1阵列,或更多硬盘组成其他RAID 5阵列,但表面看来(比如在“我的电脑”或“资源管理器”中)都是一个本地磁盘。卷主要有基本磁盘上的基本卷和动态磁盘上的动态卷,基本卷包括存放操作系 统和操作系统支持文件的引导卷(也就是安装Windows 2000的卷)和存放加载Windows 2000所需专用硬件文件的系统卷(通常为C盘),引导卷和系统卷可以是同一个卷。动态卷包括简单卷、跨区卷、带区卷、镜像卷和RAID 5卷。
 

(2)操作步骤

以系统管理员(通常默认为Administrator)或系统管理组成员身份登录,依次打开“我的电脑”→“控制面板”→“管理工具”→“计算机管理”→ “存储”→“磁盘管理(本地)”(也可以在“开始”→“运行”中执行compmgmt.msc /s直接打开它)。屏幕上半部分显示的是卷的详细情况,下半部分显示物理磁盘状态,在这一部分的左边显示物理磁盘的两种类型。图中的磁盘0、1、2、3都 是物理磁盘,并且现在都是基本磁盘,所以至少要把其中两个升级为动态磁盘,下面把磁盘1和磁盘2升级到动态磁盘并创建一个带区卷(如图1)。
 
步骤一:首先备份重要数据,因为一旦升级到动态磁盘,Windows 2000以外的操作系统将不能访问动态磁盘,创建带区卷后原来的数据也将全部丢失。
 

步骤二:创建动态磁盘。在磁盘1或磁盘2上单击鼠标右键,选择“升级到动态磁盘(U)”,出现对话框后在磁盘1和磁盘2前面打钩并确定,几秒钟后升级完成,此时在“磁盘管理”中磁盘1和磁盘2已变成动态磁盘。

网站压力测试工具webbench简介、安装、使用

一、webbench简介

Webbench是有名的网站压力测试工具,它是由Lionbridge公司(http://www.lionbridge.com)开发。它的帮助文件和文档请到:www.webbench.com上查看。
Webbech能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况。webBech的标准测试可以向我们展示服务器的两项 内容:每秒钟相应请求数和每秒钟传输数据量。webbench不但能具有便准静态页面的测试能力,还能对动态页面(ASP,PHP,JAVA,CGI)进 行测试的能力。还有就是他支持对含有SSL的安全网站例如电子商务网站进行静态或动态的性能测试。

 
二、webbench安装

(1)在FreeBSD下的用Ports安装方法:

#cd  /usr/ports/benchmarks/webbench
#make install clean

记得安装成功以后运行一下rehash命令,刷新一下系统命令

#rehash

(2)RedHat/CentOS下的编译安装

下载安装包:wget http://blog.s135.com/soft/linux/webbench/webbench-1.5.tar.gz

#tar zxf webbench-1.5.tar.gz
#cd webbench-1.5
#make && make install

或者参考:http://blog.haohtml.com/index.php/archives/3234

 
 

三、webbench使用

#webbench -?    (查看命令帮助)

常用参数说明,-c 表示客户端数,-t 表示时间

测试实例:

#webbench -c 500  -t  30   http://192.168.0.99/phpionfo.php

测试静态图片

#webbench -c 500  -t  30   http://192.168.0.99/test.jpg

 
 

四、webbench测试结果

www# webbench -c 500 -t 30 http://192.168.0.99/phpionfo.php
Webbench – Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://192.168.0.99/phpionfo.php
500 clients, running 30 sec.
Speed=53726 pages/min, 160866 bytes/sec.
Requests: 26863 susceed, 0 failed.
 
 

五、webbench命令

webbench [option]… URL

-f|–force               Don’t wait for reply from server.

-r|–reload              Send reload request – Pragma: no-cache.

-t|–time <sec>          Run benchmark for <sec> seconds. Default 30.

-p|–proxy <server:port> Use proxy server for request.

-c|–clients <n>         Run <n> HTTP clients at once. Default one.

-9|–http09              Use HTTP/0.9 style requests.

-1|–http10              Use HTTP/1.0 protocol.

-2|–http11              Use HTTP/1.1 protocol.

–get                    Use GET request method.

–head                   Use HEAD request method.

–options                Use OPTIONS request method.

–trace                  Use TRACE request method.

-?|-h|–help             This information.

-V|–version             Display program version.

 
 

六 实例演示(Nginx+php和Apache+php)

注意:webbench 做压力测试时,该软件自身也会消耗CPU和内存资源,为了测试准确,请将 webbench 安装在别的服务器上。

 

测试结果:##### Nginx + PHP #####

[root@localhost webbench-1.5]# webbench -c 100 -t 30 http://192.168.1.21/phpinfo.php
Webbench – Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://192.168.1.21/phpinfo.php
100 clients, running 30 sec.

Speed=102450 pages/min, 16490596 bytes/sec.
Requests: 51225 susceed, 0 failed.

top – 14:06:13 up 27 days,  2:25,  2 users,  load average: 14.57, 9.89, 6.51
Tasks: 287 total,   4 running, 283 sleeping,   0 stopped,   0 zombie
Cpu(s): 49.9% us,  6.7% sy,  0.0% ni, 41.4% id,  1.1% wa,  0.1% hi,  0.8% si
Mem:   6230016k total,  2959468k used,  3270548k free,   635992k buffers
Swap:  2031608k total,     3696k used,  2027912k free,  1231444k cached

 


测试结果:#####  Apache + PHP #####

[root@localhost webbench-1.5]# webbench -c 100 -t 30 http://192.168.1.27/phpinfo.php
Webbench – Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://192.168.1.27/phpinfo.php
100 clients, running 30 sec.

Speed=42184 pages/min, 31512914 bytes/sec.
Requests: 21092 susceed, 0 failed.

top – 14:06:20 up 27 days,  2:13,  2 users,  load average: 62.15, 26.36, 13.42
Tasks: 318 total,   7 running, 310 sleeping,   0 stopped,   1 zombie
Cpu(s): 80.4% us, 10.6% sy,  0.0% ni,  7.9% id,  0.1% wa,  0.1% hi,  0.9% si
Mem:   6230016k total,  3075948k used,  3154068k free,   379896k buffers
Swap:  2031608k total,    12592k used,  2019016k free,  1117868k cached

 
 

可以看出Nginx+php平台的并发量(51225)要比Apache+php平台的并发量(21092)要大的.

为什么Nginx的性能要比Apache高得多?这得益于Nginx使用了最新的epoll(Linux 2.6内核)和kqueue(freebsd)网络I/O模型,而Apache则使用的是传统的select模型。目前Linux下能够承受高并发访问的 Squid、Memcached都采用的是epoll网络I/O模型。

处理大量的连接的读写,Apache所采用的select网络I/O模型非常低效。下面用一个比喻来解析Apache采用的select模型和Nginx采用的epoll模型进行之间的区别:

假设你在大学读书,住的宿舍楼有很多间房间,你的朋友要来找你。select版宿管大妈就会带着你的朋友挨个房间去找,直到找到你为止。而 epoll版宿管大妈会先记下每位同学的房间号,你的朋友来时,只需告诉你的朋友你住在哪个房间即可,不用亲自带着你的朋友满大楼找人。如果来了 10000个人,都要找自己住这栋楼的同学时,select版和epoll版宿管大妈,谁的效率更高,不言自明。同理,在高并发服务器中,轮询I/O是最 耗时间的操作之一,select和epoll的性能谁的性能更高,同样十分明了。

Windows下通过xmanager远程桌面控制Linux5

First
open terminal and set as follow…

vi /etc/gdm/custom.conf

[xdmcp]
# The follow line is new add
Enable=ture 

Second(just accept root remote login)
open terminal and set as follow…

input a command “gdmstart” on terminal.

then system will open the display options.

select security options.

find “allow remote system administrator login”,and sign it.

Third
reboot computer.

or another way.

one

open terminal and set as follow…

vi /etc/gdm/custom.conf

[xdmcp]
Enable=ture

[security]
AllowRemoteRoot=true

second

reboot computer.

Squid2.7做普通代理并增加用户认证

采用2.7最新稳定版本‍squid-2.7.STABLE9.tar.gz,没什么好说的了

./configure -prefix=/usr/local/squid -enable-dlmalloc -enable-xmalloc-statistics -enable-useragent-log -enable-referer-log -enable-epoll -enable-large-cache-files -disable-internal-dns -enable-linux-netfilter -enable-truncate -enable-x-accelerator-vary -enable-follow-x-forwarded-for -with-large-files -with-pthreads -enable-storeio=”aufs,coss,diskd,ufs” -enable-kill-parent-hack -enable-gnuregex -enable-cache-digests -enable-delay-pools -enable-stacktraces -enable-default-err-language=Simplify_Chinese -enable-err-languages=”Simplify_Chinese English” –enable-auth=”basic” –enable-basic-auth-helpers=”NCSA”

make && make install

cp squid.conf squid.conf && rm -rf squid.conf

vim squid.conf

http_port 3128
acl local dst 61.164.41.148 127.0.0.0/8
acl request method HEAD CONNECT PUT DELETE
acl all src 0.0.0.0/0.0.0.0
acl OverConnLimit maxconn 50
visible_hostname localhost
cache_dir ufs /var/spool/squid 256 8 16
coredump_dir /var/spool/squid
#########
auth_param basic program /usr/local/squid/bin/ncsa_auth /usr/local/squid/etc/passwd
auth_param basic children 5
acl auth_user proxy_auth REQUIRED
http_access allow auth_user
http_access deny all
#########
access_log none
cache_log /var/log/squid/cache_log
cache_store_log none
pid_filename /var/run/squid.pid

error_directory /usr/local/squid/share/errors/Simplify_Chinese
cache_mgr yhl5555@126.com

half_closed_clients off

cache_effective_user nobody
cache_effective_group nobody

positive_dns_ttl 5 minute
negative_dns_ttl 1 minute
shutdown_lifetime 5 second
connect_timeout 30 second
read_timeout 60 second
request_timeout 60 second

cache_mem 256 MB

然后增加用户验证

参考:http://www.squid-cache.org/Versions/v2/2.7/cfgman/auth_param.html
利用Apache携带的工具软件htpasswd在/usr/locad/squid/etc下生成密码文件,并添加相
应的用户信息。该密码文件每行包含一个用户的信息,即用户名和密码。例如,用
htpasswd生成密码文件passwd并添加用户haowenwen:

yum -y install httpd

htpasswd -c /usr/local/squid/etc/passwd haowenwen
password: ******

/usr/local/src/squid-2.7.STABLE9/helpers/basic_auth/NCSA
make
make install
cp ncsa_auth /usr/local/squid/bin/ncsa_auth

最后创建cache目录

‍# mkdir /var/log/squid
# chown nobody:nobody /var/log/squid
# mkdir /var/spool/squid
# chown nobody:nobody /var/spool/squid
# ls -lh /var/spool/
# cd /usr/local/squid/sbin
# ./squid -z
# ./squid -Nd 10

输入‍http://192.168.64.131:3128 出现

Access Denied的错误提示

说明squid启动成功

‍因为指定了-d参数,所以现在squid会把所有的调试信息都输出终端。 按下键盘的ctrl+c,然后输入killall squid杀死squid,可以终止squid的进程。

‍重新引导Squid运行
# /usr/local/squid/sbin/squid -k shutdown
# /usr/local/squid/sbin/squid -s

‍把squid添加到系统启动项
编辑 vi /etc/rc.d/rc.local
添加如下行: /usr/local/squid/sbin/squid -s

‍常用squid调试命令:
————————–
重引导修改过的 squid.conf
/usr/local/squid/sbin/squid -k reconfigure
————————-
1,初始化你在 squid.conf 里配置的 cache 目录
#/usr/local/squid/sbin/squid -z
如果有错误提示,请检查你的 cache目录的权限。
2,对你的squid.conf 排错,即验证 squid.conf 的 语法和配置。
#/usr/local/squid/sbin/squid -k parse
如果squid.conf 有语法或配置错误,这里会返回提示你,如果没有返回,恭喜,可以尝试启动squid。
3,在前台启动squid,并输出启动过程。
#/usr/local/squid/sbin/squid -N -d1
如果有到 ready to server reques,恭喜,启动成功。
然后 ctrl + c,停止squid,并以后台运行的方式启动它。
4,启动squid在后台运行。
#/usr/local/squid/sbin/squid -s
这时候可以 ps -A 来查看系统进程,可以看到俩个 squid 进程。
5,停止 squid
#/usr/local/squid/sbin/squid -k shutdown
这个不用解释吧。
6,重引导修改过的 squid.conf
#/usr/local/squid/sbin/squid -k reconfigure
这个估计用的时候比较多,当你发现你的配置有不尽你意的时候,可以随时修改squid.conf,然后别忘记对你的 squid.conf排错,然后再执行此指令,即可让squid重新按照你的 squid.conf 来运行。
7,把squid添加到系统启动项
编辑 /etc/rc.d/rc.local
添加如下行: /usr/local/squid/sbin/squid -s
当然,并不是每个人都喜欢这种启动方式,你可以用你最习惯的方式;或者把它安装为服务。

再来点其他的。
1,修改cache 缓存目录的权限。
#chown -R nobody:nobody /home/cache
我的cache缓存目录是 /home/cache,squid执行用户和用户组是 squid,squid。
2,修改squid 日志目录的权限
#chown -R nobody:nobody /usr/local/squid/var/logs
这一步并不是适合每一个使用squid的用户.意为让squid有权限在该目录进行写操作 。
例如生成 access.log    cache.log   store.log
3,查看你的日志文档。
#more /usr/local/squid/var/logs/access.log | grep TCP_MEM_HIT
该指令可以看到在squid运行过程中,有那些文件被squid缓存到内存中,并返回给访问用户。
#more /usr/local/squid/var/logs/access.log | grep TCP_HIT
该指令可以看到在squid运行过程中,有那些文件被squid缓存到cache目录中,并返回给访问用户。
#more /usr/local/squid/var/logs/access.log | grep TCP_MISS
该指令可以看到在squid运行过程中,有那些文件没有被squid缓存,而是现重原始服务器获取并返回给访问用户。

十个免费的Web压力测试工具

Grinder –  Grinder是一个开源的JVM负载测试框架,它通过很多负载注射器来为分布式测试提供了便利。 支持用于执行测试脚本的Jython脚本引擎HTTP测试可通过HTTP代理进行管理。根据项目网站的说法,Grinder的 主要目标用户是“理解他们所测代码的人——Grinder不仅仅是带有一组相关响应时间的‘黑盒’测试。由于测试过程可以进行编码——而不是简单地脚本 化,所以程序员能测试应用中内部的各个层次,而不仅仅是通过用户界面测试响应时间。

 

Pylot -Pylot是一款开源的测试web service性能和扩展性的工具,它运行HTTP 负载测试,这对容量计划,确定基准点,分析以及系统调优都很有用处。Pylot产生并发负载(HTTP Requests),检验服务器响应,以及产生带有metrics的报表。通过GUI或者shell/console来执行和监视test suites。

 

Web Capacity Analysis Tool (WCAT) – 这是一种轻量级负载生成实用工具,不仅能够重现对 Web 服务器(或负载平衡服务器场)的脚本 HTTP 请求,同时还可以收集性能统计数据供日后分析之用。WCAT 是多线程应用程序,并且支持从单个源控制多个负载测试客户端,因此您可以模拟数千个并发用户。该实用工具利用您的旧机器作为测试客户端,其中每个测试客户 端又可以产生多个虚拟客户端(最大数量取决于客户端机器的网络适配器和其他硬件)。您可以选择使用 HTTP 1.0 还是 HTTP 1.1 请求,以及是否使用 SSL。并且,如果测试方案需要,您还可以使用脚本执行的基本或 NTLM 身份验证来访问站点的受限部分。(如果您的站点使用 cookie、表单或基于会话的身份验证,那您可以创建正确的 GET 或 POST 请求来对测试用户进行身份验证。)WCAT 还可管理您站点可能设置的任何 cookie,所以配置文件和会话信息将永久保存。

 

fwptt – fwptt 也是一个用来进行WEB应用负载测试的工具。它可以记录一般的请求,也可以记录Ajax请求。它可以用来测试 asp.net, jsp, php 或是其它的Web应用。

 

JCrawler – JCrawler是一个开源( CPL) 的WEB应用压力测试工具。通过其名字,你就可以知道这是一个用Java写的像网页爬虫一样的工具。只要你给其几个URL,它就可以开始爬过去了,它用一 种特殊的方式来产生你WEB应用的负载。这个工具可以用来测试搜索引擎对你站点产生的负载。当然,其还有另一功能,你可以建立你的网站地图和再点击一下, 将自动提交Sitemap给前5名的搜索引擎!

 

Apache JMeter – Apache JMeter是一个专门为运行和服务器装载测试而设计的、100%的纯Java桌面运行程序。原先它是为Web/HTTP测试而设计的,但是它已经扩展以 支持各种各样的测试模块。它和用于HTTP和SQL数据库(使用JDBC)的模块一起运送。它可以用来测试静止资料库或者活动资料库中的服务器的运行情 况,可以用来模拟对服务器或者网络系统加以重负荷以测试它的抵抗力,或者用来分析不同负荷类型下的所有运行情况。它也提供了一个可替换的界面用来定制数据 显示,测试同步及测试的创建和执行。

 

Siege -Siege(英文意思是围攻)是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力:可以根据配置对一个WEB站点进行多用户的 并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。 Siege 支持基本的认证,cookies, HTTP 和 HTTPS 协议。

 

http_load – http_load 以并行复用的方式运行,用以测试web服务器的吞吐量与负载。但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把客户机搞死。可以可以测试HTTPS类的网站请求。

 

Web Polygraph – Web Polygraph这个软件也是一个用于测试WEB性能的工具,这个工具是很多公司的标准测试工具,包括微软在分析其软件性能的时候,也是使用这个工具做为基准工具的。很多招聘测试员的广告中都注明需要熟练掌握这个测试工具。

 

OpenSTA – OpenSTA是一个免费的、开放源代码的web性能测试工具,能录制功能非常强大的脚本过程,执行性能测试。例如虚拟多个不同的用户同时登陆被测试网 站。其还能对录制的测试脚本进行,按指定的语法进行编辑。在录制完测试脚本后,可以对测试脚本进行编辑,以便进行特定的性能指标分析。其较为丰富的图形化 测试结果大大提高了测试报告的可阅读性。OpenSTA 基于CORBA 的结构体系,它通过虚拟一个proxy,使用其专用的脚本控制语言,记录通过 proxy 的一切HTTP/S traffic。通过分析OpenSTA的性能指标收集器收集的各项性能指标,以及HTTP 数据,对系统的性能进行分析。

 

欢迎您留下你认为不错的WEB应用性能测试的工具。

Linux代理服务全攻略——Squid篇

  代理提供两个方面的服务:一是让不能直接访问Internet的用户访问Internet,因为允许一台权限较大的计算机直接连接网络更安全也更易于管理;二是让那些已经能够访问Internet的用户可以更快或更广泛地访问,因为代理服务器可以将访问较为频繁的网页缓存到本地,当有人再次访问同一页面时,代理可以直接发送本地页面而无需浪费网络带宽。当然也可以二者兼而有之。
  
  我们以应用最广泛的Squid为例,讨论 Linux下的代理服务器。这里所指的仅仅是服务器端应用,不包括客户端配置。Squid的优点是功能强大、配置简单、文档丰富;缺点是目前支持的协议尚不够广泛,对超大型应用略感吃力,不过这些不足都在慢慢完善之中。对于初学者和普通的应用而言,Squid仍是最佳选择。
  
  在此,我们要配置一个只对内部网络提供代理服务的Proxy Server。它将用户分为高级用户和普通用户两种,对高级用户采用网卡物理地址识别的方法,普通用户则需要输入用户名和口令才能正常使用。高级用户没有访问时间和文件类型的限制,而普通用户只在上班时可以访问以及一些其它的限制。
  
  安装
  可以从Squid 站点www.squid-cache.org获取该软件的源代码安装包,包括gz和bz2两种压缩方式。也可以使用Linux的发行版,如Red Hat提供的RPM包。
  
  RPM方式安装很简单,命令如下:
  
  $ rpm -ivh Squid-2.x.STALBx.i386.rpm
  
  不过笔者认为,即便是系统中已经默认安装了Squid,也应当先删掉然后安装最新的源代码包。因为开源软件会不断修正问题、提供更新的功能,使用最新版本可以保证最高的性能及安全,而且源代码方式可以完全定制系统。不过 STABLE稳定版、DEVEL版通常是提供给开发人员测试程序的,假定下载了最新的稳定版squid-2.5.STABLE2.tar.gz,用以下命令解开压缩包:
  
  $ tar xvfz squid-2.5.STABLE.tar.gz
  
  用bz2方式压缩的包可能体积更小,相应的命令是:
  
  $ tar xvfj squid-2.5.STABLE.tar.bz2
  
  然后,进入相应目录对源代码进行配置和编译,命令如下:
  
  $ cd squid-2.5.STABLE2
  
  配置命令configure有很多选项,如果不清楚可先用“-help”查看。通常情况下,用到的选项有以下几个:
  
   –prefix=/web/squid
  #指定Squid的安装位置,如果只指定这一选项,那么该目录下会有bin、sbin、man、 conf等目录,而主要的配置文件此时在conf子目录中。为便于管理,最好用参数–sysconfdir=/etc把这个文件位置配置为/etc。
  –enable-storeio=ufs,null
  #使用的文件系统通常是默认的ufs,不过如果想要做一个不缓存任何文件的代理服务器,就需要加上null文件系统。
  –enable-arp-acl
  #这样可以在规则设置中直接通过客户端的MAC地址进行管理,防止客户使用IP欺骗。
  –enable-err-languages=”Simplify_Chinese”
   –enable-default-err-languages=”Simplify_Chinese”
  #上面两个选项告诉Squid编入并使用简体中文错误信息。
  –enable-linux-netfilter
  #允许使用Linux的透明代理功能。
   –enable-underscore
  #允许解析的URL中出现下划线,因为默认情况下Squid会认为带下划线的URL是非法的,并拒绝访问该地址。
  
  整个配置编译过程如下:
  
  ./configure –prefix=/var/squid
  –sysconfdir=/etc
  –enable-arp-acl
  –enable-linux-netfilter
  –enable-pthreads
  –enable-err-language=”Simplify_Chinese”
   –enable-storeio=ufs,null
   –enable-default-err-language=”Simplify_Chinese”
   –enable-auth=”basic”
  –enable-baisc-auth-helpers=”NCSA”
   –enable-underscore
  
  其中一些选项有特殊作用,将在下面介绍它们。
  
  最后执行make 和make install两条命令,将源代码编译为可执行文件,并拷贝到指定位置。
  
  基本配置
  安装完成后,接下来要对Squid的运行进行配置(不是前面安装时的配置)。所有项目都在squid.conf中完成。Squid自带的squid.conf包括非常详尽的说明,相当于一篇用户手册,对配置有任何疑问都可以参照解决。
  
  在这个例子中,代理服务器同时也是网关,内部网络接口 eth0的IP地址为192.168.0.1,外部网络接口eth1的IP地址为202.103.x.x。下面是一个基本的代理所需要配置选项:
  
  http_port 192.168.0.1:3128
  
  默认端口是3128,当然也可以是任何其它端口,只要不与其它服务发生冲突即可。为了安全起见,在前面加上IP地址,Squid就不会监听外部的网络接口。
  
  下面的配置选项是服务器管理者的电子邮件,当错误发生时,该地址会显示在错误页面上,便于用户联系:
  
  cache_mgr netsnake@963.net
  
  以下这些参数告诉Squid缓存的文件系统、位置和缓存策略:
  
  cache_dir ufs /var/squid
  cache_mem 32MB
  cache_swap_low 90
  cache_swap_high 95
  
  在这里,Squid会将/var/squid目录作为保存缓存数据的目录,每次处理的缓存大小是32兆字节,当缓存空间使用达到95%时,新的内容将取代旧的而不直接添加到目录中,直到空间又下降到90%才停止这一活动。如果不想Squid缓存任何文件,如某些存储空间有限的专有系统,可以使用null 文件系统(这样不需要那些缓存策略):
  
  cache_dir null /tmp
  
  下面的几个关于缓存的策略配置中,较主要的是第一行,即用户的访问记录,可以通过分析它来了解所有用户访问的详尽地址:
  
   cache_access_log /var/squid/access.log
  cache_log /var/squid/cache.log
  cache_store_log /var/squid/store.log
  
  下面这行配置是在较新版本中出现的参数,告诉Squid在错误页面中显示的服务器名称:
  
  visible_hostname No1.proxy
  
  以下配置告诉Squid如何处理用户,对每个请求的IP地址作为单独地址处理:
  
   client_mask 255.255.255.255
  
  如果是普通代理服务器,以上的配置已经足够。但是很多Squid都被用来做透明代理。所谓透明代理,就是客户端不知道有代理服务器的存在,当然也不需要进行任何与代理有关的设置,从而大大方便了系统管理员。相关的选项有以下几个:
  
  httpd_accel_host virtual
  httpd_accel_port 80
   httpd_accel_with_proxy on
  httpd_accel_user_host_header on
  
  在Linux上,可以用iptables/ipchains直接将对Web端口80的请求直接转发到Squid端口3128,由Squid接手,而用户浏览器仍然认为它访问的是对方的80端口。例如以下这条命令:
  
  iptables -t nat -A PREROUTING -s 192.168.0.200/32 -p tcp –dport 80 -j REDIRECT 3128
  
  就是将 192.168.0.200的所有针对80端口的访问重定向到3128端口。
  
  所有设置完成后,关键且重要的任务是访问控制。 Squid支持的管理方式很多,使用起来也非常简单(这也是有人宁愿使用不做任何缓存的Squid,也不愿意单独使用iptables的原因)。 Squid可以通过IP地址、主机名、MAC地址、用户/密码认证等识别用户,也可以通过域名、域后缀、文件类型、IP地址、端口、URL匹配等控制用户的访问,还可以使用时间区间对用户进行管理,所以访问控制是Squid配置中的重点。Squid用ACL(Access Control List,访问控制列表)对访问类型进行划分,用http_access deny 或allow进行控制。根据需求首先定义两组用户advance和normal,还有代表所有未指明的用户组all及不允许上网的baduser,配置代码如下:
  
  acl advance 192.168.0.2-192.168.0.10/32
  acl normal src 192.168.0.11-192.168.0.200/32
  acl baduser src 192.168.0.100/32
  acl baddst dst www.somebadsite.com
  acl all src 0.0.0.0/0
  
  http_access deny baduser
  http_access allow advance
   http_access allow normal
  
  可以看出,ACL的基本格式如下:
  
  acl 列表名称 控制方式 控制目标
  
  比如acl all src 0.0.0.0/0,其名称是all,控制方式是src源IP地址,控制目标是0.0.0.0/0的IP地址,即所有未定义的用户。出于安全考虑,总是在最后禁止这个列表。
  
  下面这个列表代表高级用户,包括IP地址从192.168.0.2到192.168.0.10的所有计算机:
  
  acl advance 192.168.0.2-192.168.0.20/32
  
  下面这个baduser列表只包含一台计算机,其IP地址是192.168.0.100:
  
  acl baduser 192.168.0.100/32
  
  ACL写完后,接下来要对它们分别进行管理,代码如下:
  
  http_access deny baduser
  http_access allow advance
  http_access allow normal
  
  上面几行代码告诉Squid不允许baduser组访问Internet,但advance、normal组允许(此时还没有指定详细的权限)。由于Squid是按照顺序读取规则,会首先禁止baduser,然后允许normal。如果将两条规则顺序颠倒,由于baduser在normal范围中,Squid先允许了所有的normal,那么再禁止baduser就不会起作用。
  
  特别要注意的是,Squid将使用allow-deny- allow-deny……这样的顺序套用规则。例如,当一个用户访问代理服务器时,Squid会顺序测试Squid中定义的所有规则列表,当所有规则都不匹配时,Squid会使用与最后一条相反的规则。就像上面这个例子,假设有一个用户的IP地址是192.168.0.201,他试图通过这台代理服务器访问Internet,会发生什么情况呢?我们会发现,他能够正常访问,因为Squid找遍所有访问列表也没有和192.168.0.201有关的定义,便开始应用规则,而最后一条是deny,那么Squid默认的下一条处理规则是allow,所以192.168.0.201反而能够访问Internet 了,这显然不是我们希望的。所以在所有squid.conf中,最后一条规则永远是http_access deny all,而all就是前面定义的“src 0.0.0.0”。
  
  高级控制
  前面说过,Squid的控制功能非常强大,只要理解Squid的行为方式,基本上就能够满足所有的控制要求。下面就一步一步来了解Squid是如何进行控制管理的。
  
  通过IP地址来识别用户很不可靠,比IP地址更好的是网卡的MAC物理地址。要在Squid中使用MAC地址识别,必须在编译时加上 “–enable-arp-acl”选项,然后可以通过以下的语句来识别用户:
  
  acl advance arp 00:01:02:1f:2c:3e 00:01:02:3c:1a:8b …
  
  它直接使用用户的MAC地址,而MAC地址一般是不易修改的,即使有普通用户将自己的IP地址改为高级用户也无法通过,所以这种方式比IP地址可靠得多。
  
  假如不想让用户访问某个网站应该怎么做呢?可以分为两种情况:一种是不允许访问某个站点的某个主机,比如sinapage的主机是 sinapage4.sina.com.cn,而其它的新浪资源却是允许访问的,那么ACL可以这样写:
  
  acl  sinapage dstdomain sinapage4.sina.com.cn
  … …
  http_access deny sinapage
  … …
  
  由此可以看到,除了sinapage4,其它如 www.sina.com.cn、news.sina.com.cn都可以正常访问。
  
  另一种情况是整个网站都不许访问,那么只需要写出这个网站共有的域名即可,配置如下:
  
  acl qq dstdomain .tencent.com.cn
  
  注意tencent前面的“.”,正是它指出以此域名结尾的所有主机都不可访问,否则就只有tencent.com.cn这一台主机不能访问。
  
  如果想禁止对某个IP地址的访问,如202.108.0.182,可以用dst来控制,代码如下:
  
  acl badaddr dst 202.108.0.182
  
  当然,这个dst也可以是域名,由Squid查询DNS服务器将其转换为 IP。
  
  还有一种比较广泛的控制是文件类型。如果不希望普通用户通过代理服务器下载MP3、AVI等文件,完全可以对他们进行限制,代码如下:
  
  acl mmxfile urlpath_regex \.mp3$ \.avi$ \.exe$
   http_access deny mmxfile
  
  看到regex,很多读者应该心领神会,因为这条语句使用了标准的规则表达式(又叫正则表达式)。它将匹配所有以.mp3、.avi等结尾的URL请求,还可以用-i参数忽略大小写,例如以下代码:
  
  acl mmxfile urlpath_regex -i \.mp3$
  
  这样,无论是.mp3还是.MP3都会被拒绝。当然,-i参数适用于任何可能需要区分大小写的地方,如前面的域名控制。
  
  如果想让普通用户只在上班时间可以上网,而且是每周的工作日,用 Squid应当如何处理呢?看看下面的ACL定义:
  
  acl worktime time MTWHF 8:30-12:00 14:00-18:00
  http_access deny !worktime
  
  首先定义允许上网的时间是每周工作日(星期一至星期五)的上午和下午的固定时段,然后用http_access 定义所有不在这个时间段内的请求都是不允许的。
  
  或者为了保证高级用户的带宽,希望每个用户的并发连接不能太多,以免影响他人,也可以通过Squid控制,代码如下:
  
  acl conncount maxconn 3
  http_access deny conncount normal
   http_access allow normal
  
  这样,普通用户在某个固定时刻只能同时发起三个连接,从第四个开始,连接将被拒绝。
  
  总之,Squid的ACL配置非常灵活、强大,更多的控制方式可以参考squid.conf.default。
  
  认证
  用户/密码认证为Squid管理提供了更多便利,最常用的认证方式是NCSA。从Squid 2.5版本开始,NCSA认证包含在了basic中,而非以前单独的认证模块。下面来看看实现认证的具体操作。
  
  首先在编译时配置选项应包括以下配置:
  
  –enable-auth=”basic” –enable-basic-auth-helpers=”NCSA”
  
  “make install”以后,需要将“helpers/basic_auth/NCSA/ncsa_auth”拷贝到用户可执行目录中,如/usr/bin(如果在该目录中找不到这个执行文件,在编译时请使用make all而不是make,或者直接在该目录中执行make),然后需要借助Apache的密码管理程序htpasswd来生成用户名/密码对应的文件,就像下面这行代码:
  
  htpasswd -c /var/squid/etc/password guest
  
  在输入两遍guest用户的密码后,一个guest用户就生成了。如果以后需要添加用户,把上面的命令去掉-c参数再运行即可。
  
   Squid 2.5在认证处理上有了较大的改变,这里就只讨论2.5版本的处理方法,2.4及以下版本请参考squid.conf.default。在2.5版的 squid.conf中,包括以下几个相关选项:
  
  #该选项指出了认证方式(basic)、需要的程序(ncsa_auth)和
  对应的密码文件(password)
  auth_param basic program /usr/bin/ncsa_auth /var/squid/etc/password
  # 指定认证程序的进程数
  auth_param basic children 5
  # 浏览器显示输入用户/密码对话框时的领域内容
  auth_param basic realm My Proxy Caching Domain
  # 基本的认证有效时间
  auth_param basic credentialsttl 2 hours
  # 普通用户需要通过认证才能访问Internet
  acl normal proxy_auth REQUIRED
  http_access allow normal
  
  通过以上的配置即可完成认证工作。有的读者可能要问:认证只针对普通用户,而高级用户是直接上网的,该怎么处理呢?其实,这两种用户是可以共存的。如前所述,Squid是顺序处理http_access的,所以在 http_access处理过程中,如果先处理normal用户,那么当前用户无论是否属于高级用户,都会被要求进行认证;相反如果先处理高级用户,剩下的就只有需要认证的普通用户了。例如以下配置代码:
  …
  http_access allow normal (需要认证)
  http_access allow advance (不需要认证)
  …
  
  不管是否为noauth用户,都要求进行用户名/密码验证。正确的方法是将二者位置交换,代码如下:
  …
  http_access allow advance
  http_access allow normal
  …
  
  这时,高级用户不会受到任何影响。
  
  总结
  下面把整个squid.conf总结一下:
  
  # 服务器配置
  http_port 192.168.0.1:3128
  cache_mgr netsnake@963.net
  cache_dir null /tmp
  cache_access_log /var/squid/access.log
  cache_log /var/squid/cache.log
  cache_store_log /var/squid/store.log
   visible_hostname No1.proxy
  client_mask 255.255.255.255
   httpd_accel_host virtual
  httpd_accel_port 80
   httpd_accel_with_proxy on
  httpd_accel_user_host_header on
  
  # 用户分类
  acl advance arp 00:01:02:1f:2c:3e 00:01:02:3c:1a:8b …
  acl normal proxy_auth REQUIED
  acl all src 0.0.0.0
  
  # 行为分类
  acl mmxfile urlpath_regex \.mp3$ \.avi$ \.exe$
  acl conncount maxconn 3
  acl worktime time MTWHF 8:30-12:00 14:00-18:00
  acl sinapage dstdomain sinapage4.sina.com.cn
  acl qq dstdomain .tencent.com.cn
  
  # 处理
  http_access allow advance
   http_access deny conncount normal
  http_access deny !worktime
   http_access deny mmxfile
  http_access deny sinapage
  http_access deny qq
  http_access allow normal
  
  配置后的状况是,advance组可以不受任何限制地访问Internet,而normal组则只能在工作时间上网,而且不能下载多媒体文件,不能访问某些特定的站点,而且发送请求不能超过3个。
  
  通过本文的介绍,它可以了解Squid的基本能力。当然,它的能力远不止此,可以建立强大的代理服务器阵列,可以帮助本地的Web服务器提高性能,可以提高本地网络的安全性等。要想发挥它的功效,还需要进一步控制。

2003应用程序错误事件487、3299

最近学校的BBS每两天当一次,刚开始没注意,最近频繁了,仔细查看了下日志,今天早上出现了两个错误,一个是Zend Optimizer的487错误,一个是Apache的3299错误。

事件 ID ( 487 )的描述(在资源( Zend Optimizer )中)无法找到。本地计算机可能没有必要的注册信息或消息 DLL 文件来从远程计算机显示消息。您可能可以使用 /AUXSOURCE= 标识来检索词描述;查看帮助和支持以了解详细信息。下列信息是事件的一部分: Unable to view file mapping, 试图访问无效的地址。

在网上搜了搜,估计是目录的权限问题,于是做了以下操作,修改了C:\Windows\Temp的权限,允许Network Service进行读取和运行的权限;另外修改了php.ini,php.ini文件中设置upload_tmp_dir = "C:\Windows\Temp\",原来这个upload_tmp_dir 是没有设置的,查看了一下php.ini,居然很多东西没有配置,估计是前任的师兄用的是phpStudy配套PHP配置环境,所以安装后都没进行什么配置,出问题也是难怪的。

The Apache service named reported the following error:
>>> httpd.exe: Could not reliably determine the server’s fully qualified domain name, using 202.115.144.85 for ServerName .

有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。

这个是Apache错误3299的错误提示,这个错误在昨天给LINUX远程安装Apache的时候也遇到过,就是server name没有设置。于是打开httpd.conf设置 ServerName 202.115.144.81:80,这下问题应该解决了。另外查看了一下这个配置文件,发现还是一些地方没设置好,修改了监听端口为
Listen 202.115.144.81:80
Listen 80

清除日志,不过不敢重新启动服务器,因为白天是论坛的高峰期,不敢随便这么做,等晚上人少了再说吧。
等待看是否还有错误。

解决两张网卡同时访问内外网问题

route 命令

Route
在本地 IP 路由表中显示和修改条目。使用不带参数的 route 可以显示帮助。

语法
route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric]] [if Interface]]

参数
-f
清除所有不是主路由(网掩码为 255.255.255.255 的路由)、环回网络路由(目标为 127.0.0.0,网掩码为 255.255.255.0 的路由)或多播路由(目标为 224.0.0.0,网掩码为 240.0.0.0 的路由)的条目的路由表。如果它与命令之一(例如 add、change 或 delete)结合使用,表会在运行命令之前清除。

-p
与 add 命令共同使用时,指定路由被添加到注册表并在启动 TCP/IP 协议的时候初始化 IP 路由表。默认情况下,启动 TCP/IP 协议时不会保存添加的路由。与 print 命令一起使用时,则显示永久路由列表。所有其它的命令都忽略此参数。永久路由存储在注册表中的位置是 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes。

Command
下表列出了有效的命令。
add 添加路由
change 更改现存路由
delete 删除路由
print 打印路由

Destination
指定路由的网络目标地址。目标地址可以是一个 IP 网络地址(其中网络地址的主机地址位设置为 0),对于主机路由是 IP 地址,对于默认路由是 0.0.0.0。

mask subnetmask
指定与网络目标地址相关联的网掩码(又称之为子网掩码)。子网掩码对于 IP 网络地址可以是一适当的子网掩码,对于主机路由是 255.255.255.255 ,对于默认路由是 0.0.0.0。如果忽略,则使用子网掩码 255.255.255.255。定义路由时由于目标地址和子网掩码之间的关系,目标地址不能比它对应的子网掩码更为详细。换句话说,如果子网掩码的一位是 0,则目标地址中的对应位就不能设置为 1。

Gateway
指定超过由网络目标和子网掩码定义的可达到的地址集的前一个或下一个跃点 IP 地址。对于本地连接的子网路由,网关地址是分配给连接子网接口的 IP 地址。对于要经过一个或多个路由器才可用到的远程路由,网关地址是一个分配给相邻路由器的、可直接达到的 IP 地址。

metric Metric
为路由指定所需跃点数的整数值(范围是 1 ~ 9999),它用来在路由表里的多个路由中选择与转发包中的目标地址最为匹配的路由。所选的路由具有最少的跃点数。跃点数能够反映跃点的数量、路径的速度、路径可靠性、路径吞吐量以及管理属性。

if Interface
指定目标可以到达的接口的接口索引。使用 route print 命令可以显示接口及其对应接口索引的列表。
对于接口索引可以使用十进制或十六进制的值。对于十六进制值,要在十六进制数的前面加上 0x。忽略if 参数时,接口由网关地址确定。

/?
在命令提示符显示帮助。

注释

路由表中跃点数一列的值较大是由于允许 TCP/IP 根据每个 LAN 接口的 IP 地址、子网掩码和默认网关的配置自动确定路由表中路由的跃点数造成的。默认启动的自动确定接口跃点数确定了每个接口的速度,调整了每个接口的路由跃点数,因此最快接口所创建的路由具有最低的跃点数。要删除大跃点数,请在每个 LAN 连接的 TCP/IP 协议的高级属性中禁用自动确定接口跃点数。

如果在 systemroot\System32\Drivers\Etc 文件夹的本地网络文件中存在适当的条目,名称可以用于Destination。只要名称可以通过“域名系统” (DNS) 查询这样的标准主机名解析技术分解为 IP 地址,就可以将其用于 Gateway,DNS 查询使用存储在 systemroot\System32\Drivers\Etc 文件夹下的本地主机文件和 NetBIOS 名称解析。

如果是 print 或 delete 命令,可以忽略 Gateway 参数,使用通配符来表示目标和网关。Destination 的值可以是由星号 指定的通配符。如果指定目标含有一个星号 或问号 (?),它被看作是通配符,只打印或删除匹配的目标路由。星号代表任意一字符序列,问号代表任一字符。例如, 10.*.1, 192.168.*、 127.* 和 *224* 都是星号通配符的有效使用。

使用了无效的目标和子网掩码(网掩码)值的组合,会显示“Route:bad gateway address netmask”错误消息。目标中有一位或多位设置为 1,而其在子网掩码中的对应位设置为 0 时会发生这个错误。可以通过二进制表示法表示目标和子网掩码来检查这种情况。以二进制表示的子网掩码包括表示目标网络地址部分的一连串的 1 和表示目标主机地址部分的一连串的 0 两个部分。查看目标以确定目标的主机地址部分(由子网掩码所定义)是否有些位设置成了 1。

注:只有 Windows NT 4.0、Windows 2000、Windows Millennium Edition 和 Windows XP 的 route 命令支持 -p 参数。Windows 95 或 Windows 98 的 route 命令不支持该参数。

只有当网际协议 (TCP/IP) 协议在 网络连接中安装为网络适配器属性的组件时,该命令才可用。

范例

要显示 IP 路由表的完整内容,请键入:
route print

要显示 IP 路由表中以 10. 开始的路由,请键入:
route print 10.*

要添加默认网关地址为 192.168.12.1 的默认路由,请键入:
route add 0.0.0.0 mask 0.0.0.0 192.168.12.1

要添加目标为 10.41.0.0,子网掩码为 255.255.0.0,下一个跃点地址为 10.27.0.1 的路由,请键入:
route add 10.41.0.0 mask 255.255.0.0 10.27.0.1

要添加目标为 10.41.0.0,子网掩码为 255.255.0.0,下一个跃点地址为 10.27.0.1 的永久路由,请键
入:
route -p add 10.41.0.0 mask 255.255.0.0 10.27.0.1

要添加目标为 10.41.0.0,子网掩码为 255.255.0.0,下一个跃点地址为 10.27.0.1,跃点数为 7 的路
由,请键入:
route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 metric 7

要添加目标为 10.41.0.0,子网掩码为 255.255.0.0,下一个跃点地址为 10.27.0.1,接口索引为 0x3
的路由,请键入:
route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 if 0x3

要删除目标为 10.41.0.0,子网掩码为 255.255.0.0 的路由,请键入:
route delete 10.41.0.0 mask 255.255.0.0

要删除 IP 路由表中以 10. 开始的所有路由,请键入:
route delete 10.*

要将目标为 10.41.0.0,子网掩码为 255.255.0.0 的路由的下一个跃点地址由 10.27.0.1 更改为
10.27.0.25,请键入:
route change 10.41.0.0 mask 255.255.0.0 10.27.0.25

相关解决方案

1.

有两个ip地址,一个只能上内网, 一个可以上外网。

由于内网和外网必须在物理上隔离,所以不能用一块网卡同时访问内网和外网。
内网和外网分别有自己的网关。
操作步骤:
首先是要准备两块网卡,分别连接内网和外网。我使用的操作系统是winxp,安装好两块网卡的驱动后,分别使用这两个网卡建立网络连接1和2。其中连接1上外网,2上内网。首先配置连接1的tcp/ip属性,填可以上外网的ip地址和外网网关,外网网关跃点数不要自动,改成1。如有需要可填写dns服务器地址。这样配置好的连接1可以直接访问外网。再配置连接2的tcp/ip属性,只要添上ip地址,不要填内网网关。关于网络连接的具体配置步骤不再赘述。
两块网卡都配置完毕以后,建立一个批处理文件。内容如下:
route add xxx.xxx.xxx.xxx mask 255.255.255.255 zzz.zzz.zzz.zzz metric 1
这个文件是用来指定内网上需要访问的特定网址采用的网关。xxx代表需要访问的内网ip,zzz代表内网网关ip。建议对每个需要访问的内网网址都建立一条相同
格式的命令,如果采用route add xxx.0.0.0 mask 255.0.0.0 zzz.zzz.zzz.zzzmetric 1 的方式,实际使用中会有一些网址不能访问。建立批处理文件后,打开
网络连接2,运行批处理文件就可以访问内网上的这些网址。
 
几点说明:
1、在xp下可以安装多块网卡,但是每个网卡必须有单独的ip地址。不能共用同一个ip地址,可以为每个网卡建立一个网络连接且可以同时都打开。但是只有最先打开的那个网络连接可以使用,因为xp默认的只有一个网关。后面的网络连接都会使用最先打开的这个连接的网关,从而导致无法使用。所以在添加网关的时候只能添加连接1的网关,连接2的网关要单独用命令指定。
 
2、route命令在xp的命令提示符状态下可以使用。route /?可以查看详细参数。
使用格式:route add [参数] 需要访问的ip地址 mask 掩码 网关 [参数]
add 后面的参数有-p,-f,-p是永久添加,关机重启后会继续起作用,没有-p需要每次使用的时候都重新指定。但是在使用中发现添加-p指定的ip地址有时不能访问,所以采用每次都运行批处理的方式。-f是清除路由表里面的网关。
网关后面一般加参数meteic 1,意思是指定跃点数是1,保证指定的访问地址和网关匹配,加快访问速度。不加metric参数亦会导致部分内网网址不能访问。
route print命令可以列出网关详细内容。
route delete xxx.xxx.xxx.xxx可以删除一条配置。
 
3、在使用中,一般常开的是外网连接,内网连接只在需要的时候打开,保证访问外网的速度以及网络的安全。因为内网和外网必须从物理上隔断才能保证安
全。如果对网络安全要求很高就不要采用了。

2.
我也曾遇到过这个问题,解决了好长时间没有解决,最后咨询思科的工程师,协助解决。
主要原因是: 2个网卡的优先级一致,导致上内网的时候,到不了外网,而上外网的时候,就进不了内网,因为计算机无法识别同样的默认网关。在设置IP的时候系统就会提示2个网卡一起使用,会使计算机网络不能正常使用。

解决办法就是设置不同的默认网关级别。
外网设置: 打开TCP/IP协议,高级,编辑默认网关的跃点数为10,默认为自动,值为20,用ROUTE PRINT查到的;设置自动跃点数为10。
这样的设置是把外网的优先级提高。内网优先级就比较底了。
用ROUTE PRINT 命令来查看: 未设置以前的值是有两个默认网关0.0.0.0,
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.198.66 192.168.198.101 20
0.0.0.0 0.0.0.0 10.172.2.2 10.172.2.222 20
因为两个默认网关的METRIC 值都是20。
修改后的值是:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.198.66 192.168.198.101 10
0.0.0.0 0.0.0.0 10.172.2.2 10.172.2.222 20
METRIC值越高,他的优先级别越低,这样2个默认网关就不会冲突了。
修改完这个以后:
有些时候可能进内网还不正常,你可以手工设置内网的默认网关路由。
如: 要进10.168.8.X,的内网由10.172.2.2这个网关进,通过命令来设置:
route add -p 10.168.8.X mask 255.255.255.0 10.172.2.2
命令解释:
10.168.8.X为目标网段或目标IP,设为目标网段时,X值为0,
255.255.255.0,为网关10.172.2.2的子网。
10.172.2.2,为这个目标IP的默认路由。
MASK的关键字不能少,-P为系统重启后保存设置,不用重新更改或重新增加这条路由。
有关ROUTE ADD/PRINT的相关资料大家可以在网上查查,它的使用办法。
这样问题就可以得以解决。
当然也可以用其它的办法来更改默认网关的值:
1。如ROUTE DELELTE 0.0.0.0,把2个默认网关都删掉,再新增。新增时注意设置METRIC这个值不能一样。
2。用ROUTE CHANGE 来变更两个默认网关的的外网网关的METRIC值。。
不过这2个方法比较的繁锁,也不容易操作。
 

最终解决方案

通过询问同学来解决的。新建一个BAT批处理文件,内容如下

rem start of the file

@echo off
set edu=10.5.20.1
rem 校园网网关的IP地址
set ADSL=192.168.1.1
rem ADSL路由猫的IP地址
route -f
rem 清除所有路由
route add -p 0.0.0.0 mask 0.0.0.0 %ADSL% Metric 10
route add -p 0.0.0.0 mask 0.0.0.0 %edu% Metric 20
rem 添加ADSL和校园网网关并优先使用ADSL
rem 下边代码使访问教育网网站通过校园网
route add -p 10.0.0.0 mask 255.0.0.0 %edu% Metric 20
route add -p 202.115.0.0 mask 255.255.0.0 %edu% Metric 20
rem end of the file

将两张网卡同时启用,都是自动获取IP,其他什么也不要设置,否则画蛇添足。

运行该批处理文件就OK。