当前位置:文档之家› 干货:你在Tomcat使用方面是不是弱爆了

干货:你在Tomcat使用方面是不是弱爆了

干货:你在Tomcat使用方面是不是弱爆了
干货:你在Tomcat使用方面是不是弱爆了

认知迭代:你在Tomcat使用方面是不是弱爆了?

文/崔政

经常听到不少人说一句话:―tomcat性能差,不如去用weblogic,websphere,jboss‖,我想说,用什么东西得根据实际情况来吧,如果给一个小公司的外包开发一个普通的项目,给她用Oracle,Weblogic?在高速公路上,拖拉机是没奔驰快,但是到了乡下,奔驰可就不行喽。看完本文,您将对tomcat的使用有个新的认识。

一.影响性能的几个重要指标

在开始动手优化小猫的性能之前,我们务必要先了解几个概念。

1.1吞吐量

吞吐量是指在一次性能测试过程中网络上传输的数据量的总和。

对于交互式应用来说,吞吐量指标反映的是服务器承受的压力,在容量规划的测试中,吞吐量是一个重点关注的指标,因为它能够说明系统级别的负载能力。另外,在性能调优过程中,吞吐量指标也有重要的价值。

1.2吞吐率

单位时间内网络上传输的数据量,也可以指单位时间内处理客户请求数量。它是衡量网络性能的重要指标,通常情况下,吞吐率用―字节数/秒‖来衡量,当然,你可以用―请求数/秒‖和―页面数/秒‖来衡量。其实,不管是一个请求还是一个页面,它的本质都是在网络上传输的数据,那么来表示数据的单位就是字节数。

1.3事物

用户某一步或几步操作的集合。不过,我们要保证它有一个完整意义。比如用户对某一个页面的一次请求,用户对某系统的一次登录,

淘宝用户对商品的一次确认支付过程,这些我们都可以看作一个事

务。那么如何衡量服务器对事务的处理能力,又引出一个概念——

TPS。

1.4 TPS

每秒钟系统能够处理事务或交易的数量。

1.5点击率

点击率可以看做是TPS的一种特定情况,点击率更能体现用户端对服务器的压力,TPS更能体现服务器对客户请求的处理能力。

每秒钟用户向web服务器提交的HTTP请求数,这个指标是web 应用特有的一个指标;web应用是―请求-响应‖模式,用户发一个申请,服务器就要处理一次,所以点击是web应用能够处理的交易的最小单位。如果把每次点击定义为一个交易,点击率和TPS就是一个概念。容易看出,点击率越大,对服务器的压力也越大,点击率只是一个性能参考指标,重要的是分析点击时产生的影响。

需要注意的是,这里的点击不是指鼠标的一次―单击‖操作,因为一次―单击‖操作中,客户端可能向服务器发现多个HTTP请求。

1.6平均响应时间

也称为系统响应时间,它一般指在指定数量的VU情况下,每笔交易从mouse 的click到IE的数据刷新与展示之间的间隔,比如说:250个VU下每笔交易的响应时间不超过2秒。

二.我们要优化tomcat的目标

对以上几个性能方面的重要概念有了大致的了解后,我们要清楚优化tomcat的目标,我认为大体可以概括为2个目标:

1)承受更大并发用户数

2)性能方面取得大幅改善(系统平均性能提升至少20倍,甚至60倍)

三. 从多方面来优化tomcat的性能

Tomcat的优化分为两块: JVM的优化,容器自身参数的优化。

3.1 JVM的优化

3.1.1 32位操作系统和64位中JVM的比较

32位系统下JVM对内存的限制:不能突破2GB内存,即使在

Win2003 Advanced Server下你的机器装有8GB-16GB的内存,而你的JAVA,只能用到2GB的内存,而在64位操作系统上无论是系统内存还是JVM都没有受到2GB这样的限制。

3.1.2 tomcat启动行参数的优化

Tomcat首先跑在JVM之上的,因为它的启动其实也只是一个java命令行,首先我们需要对这个JAVA的启动命令行进行调优,本文是基于jdk 1.6环境。

Tomcat 的启动参数位于tomcat的安装目录\bin目录下,如果你是Linux操作系统就是catalina.sh文件,如果你是Windows操作系统那么你需要改动的就是catalina.bat文件。本文以linux环境为例来讲解,打开该文件,一般该文件头部是一堆的由##包裹着的注释文字,找到注释文字的最后一段。

敲入一个回车,加入如下的参数

export JAVA_OPTS="-server -Xms1400M -Xmx1400M -Xss512k

-XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:PermSize=128M -XX:MaxPermSize=256M -XX:+DisableExplicitGC -

XX:MaxTenuringThreshold=31

-XX:+UseConcMarkSweepGC -XX:+UseParNewGC -

XX:+CMSParallelRemarkEnabled -

XX:+UseCMSCompactAtFullCollection -

XX:LargePageSizeInBytes=128m

-XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true "

参数解释:

-server

只要tomcat是运行在生产环境中的,这个参数必须加上。

tomcat默认是以一种叫java –client的模式来运行的,server即意味着你的tomcat是以真实的production的模式在运行的,这也就意味着你的tomcat以server模式运行时将拥有:更大、更高的并发处理能力,

更快更强捷的JVM垃圾回收机制,可以获得更多的负载与吞吐量。 -Xms–Xmx

即JVM内存设置了,把Xms与Xmx两个值设成一样是最优的做法,有人说Xms为最小值,Xmx为最大值不是挺好的,这样设置还比较人性化,科学化。事实是如此吗?

大家想一下这样的场景:

一个系统随着并发数越来越高,它的内存使用情况逐步上升,上升到最高点不能上升了,开始回落,你们不要认为这个回落就是好事情,由其是大起大落,在内存回落时它付出的代价是CPU高速开始运转进行垃圾回收,此时严重的甚至会造成你的系统出现―卡壳‖就是你在好好的操作,突然网页像死在那边一样几秒甚至十几秒时间,因为JVM正在进行垃圾回收。

因此一开始我们就把这两个设成一样,使得Tomcat在启动时就为最大化参数充分利用系统的效率,这个道理和jdbc pool里的minpool size与maxpool size的需要设成一个数量是一样的原理。

如何知道我的JVM能够使用最大值啊呢?

在设这个最大内存即Xmx值时请先打开一个命令行,键入如下的命令:

如果是在32位系统下,我们试试2G内存行不行:

试试1700m

连1700m都不可以,更不要说2048m了,2048m只是一个理论数

值。这个跟机器也有关,有的能到1700m

–Xmn

设置年轻代大小为512m。整个堆大小=年轻代大小+ 年老代大小+ 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个

堆的3/8

-Xss

是指设定每个线程的堆栈大小。这个就要依据你的程序,看一个线程大约需要占用多少内存,可能会有多少线程同时运行等。一般不易设

置超过1M,要不然容易出现out ofmemory

-XX:+AggressiveOpts

启用这个参数,则每当JDK版本升级时,你的JVM都会使用最新加

入的优化技术(如果有的话)。

-XX:+UseBiasedLocking

启用一个优化了的线程锁,在我们的appServer,每个http请求就是一个线程,有的请求短有的请求长,就会有请求排队的现象,甚至还

会出现线程阻塞,这个优化了的线程锁使得你的appServer内对线程

处理自动进行最优调配。

-XX:PermSize=128M-XX:MaxPermSize=256M

JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的

1/64;

在数据量的很大的文件导出时,一定要把这两个值设置上,否则会出现内存溢出的错误。

由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的

1/4。

那么,如果是物理内存4GB,那么64分之一就是64MB,这就是PermSize默认值,也就是永生代内存初始大小;

四分之一是1024MB,这就是MaxPermSize默认大小。

-XX:+DisableExplicitGC

在程序代码中不允许有显示的调用‖System.gc()‖。看到过有两个极品工程中每次在DAO操作结束时手动调用System.gc()一下,觉得这样做好像能够解决它们的out ofmemory问题一样,付出的代价就是系

统响应时间严重降低。

-XX:+UseParNewGC

对年轻代采用多线程并行回收,这样收得快。

-XX:+UseConcMarkSweepGC

即CMS gc,这一特性只有jdk1.5即后续版本才具有的功能,它使用的是gc估算触发和heap占用触发。

我们知道频频繁的GC会造面JVM的大起大落从而影响到系统的效率,因此使用了CMS GC后可以在GC次数增多的情况下,每次GC 的响应时间却很短,比如说使用了CMS GC后经过jprofiler的观察,

GC被触发次数非常多,而每次GC耗时仅为几毫秒。

-XX:MaxTenuringThreshold

设置垃圾最大年龄。如果设置为0的话,则年轻代对象不经过

Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概率。

这个值的设置是根据本地的jprofiler监控后得到的一个理想的值,不

能一概而论原搬照抄。

-XX:+CMSParallelRemarkEnabled

在使用UseParNewGC 的情况下, 尽量减少mark 的时间

-XX:+UseCMSCompactAtFullCollection

在使用concurrent gc 的情况下, 防止memoryfragmention, 对live object

进行整理, 使memory 碎片减少。

-XX:LargePageSizeInBytes

指定Java heap的分页页面大小。

-XX:+UseFastAccessorMethods

get,set 方法转成本地代码

-XX:+UseCMSInitiatingOccupancyOnly

指示只有在oldgeneration 在使用了初始化的比例后concurrent

collector 启动收集

-XX:CMSInitiatingOccupancyFraction=70 CMSInitiatingOccupancyFraction,这个参数设置有很大技巧,基本上满足(Xmx-Xmn)*(100- CMSInitiatingOccupancyFraction)/100>=Xmn就不会出现promotion failed。在我的应用中Xmx是6000,Xmn是512,那么Xmx-Xmn是5488兆,也就是年老代有5488 兆,CMSInitiatingOccupancyFraction=90说明年老代到90%满的时候开始执行对年老代的并发垃圾回收(CMS),这时还剩10%的空间是5488*10%=548兆,所以即使Xmn(也就是年轻代共512兆)里所有

对象都搬到年老代里,548兆的空间也足够了,所以只要满足上面的公式,就不会出现垃圾回收时的promotion failed;

因此这个参数的设置必须与Xmn关联在一起。

-Djava.awt.headless=true

这个参数一般我们都是放在最后使用的,这全参数的作用是这样的,有时我们会在我们的J2EE工程中使用一些图表工具如:jfreechart,用于在web网页输出GIF/JPG等流,在winodws环境下,一般我们的app server在输出图形时不会碰到什么问题,但是在linux/unix环境下经常会碰到一个exception导致你在winodws开发环境下图片显示的好好可是在linux/unix下却显示不出来,因此加上这个参数以免避这样的情况出现。

上述这样的配置,基本上可以达到:

1.系统响应增快

2. JVM回收速度增快同时又不影响系统的响应率

3. JVM内存最大化利用

4. 线程阻塞情况最小化

3.2 Tomcat容器内的优化

前面我们对Tomcat启动时的命令进行了优化,增加了系统的JVM可使用数、垃圾回收效率与线程阻塞情况、增加了系统响应效率等还有一个很重要的指标,我们没有去做优化,就是吞吐量。

打开tomcat安装目录\conf\server.xml文件,定位到这一行:

这一行就是我们的tomcat容器性能参数设置的地方,它一般都会有一个默认值,这些默认值是远远不够我们的使用的,我们来看经过更

改后的这一段的配置:

又是一大坨。。。

解释一下:

URIEncoding=‖UTF-8‖

使得tomcat可以解析含有中文名的文件的url,真方便,不像apache

里还有搞个mod_encoding,还要手工编译。

maxSpareThreads

maxSpareThreads 的意思就是如果空闲状态的线程数多于设置的数

目,则将这些线程中止,减少这个池中的线程总数。minSpareThreads

最小备用线程数,tomcat启动时的初始化的线程数。enableLookups

这个功效和Apache中的HostnameLookups一样,设为关闭。connectionTimeout

connectionTimeout为网络连接超时时间毫秒数。

maxThreads

maxThreads Tomcat使用线程来处理接收的每个请求。这个值表示

Tomcat可创建的最大的线程数,即最大并发数。

acceptCount

acceptCount是当线程数达到maxThreads后,后续请求会被放入一个等待队列,这个acceptCount是这个队列的大小,如果这个队列也满了,就直接refuse connection。

maxProcessors与minProcessors

在Java中线程是程序运行时的路径,是在一个程序中与其它控制线程无关的、能够独立运行的代码段。它们共享相同的地址空间。多线

程帮助程序员写出CPU最大利用率的高效程序,使空闲时间保持最

低,从而接受更多的请求。

通常Windows是1000个左右,Linux是2000个左右。useURIValidationHack

对于这个参数,我们要看一下tomcat的一段源码再说。

security

if (connector.getUseURIValidationHack()) {

String uri = validate(request.getRequestURI());

if (uri == null) {

res.setStatus(400);

res.setMessage("Invalid URI");

throw new IOException("Invalid URI");

} else {

req.requestURI().setString(uri);

// Redoing the URI decoding

req.decodedURI().duplicate(req.requestURI());

req.getURLDecoder().convert(req.decodedURI(), true);

}

}

可以看到如果把useURIValidationHack设成"false",可以减少它对一

些url的不必要的检查从而减省开销。

enableLookups="false"

为了消除DNS查询对性能的影响我们可以关闭DNS查询disableUploadTimeout

类似于Apache中的keeyalive一样

compression="on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/pl ain"

给Tomcat配置gzip压缩(HTTP压缩)功能。

HTTP 压缩可以大大提高浏览网站的速度,它的原理是,在客户端请求网页后,从服务器端将网页文件压缩,再下载到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的浏览过程

HTML,CSS,Javascript , Text ,它可以节省40%左右的流量。更为重要的是,它可以对动态生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等输出的网页也能进行压缩,压缩效率惊人。

1)compression="on"打开压缩功能

2)compressionMinSize="2048"启用压缩的输出内容大小,这里面默认为2KB

3)noCompressionUserAgents="gozilla, traviata"对于以下的浏览器,不启用压缩

4)compressableMimeType="text/html,text/xml"压缩类型

最后不要忘了把8443端口的地方也加上同样的配置,如果我们走https协议的话,我们将会用到8443端口这个段的配置,参数跟以上一样,这里就不再写出来了。

好了,我们的tomcat优化到这里就完成了,相信这样做下来,优化过的tomcat要比未经过优化的,性能提高20~60倍,有兴趣的童鞋可以照着做一下,顺便用LR或者ab测一下效果。

四小猫飞起来了吗

为了简便,这里用轻量级测试工具Jmeter模拟150000个线程请求,试一下。

优化之前

优化之后

真变成飞猫了!

在生产环境可以结合apache也做次优化,如果再使用了负载均衡,那么系统的整体性能就更高了。

之前使用tomcat方面是不是弱爆了?

Tomcat配置连接池常见错误及解决 - 天涯浪子 - CSDNBlog

Tomcat配置连接池常见错误及解决- 天涯浪子- CSDNBlog Tomcat配置连接池常见错误及解决收藏 1 、Cannot create JDBC driver of class '' for connect URL '' 问题:找不到jdbc 驱动,但是提示信息里的class 值为null ,所以,可以断定Tomcat 没有找到Server.xml 里的Resource 配置信息。可能的原因包括: (1 )没有配置Resource ; (2 )Resource 配置信息放置的位置错误。 (3 )一个不容易发现的错误,driverClassName 和url 拼写错误。 解决办法:确认Resource 配置正确,并且必须放在DefaultContext 或者Context 配置节内。 2 、Cannot create JDBC driver of class 'xxx' for connect URL '' 解决办法:配置的数据库驱动类名xxx 是错误的,检查并修改即可;如果确认正确,那就是找不到驱动库,拷贝一个jar 到Tomcat/common/lib 中即可。 3 、Cannot create JDBC driver of class '' for connect URL 'xxx'

解决办法:配置的url 字符串语法是错误的,检查后修改即可。 4 、Cannot create PoolableConnectionFactory, cause: Io 异常: Connection refused 问题:无法创建连接池工厂对象,原因是连接被拒绝。 解决办法:检查url 字符串,可能服务器地址、端口、数据库名或者数据库实例名等信息错误。修改。 5 、No suitable driver 没有匹配的驱动 分析:驱动程序配置错误,请确认Tomcat 的common/lib 子目录中是否有数据库驱动jar 。 6 、Cannot create resource instance 无法创建数据源实例 问题:找不到commons-dbcp-1.1.jar (版本可能不同) 解决办法:复制commons-dbcp-1.1.jar 库文件到 Tomcat/Common/lib 子目录中。 7 、root cause : https://www.doczj.com/doc/b117488488.html,ng.NoClassDefFoundError: org/apache/commons/collections/CursorableLinkedList 问题:找不到commons-collections.jar 。

端口被占用如何解决

端口被占用如何解决 经常,我们在启动应用的时候发现系统需要的端口被占用,如何知道谁占有了该端口,很多人都比较头疼,下面就介绍一种非常简单的方法,希望对大家有用 假如我们需要确定谁占用了我们的8080端口 1.可通过cmd ----》netstat -ano 指令查看所有的端口占用情况 C:\Users\Administrator>netstat -ano 活动连接 协议本地地址外部地址状态PID TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 472 TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4 TCP 0.0.0.0:801 0.0.0.0:0 LISTENING 9524 TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING 2416 TCP 0.0.0.0:5001 0.0.0.0:0 LISTENING 9524 TCP 0.0.0.0:7879 0.0.0.0:0 LISTENING 4860 TCP 0.0.0.0:8009 0.0.0.0:0 LISTENING 9524 TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 9524 TCP 0.0.0.0:49152 0.0.0.0:0 LISTENING 536 TCP 0.0.0.0:49153 0.0.0.0:0 LISTENING 1052 TCP 0.0.0.0:49157 0.0.0.0:0 LISTENING 616 TCP 0.0.0.0:49160 0.0.0.0:0 LISTENING 1116 TCP 0.0.0.0:49172 0.0.0.0:0 LISTENING 600 TCP 0.0.0.0:49202 0.0.0.0:0 LISTENING 2100 TCP 3.3.10.190:139 0.0.0.0:0 LISTENING 4 TCP 3.3.10.190:51248 10.1.1.3:9090 ESTABLISHED 4860 TCP 3.3.10.190:52308 10.10.34.22:80 ESTABLISHED 1280 TCP 127.0.0.1:4300 0.0.0.0:0 LISTENING 7060 TCP 127.0.0.1:4301 0.0.0.0:0 LISTENING 7060 TCP 127.0.0.1:8005 0.0.0.0:0 LISTENING 9524 TCP 127.0.0.1:8411 0.0.0.0:0 LISTENING 952 TCP 127.0.0.1:20001 0.0.0.0:0 LISTENING 2620 TCP 127.0.0.1:27382 0.0.0.0:0 LISTENING 3116 TCP 127.0.0.1:49220 127.0.0.1:62522 ESTABLISHED 4328 TCP 127.0.0.1:49392 127.0.0.1:49393 ESTABLISHED 4860 TCP 127.0.0.1:49393 127.0.0.1:49392 ESTABLISHED 4860 TCP 127.0.0.1:50176 127.0.0.1:50177 ESTABLISHED 4860 TCP 127.0.0.1:50177 127.0.0.1:50176 ESTABLISHED 4860 TCP 127.0.0.1:50183 127.0.0.1:50184 ESTABLISHED 6512 TCP 127.0.0.1:50184 127.0.0.1:50183 ESTABLISHED 6512 TCP 127.0.0.1:50437 127.0.0.1:50438 ESTABLISHED 4860

linux下tomcat的配置及项目的部署流程

Java的安装配置 1.在/etc/profile文件中配置相应的信息(如下) export JAVA_HOME=/usr/java/jdk1.6.0_20 export JRE_HOME=/usr/java/jdk1.6.0_20/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$PATH 2.是配置文件生效命令:Source/etc/profile 3.输入javac–version查看配置是否成功 TOMCAT安装配置 1.修改tomcat/bin文件夹下的catalina.sh文件,增加如下的内容: export JAVA_HOME=/usr/java/jdk1.5.0_08 export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin export CATALINA_HOME=/usr/local/tomcat (红色可选部分) usr/local/tomcat/bin/catalina.sh start 在/etc/rc.d/rc.local中加入: /usr/local/tomcat/bin/startup.sh(实现自动启动) 2.修改tomcat/conf文件夹下的tomcat-users.xml文件,添加相应的用户角色(manager)及用户信息(用户名及密码),具体的添加详见文件中的模板:

Tomcat(免安装版)的安装与配置

Tomcat(免安装版)的安装与配置 一、下载Tomcat Tomcat可以从https://www.doczj.com/doc/b117488488.html,/网站下载,选择任意版本,在 Binary Distributions 下的zip包既是。 二、配置Tomcat 1、将下载Tomcat Zip压缩包解压。 2、修改\bin\startup.bat文件: 在第一行前面加入如下两行: SET JAVA_HOME=JDK目录 SET CATALINA_HOME=前面解压后Tomcat的目录或者%cd% 如果需要使用shutdown.bat关闭服务器的话,也按照上面加入两行。 3、这样,运行startup.bat就可以运行服务器,运行shutdown.bat就可以关闭服务器了。 4、修改\conf\tomcat-users.xml文件: 在标签内加入 这样才可以使用Tomcat的管理界面。 三、将Tomcat加入服务 1、修改bin目录中的service.bat: REM 添加下面的一行 set CATALINA_HOME=%cd% 如果从来没有安装过Tomcat,或者保证Services.msc启动服务管理器检查没有Apache Tomcat 系统服务,到此你就可以转到第二步了。否则继续往下走 REM 按照描述修改下面的几行 set SERVICE_NAME=Tomcat5 REM 上面一行,Tomcat5修改成你需要的服务名,这个将是一后使用net start/stop来操作的服务名称。

[错误]TOMCAT启动报错Socket bind failed等解决方法

[错误]TOMCAT启动报错Socket bind failed等解决方法 应该是你的要监听的端口被占用了。 在命令行(cmd)下运行netstat -anb 看看启动的时候报错内容严重: Error starting https://www.doczj.com/doc/b117488488.html,ng.Exception: Socket bind failed: [730048] ?????????×???(Э?é/???????/???)????í??at https://www.doczj.com/doc/b117488488.html,.AprEndpoint.init(AprEndpoint.java:6 12)at https://www.doczj.com/doc/b117488488.html,.AprEndpoint.start(AprEndpoint.java: 717)at org.apache.coyote.http11.Http11AprProtocol.start(Http11AprPro tocol.java:151)at org.apache.catalina.connector.Connector.start(Connector.java:11 32)at org.apache.catalina.core.StandardService.start(StandardService.j ava:531)at org.apache.catalina.core.StandardServer.start(StandardServer.jav a:710)at org.apache.catalina.startup.Catalina.start(Catalina.java:566)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodA

tomcat配置信息

tomcat6.0配置 第一步:下载j2sdk和tomcat:到sun官方站点 最新的jdk为1.6.04,tomcat为6.0,建议jdk1.4以上,tomcat4.0以上 第二步:安装和配置你的j2sdk和tomcat:执行j2sdk和tomcat的安装程序,然后设置按照路径进 行安装即可。 1.安装j2sdk以后,需要配置一下环境变量,在我的电脑->属性->高级->环境变量->系统变量中添加 以下环境变量(假定你的j2sdk安装在c:\j2sdk1.4.2): JAVA_HOME=c:\j2sdk1.4.2 classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(.;一定不能少,因为它代表 当前路径) path=%JAVA_HOME%\bin 接着可以写一个简单的java程序来测试J2SDK是否已安装成功: 将上面的这段程序保存为文件名为Test.java的文件。 然后打开命令提示符窗口,cd到你的Test.java所在目录,然后键入下面的命令 javac Test.java java Test 此时如果看到打印出来This is a test program.的话说明安装成功了,如果没有打印出这句话,你需 要仔细检查一下你的配置情况。 2.安装Tomcat后,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的 tomcat安装在c:\tomcat): CATALINA_HOME:c:\tomcat CATALINA_BASE:c:\tomcat TOMCAT_HOME: C:\Tomcat 然后修改环境变量中的classpath,把tomat安装目录下的common\lib下的servlet.jar追加到 classpath中去,修改后的classpath如下:

Oracle占用端口解决办法

Oracle占用端口解决办法 1、是谁占用了80端口。netstat命令就可完成这个任务:netstat -anb 。 2、W3SVC 服务无法绑定实例 1、返回数据是错误代码。 2、端口被占用 3、Oracle 安装后8080和80端口被占用的解决办法 可能在本地同时安装过Tomcat和Oracle的人都会知道,安装完Oracle后,会发现Tomcat的8080端口已经被Oracle占用了。 其实那是Oracle的一个XML数据库服务占用了8080端口,可以使用sys账号以sysdba身份登录进去,用以下语句更改掉Oracle所占用的端口: Oracle 9i: call dbms_namespace.shell('@jis/install/serverendp.ssh admin 8080 9090 -register'); Oracle 10g:call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get(),'/xdbconfig/ sysconfig/protocolconfig/httpconfig/http-port/text()',9090)); 注意:以上语句是更改Oracle XML数据库端口为9090,你可以改为其它空闲的端口。执行以上命令要以sysdba身份进行登陆。 -------------------------------------------------------------------------------- 解决80端口占用的办法: 两种方法: 第一:修改目录oracle\Apache\Apache\conf中的两个文件:httpd.conf、httpd.conf.default,将文件中的端口由80改为8080即可将Apache的应用

Windows查看已占用端口并且结束

Windows查看已占用端口并且结束 netstat -ano,查看已占用端口,结束已被占用的端口,ntsd,关闭任务管理器杀不了的进程cmd——回车,输入netstat -ano——回车,可以查看已占用的端口,记下端口的PID,然后打开任务管理器,点查看,选择列,勾选PID确定,找到对应的PID,结束进程,如果结束不了或者结束后还不起作用,就用ntsd命令 tomcat端口占用解决办法 如果之前端口没被占用,而后来被占用了,可以去到D:\tomcat-5.5.26\bin下执行shutdown.bat,这样占用的端口就被释放了 如果任务管理器结束不了进程,就用下边这个命令 cmd——回车,输入ntsd -c q -p PID——回车 ntsd -c q -p PID(把最后那个PID,改成你要终止的进程的PID)。在进程列表中你可以查到某个进程的PID。 以上参数-p表示后面跟随的是进程PID,-c q表示执行退出Ntsd的调试命令,从命令行把以上参数传递过去就行了。 Windows系统自带了一个用户态调试工具ntsd,只要你在命令行下使用ntsd调出某进程,然后退出ntsd即可终止该进程,而且使用ntsd会自动获得Debug权限,因此ntsd能杀掉大部分的进程。 ntsd无法杀掉的进程:只有System、SMSS.EXE和CSRSS.EXE不能杀。前两个是纯内核态的,最后那个是Win32子系统,ntsd本身需要它。 另外,tskill 命令杀进程也是一个选择 tasklist能列出所有的进程和相应的信息。 tskill能根据PID(进程ID)进程名等杀死进程。 以下是tskill的详细使用方法 TSKILL processid | processname [/SERVER:servername] [/ID:sessionid | /A] [/V] processid 要结束的进程的Process ID。 processname 要结束的进程名称。 /SERVER:servername 含有processID 的服务器(默认值是当前值)。 使用进程名和/SERVER 时,必须指定/ID 或/A

COM端口被占用

COM端口被占用(在使用中)的问题 1.打开注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter 把ComDB删除后重新尝试即可!(注:这样会重建所有COM口)。如果还不行,重启电脑! 2.另:到注册表下HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM将多余的COM口删除即可 3.另外还可以看看集成的Modem是否占用了你的这个串口。 打开“控件面板”中的“电话/调制解调器选项”,在“调制解调器”选项卡中是否有一个连接占用着这个串口(如COM1) 解决方法: 如果有连接占用这个串口,直接删除这个连接,重新启动电脑,问题解决。 或者看看详细原因: 1、用安全模式启动,用系统自带的通讯中的“超级终端”测试串口(COM1), 这时同样报错,不过错误信息更详细了,如下: ******错误信息******** Windows 汇报了一个TAPI错误(80000048)。 请用“控件面板”中的“电话/调制解调器选项” 图标来确认调制解调器安装得是否正确。 ********************** 2、然后把电脑正常启动了。 打开“控件面板”中的“电话/调制解调器选项”, 发现在“调制解调器”选项卡中有一个连接占用着这个串口(COM1), 于是马上删除这个连接。 再用“超级终端”测试串口(COM1),不报错了, 表示与串口(COM1)通讯正常。 3、把串口设备连接到串口(COM1)上,用相关软件与设备通讯,正常,问题解决。 关于使用蓝牙设备时COM口被占用问题 由於windows莫名其妙的registry原因,很多用户发现,在安装蓝牙管理软件之後,对应的蓝牙虚拟端口居然变成COM9,甚至是COM13或更高,导致与许多应用程序,如手机同步软件,PDA同步软件无法使用,多次重新安装蓝牙管理软件只会让状况更恶化.. 解决方案如下(执行下列步骤之前,请务必卸载蓝牙管理程序,并重新开机) 1.在Windows系统,按开始>执行>输入cmd,按回车 2.出现命令字符视窗之後,输入 set DEVMGR_SHOW_NONPRESENT_DEVICES=1 按回车

如何查看端口号被哪个程序使用

如何查看端口号被哪个程序占用了? 一, 1,Cmd输入netstat–ano可以看到 2, 例如我查80端口被什么占用了对应的进程id是 3600 再输入tasklist来查看pid 3600是哪个进程什么程序在跑 3, 可以很快看到是tomcat6在用pid 3600 也即此占用了80端口 此时可以用taskkill /pid 3600 /t /f 快速关闭此进程 或者 二。 开始--运行--cmd进入命令提示符输入netstat -ano即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项,可以在任务管理器中选"查看"-"选择列" 经常,我们在启动应用的时候发现系统需要的端口被别的程序占用,如何知道谁占有了我们需要的端口,很多人都比较头疼,下面就介绍一种非常简单的方法。假如我们需要确定谁占用了我们的9050端口 1、Windows平台 在windows命令行窗口下执行: C:\>netstat -aon|findstr "9050" TCP 127.0.0.1:9050 0.0.0.0:0 LISTENING 2016 看到了吗,端口被进程号为2016的进程占用,继续执行下面命令: C:\>tasklist|findstr "2016" tor.exe 2016 Console 0 16,064 K 很清楚吧,tor占用了你的端口。 taskkill /f /pidXXX linux下:lsof -i :80 三、Linux $netstat -pan|grep 2809 tcp 0 0 0.0.0.0:2809 0.0.0.0:* LISTEN 9493/java https://www.doczj.com/doc/b117488488.html, Tags: aix,windows,tips

如何查看80端口是否被占用_端口被占用解决办法

80端口是否被占用的解决办法 一、问题描述 公司外网发布是必须使用80端口,可是每次tomcat启动时,总时报端口占用,如果将端口改为不用的端口,例如:8090等,就能正常启动使用。 二、问题分析 一般服务器安装MS SQL Server 2008 时,都要求安装IIS 5.0或6.0,此时,肯定时被IIS 占用了,如果你把IIS 端口号修改成其它的,重启IIS 后,80端口仍然被占用呢,那你就需要检测是否还有其它服务占用了。 三、问题检查及处理 先介绍一下我的服务器环境:Windows 2003 Server SP2,MS SQL Server 2008 R2 ,Tomcat 6.0 ,Sun JDK 1.6 和1.7版本。 检查端口占用常用方法有:使用Dos 命令检查或使用专用软件检查。 使用Dos 检查:在Dos 命令行中输入netstat -aon|findstr "80" 即可查看到端口被谁占用,我查时被System 占用,PID为4,使用进程查看器发现是系统自己的进程,所以没办法停用,如果停用,系统无法正常工作,并且重新启动电脑。 使用专用软件检查,例如:Active Ports软件,可以查看到什么端口被什么软件点用,安装位置是什么等,就可以直接定位,但是我的服务器还是显示为PID为4,程序为System 占用,声明:System不带.exe啊(有的进程为:System.exe,我的则不是) 处理方法:经仔细查找,发现是MS SQL Server 2008服务占用了80端口,此时启动SQL Server 配置管理器,进入后,将SQL Server Reporting Services 服务停用后即可,也不影响MS SQL Server 的正常使用。

ftp 21端口被占用解决办法

ftp 21端口被占用解决办法 (2012-05-16 09:17:12) 最近发现服务器 ftp 21端口被占用,在博客园里找到这个方法不错,来分享下。有时安装程序时,会出现XX端口被占用的情况,可以通过CMD命令查看什么程序占用 1. netstat -ano 查看相应端口对应程序的PID 例如: C:\>netstat -ano Active Connections Proto Local Address Foreign Address State PID TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 1760 TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4 TCP 0.0.0.0:2967 0.0.0.0:0 LISTENING 660 TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING 1712 TCP 0.0.0.0:3934 0.0.0.0:0 LISTENING 728 TCP 0.0.0.0:10700 0.0.0.0:0 LISTENING 4920 TCP 10.186.20.116:21 0.0.0.0:0 LISTENING272 TCP 10.186.20.116:80 0.0.0.0:0 LISTENING 4516 可查看到占用21端口的进程PID为272 2. tasklist查看相应的PID号的程序 tasklist /fi "pid eq PID" 例, C:\tasklist /fi "pid eq 272" 图像名 PID 会话名会话# 内存使用 ========================= ====== ================ ======== ============ ServUDaemon.exe 272 Console 0 3,980 K 3. 如果要释放该端口用tskill PID命令 例,如要释放21端口 tskill 272 --The End--

tomcat启动时出错:严重errorinitializingendpoint

tomcat启动时出错:严重errorinitializingendpoint 严重: Error initializing https://www.doczj.com/doc/b117488488.html,.BindException: Address already in use: JVM_Bind:8080 at https://www.doczj.com/doc/b117488488.html,.JIoEndpoint.init(JIoEndpoint.java:50 1) at org.apache.coyote.http11.Http11Protocol.init(Http11Protocol.jav a:177) at org.apache.catalina.connector.Connector.initialize(Connector.jav a:1059) at org.apache.catalina.core.StandardService.initialize(StandardServ ice.java:677) at org.apache.catalina.core.StandardServer.initialize(StandardServe r.java:792) at org.apache.catalina.startup.Catalina.load(Catalina.java:518) at org.apache.catalina.startup.Catalina.load(Catalina.java:538) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodA ccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Delegating

查看80端口以及端口被占用解决办法

如何查看80端口是否被占用以及端口被占用解决办法 进入CMD(注:win8系统没有开始-->运行,需要使用快捷键:win+R进入运行),输入netstat -ano就可以很清楚的看到本地80口占用程序的PID,然后再去任务管理器里查找到PID所对应的进程(如果任务管理器没有PID,查看-->选择列-->PID(进程标示符)勾上即可) 1、如何查看80端口是否被占用 开始--运行(或者win+R) 输入cmd 命令 进入命令提示符,输入netstat -ano 即可看到所有连接的PID 之后启动任务管理器

找到这个PID所对应的程序 如果任务管理器中没有PID这一项,可以在任务管理器中选"查看"-"选择列"

勾选pid,确定即可显示

经常,我们在启动应用的时候发现系统需要的端口被别的程序占用,如何知道谁占有了我们需要的端口,很多人都比较头疼,下面就介绍一种非常简单的方法,希望对大家有用 2、确定谁占用了我们的80端口以及解决办法 1)在windows命令行窗口下执行: C:>netstat -ano|findstr "80" TCP 127.0.0.1:80 0.0.0.0:0 LISTENING 2448 2)端口被进程号为2448的进程占用,继续执行下面命令: C:>tasklist|findstr"2448" thread.exe 2016 Console 0 16,064 K 3)C:>taskkill /pid 2448 /F 4)如果第二步查不到,那就开任务管理器,看哪个进程是2448或者thread.exe ,

然后杀之即可。 如果需要查看其他端口。把 80 改掉即可 补充:原来出现这个错误原因( 4)httpd.exe: Could not reliably determine the server's fully qualified domain na me, using 192.168.1.111 for ServerName)是因为DNS没配置好. 如果不想配置DNS, 就在httpd.conf , 在最前加入 ServerName localhost:80 即可 另外360安全卫士中的【流量防火墙】,查看网络连接就可以看一些端口的情况。

Tomcat的安装与配置

第1章 Tomcat的安装与配置 Tomcat可以运行Servlet和JSP,是一个小型的轻量级应用服务器,它性能稳定、扩展性好、源码开放,是开发中小型Web应用系统的首选。本章首先介绍Tomcat服务器特点、层次结构、应用处理流程及发展史,然后讲述Tomcat的安装、设置和测试,接着介绍Tomcat 目录结构、常用配置平台、控制和管理程序等,最后设计一个不需数据库支持的简单聊天室。 1.1 Tomcat简介 Tomcat是Sun的JSWDK(Java Server Web Development Kit)中的Servlet容器,属于Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司和个人共同开发而成。Tomcat既是一个开放源码、免费支持JSP和Servlet技术的容器,同时又是一个Web服务器软件,受到了Sun公司的大力推荐和支持。因此,Servlet和JSP的最新规范都可以在Tomcat的新版本中得到实现。 与传统桌面应用程序不同,Tomcat中的应用程序是一个WAR(Web Archive)文件,它是许多文件构成的一个压缩包,包中的文件按照一定目录结构来组织,不同目录中的文件也具有不同的功能。部署应用程序时,只需要把WAR文件放到Tomcat的webapp目录下,Tomcat会自动检测和解压该文件。JSP文件第一次执行时,要先由Tomcat将其转化为Servlet文件,然后编译,所以速度会慢一些,但后继执行时速度会很快。 Tomcat既是一个Servlet容器,又是一个独立运行的服务器,像IIS、Apache等Web 服务器一样,具有处理HTML页面的功能。但它处理静态HTML文件的能力并不是太强,所以一般都是把它当作JSP/Servlet引擎,通过适配器(Adapter)与其他Web服务器软件(如Apache)配合使用。此外,Tomcat还可与其他一些软件集成起来实现更多功能,例如,与JBoss集成起来开发EJB、与OpenJMS集成起来开发JMS应用、与Cocoon(Apache的另外一个项目)集成起来开发基于XML的应用等。 Tomcat是一个小型的轻量级应用服务器,运行时占用系统资源小、扩展性好、支持负载平衡与邮件服务等开发应用系统中的常用功能,并且不断改进和完善。Tomcat适用于中小型系统和并发访问用户不太多的场合,是开发和调试JSP程序的首选。先进的技术、稳定的性能、源码开放和免费获取的机制,使得Tomcat深受Java爱好者的喜爱并得到了许多软件开发商的认可,成为目前相当流行的Web应用服务器。 1.1.1 Servlet简述 谈起Tomcat,就不能不说Servlet,如果没有Servlet的应用需求,就没有Tomcat的产

tomcat假死与异常监控

tomcat假死与异常监控 在开发的tomcat服务应用中,经常会遇到tomcat假死情况,除了每次出现假死时找出原因外,有时候由于业务的重要性,需要及时发现服务异常并及时解决。所以本人就想通过Linux定时任务定时监控的方式来预防这个问题,一旦发现及时通知告警并重启服务,然后才通过日志查明原因从根本上解决。 1)tomcat假死状态 处于假死状态时,后台日志不在生成,服务链接没有响应,但tomcat的进程是存在的,所以若要监控是否处于假死状态可以从日志和服务链接方面入手,但由于检测日志比较麻烦,本人选择的是通过选择某个服务链接获取其访问状态码http_code,若状态码不正常则确认为tomcat服务异常。 例如: url=“http://localhost/….” code=$(curl -o /dev/null --retry 3 -s -w %{http_code} $url) echo “${code}” 上面脚本中url变量为选择的适合的监控链接,code就是该链接正常时应该返回的返回码,正常是为200,有时候由于浏览器缓存可能返回302等也是正常的,所以建议最好选择那种后台的链接能够返回200的,这样检测起来比较方便。 2)tomcat异常监控 在tomcat运行日志中,经常会出现一些异常,对于有些异常我们可以不用管,但例如数据库链接异常、内存溢出异常等,这些异常会直接导致服务不能正常使用,所以需要对这些类型的异常进行监控,同样的本人也是通过Linux脚本实时检查tomcat运行日志的方式来检测服务状态。 脚本如下: errormessage1="https://www.doczj.com/doc/b117488488.html,ng.OutOfMemoryError" if cat ${tomcatpath}/logs/catalina.out |grep "$errormessage1">/dev/null then restartFlag="yes" 其实就是通过cat |grep 的方式来查找异常特征字符串是否在运行日志文件中存在,存在则代表出现了该类异常,当然这是需要程序对该类异常做了处理的(捕捉到并输出到控制台)。附带说明:语句 cat …加上了 >/dev/null是为了不输出具体查询的结果的 3)tomcat重启 检查出这些异常时,一般先通过重启服务的方式来优先恢复服务,则对tomcat进行脚本重启。tomcat重启的原理是:先通过命令获取tomcat进程id,然后kill掉该进程id,再重启tomcat命令即可,具体命令如: #tomcat部署路径 tomcatpath="/data/apps/tomcat" #获取tomcat进程id pid=$(ps -ef |grep java| grep ${tomcatpath} |grep -v grep | awk '{print $2}') kill -9 $pid cd ${tomcatpath} ./bin/startup.sh

tomcat安装与配置

第1章Tomcat的安装与配置 Tomcat可以运行Servlet和JSP,是一个小型的轻量级应用服务器,它性能稳定、扩展性好、源码开放,是开发中小型Web应用系统的首选。本章首先介绍Tomcat服务器特点、层次结构、应用处理流程及发展史,然后讲述Tomcat的安装、设置和测试,接着介绍Tomcat 目录结构、常用配置平台、控制和管理程序等,最后设计一个不需数据库支持的简单聊天室。 1.1 Tomcat简介 Tomcat是Sun的JSWDK(Java Server Web Development Kit)中的Servlet容器,属于Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司和个人共同开发而成。Tomcat既是一个开放源码、免费支持JSP和Servlet技术的容器,同时又是一个Web服务器软件,受到了Sun公司的大力推荐和支持。因此,Servlet和JSP的最新规范都可以在Tomcat的新版本中得到实现。 与传统桌面应用程序不同,Tomcat中的应用程序是一个WAR(Web Archive)文件,它是许多文件构成的一个压缩包,包中的文件按照一定目录结构来组织,不同目录中的文件也具有不同的功能。部署应用程序时,只需要把WAR文件放到Tomcat的webapp目录下,Tomcat会自动检测和解压该文件。JSP文件第一次执行时,要先由Tomcat将其转化为Servlet文件,然后编译,所以速度会慢一些,但后继执行时速度会很快。 Tomcat既是一个Servlet容器,又是一个独立运行的服务器,像IIS、Apache等Web 服务器一样,具有处理HTML页面的功能。但它处理静态HTML文件的能力并不是太强,所以一般都是把它当作JSP/Servlet引擎,通过适配器(Adapter)与其他Web服务器软件(如Apache)配合使用。此外,Tomcat还可与其他一些软件集成起来实现更多功能,例如,与JBoss集成起来开发EJB、与OpenJMS集成起来开发JMS应用、与Cocoon(Apache的另外一个项目)集成起来开发基于XML的应用等。 Tomcat是一个小型的轻量级应用服务器,运行时占用系统资源小、扩展性好、支持负载平衡与邮件服务等开发应用系统中的常用功能,并且不断改进和完善。Tomcat适用于中小型系统和并发访问用户不太多的场合,是开发和调试JSP程序的首选。先进的技术、稳定的性能、源码开放和免费获取的机制,使得Tomcat深受Java爱好者的喜爱并得到了许多软件开发商的认可,成为目前相当流行的Web应用服务器。 1.1.1 Servlet简述 谈起Tomcat,就不能不说Servlet,如果没有Servlet的应用需求,就没有Tomcat的产

大讲台筛选,Hadoop安装端口被占用解决方法

大讲台筛选,Hadoop安装端口被占用解决方法 在测试安装hadoop的时候,通常会遇到大家在同一批机器上安装hadoop的情况,这样的话会有端口已经被占用导致安装不成功的情况出现。 Hadoop日志会提示这种错误: ERROR org.apache.hadoop.mapred.TaskTracker: Can not start task tracker because https://www.doczj.com/doc/b117488488.html,.BindException: Address already in use 在这种情况下,大讲台专业Hadoop培训。最好的方法就是在配置环境时把所有的端口配置都进行修改。 在hadoop 0.20版本会涉及到3个配置文件: core-site.xml: 1: 2: https://www.doczj.com/doc/b117488488.html, 3: hdfs://master:9100 4: 5: 为默认hdfs文件访问URI 6: 7: hdfs-site.xml 1: 2: dfs.datanode.address 3: 0.0.0.0:50011 4: 5: 默认为50010, 是datanode的监听端口 6: 7: 8: 9: dfs.datanode.http.address 10: 0.0.0.0:50076 11: 12: 默认为50075,为datanode的http server端口 13:

14: 15: 16: dfs.datanode.ipc.address 17: 0.0.0.0:50021 18: 19: 默认为50020, 为datanode的ipc server端口 20: 21: mapred-site.xml 1: 2: mapred.job.tracker 3: master:9101 4: 5: job tracker运行的位置和端口 6: 7: 8: 9: 10: mapred.task.tracker.http.address 11: 0.0.0.0:50061 12: 13: 默认为50061, 是task tracker的http server端口 14: 15: 以上端口都配置为和其他人不冲突的端口,然后启动hadoop就可以顺利启动了。 PS: 1:如果遇到这种错误: ERROR org.apache.hadoop.mapred.TaskTracker: Can not start task tracker because org.apache.hadoop.ipc.RemoteException: java.io.IOException: Unknown protocol to name node: org.apache.hadoop.mapred.InterTrackerProtoco 说明你在core-site.xml中https://www.doczj.com/doc/b117488488.html,的端口和mapred-site.xml中mapred.job.tracker中端口配置为完全相同的了,请修改为不同端口。 2:如果遇到这种:

服务器端口被大量占用解决方法

用NetStat命令查看服务器端口时,发现服务器udp端口开放了好多,最少在1000个以上,,经过仔细仔细检查了一下,网上查阅到如下这个解决办法:先使用netstat -anb命令显示服务器上每个端口所对应的监听程序,因为显示的太多,无法一一看过来,所以只能采用: netstat -anb>C:\1.txt 命令,把输出结果存到C盘根目录下的1.txt文件中,慢慢查看. 查看后,得知所有这些udp端口均为dns.exe程序监听,这台服务器安装了DNS服务,难道中毒了? 在命令提示符下,输入: cd c: 切换C盘根目录,执行: dir dns.exe /s/a 命令进行全盘检索dns.exe程序,经过N久之后,系统检索出5个dns.exe 来,经过检索,这5个dns.exe均属于系统自带的,无任何问题,至此排除中毒的可能。 接着在Google中输入:dns.exe udp端口 得到结果显示为微软的KB951748和 KB951746补丁会导致此问题出现,原文如下: 复制代码代码如下: DNS 服务器安装补丁KB951748 KB951746 后通信的会话数量增大作者:smoile 日期:2008-10-27 12:31:39 在给单位的DNS服务器迁移的时候发现新的DNS服务器上的UDP会话数大得惊人,卸载了重装好是不行,苦闷了两天。今天早上给微软800打电话,可是要我给什么号,想不到技术支持也要验证正版!于是到微软社区发帖,想不到很快就有了回复。按照上面的方法卸载KB951748和 KB951746补丁,果然好了! 以上是网上给的方法,但是我查找了补丁,没发现以上两个补丁,然后,我就去删除了dns.exe这个程序(因为这个程序占用了大量端口),其中有一个不能删除,是进程在占用,查看到PID位1084,于是去关掉进程,删掉了dns.exe,然后再去查看netstat,发现udp占用的大量端口消失了。至此,这个问题应该算是解决了。

相关主题
相关文档 最新文档