tomcat端口被占用问题

怎么解决tomcat占用8080端口问题

相信很多朋友都遇到过这样的问题吧,tomcat死机了,重启eclipse之后,发现

Several ports (8080, 8009) required by Tomcat v6.0 Server at localhost are already in use.The server may already be running in another process, or a system process may be using the port. To start this server you will need to stop the other process or change the port number(s).

是不是很多人教你重启电脑呢,下面教大家一个不用重启计算机 的方法。

此方法也可以解决,windows上如何结束进程的详细过程,下面附详细,图文说明

1. 在dos下,输入 netstat -ano|findstr 8080

//说明:查看占用8080端口的进程

tomcat端口被占用问题

显示占用端口的进程

2.

taskkill /pid 6856 /f

//说明,运行windows自带taskkill命令,将上面显示的进程号,结束掉。

下面有图为证

怎么解决tomcat占用8080端口问题图文教程,到此结束,希望对大家有所帮助。祝大家,工作愉快,不用重启计算机了,次方法也可以解决其他类似问题,在编程当中对大家的困扰。

此方法也可以解决,windows上如何结束进程的详细过程。祝大家编程愉快。

tomcat端口被占用问题

 

第二篇:tomcat学习笔记

1、Tomcat 内存和线程配置 =================== Tomcat内存、连接数等性能参数设置 默认参数不适合生产环境使用,因此需要修改一些参数

1、修改启动时内存参数、并指定JVM时区(在windows server 2008 下时间少了8个小时): 在Tomcat上运行j2ee项目代码时,经常会出现内存溢出的情况,解决办法是在系统参数中增加系统参数: window下, 在catalina.bat最前面: set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m 一定加在catalina.bat最前面。 linux下,在catalina.sh最前面增加: JAVA_OPTS="-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m -Duser.timezone=Asia/Shanghai" 注意:前后二者区别,有无set,有无双引号。

2、线程池配置(Tomcat6下) 使用线程池,用较少的线程处理较多的访问,可以提高tomcat处理请求的能力。使用方式: 首先。打开/conf/server.xml,增加 <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500"

minSpareThreads="20" maxIdleTime="60000" /> 最大线程500(一般服务器足以),最小空闲线程数20,线程最大空闲时间60秒。 然后,修改<Connector ...>节点,增加executor属性,如:

<Connector executor="tomcatThreadPool" port="80" protocol="HTTP/1.1"

connectionTimeout="60000" keepAliveTimeout="15000" maxKeepAliveRequests="1" redirectPort="443" ....../>

注意:可以多个connector公用1个线程池。

3、调整连接相关Connector的参数:

<Connector executor="tomcatThreadPool" port="80" protocol="HTTP/1.1"

connectionTimeout="60000" keepAliveTimeout="15000" maxKeepAliveRequests="1" redirectPort="443" maxHttpHeaderSize="8192" URIEncoding="UTF-8"

enableLookups="false" acceptCount="100" disableUploadTimeout="true"/> 参数说明: * connectionTimeout - 网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。 * keepAliveTimeout - 长连接最大保持时间(毫秒)。此处为15秒。 * maxKeepAliveRequests - 最大长连接个数(1表示禁用,-1表示不限制个数,默认100个。一般设置在100~200之间) the maximum number of HTTP requests that can be held in the pipeline until the connection is closed by the server. Setting this attribute to 1 disables HTTP/1.0 keep-alive, as well as HTTP/1.1 keep-alive and pipelining. Setting this to -1 allows an unlimited number of pipelined or keep-alive HTTP requests. If not specified, this attribute is set to 100. *

maxHttpHeaderSize - http请求头信息的最大程度,超过此长度的部分不予处理。一般8K。 * URIEncoding - 指定Tomcat容器的URL编码格式。 * acceptCount - 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,默认为10个。defines the maximum queue length for incoming connection requests when all possible request processing threads are in use. Any requests received when the queue is full are refused. The default value is 10. *

disableUploadTimeout - 上传时是否使用超时机制 * enableLookups - 是否反查域名,取值为:true或false。为了提高处理能力,应设置为false * bufferSize - defines the size (in bytes) of the buffer to be provided for input streams created by this connector. By default, buffers of 2048 bytes are provided.

* maxSpareThreads - 做多空闲连接数,一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程 the maximum number of unused request processing threads that are allowed to exist until the thread pool starts stopping the unnecessary threads. The default value is 50. * maxThreads - 最多同时处理的连接数,Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数。。 the maximum number of request processing threads to be created by this Connector, which therefore determines the maximum number of simultaneous requests that can be handled. If not specified, this attribute is set to 200. * minSpareThreads - 最小空闲线程数,Tomcat初始化时创建的线程数 the number of request processing threads that are created when this Connector is first started. The connector will also make sure it has the specified number of idle processing threads available. This attribute should be set to a value smaller than that set for maxThreads. The default value is 4. *

minProcessors - 最小空闲连接线程数,用于提高系统处理性能,默认值为10。(用于Tomcat4中) * maxProcessors - 最大连接线程数,即:并发处理的最大请求数,默认值为75。(用于Tomcat4中) 备注: Tomcat4中可以通过修改minProcessors和maxProcessors的值来控制线程数。 在Tomcat5+主要对以下参数调整 maxThreads Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数。 acceptCount 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。 connnectionTimeout 网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。 minSpareThreads Tomcat初始化时创建的线程数。 maxSpareThreads 一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。

4、负载均衡、集群的配置 Tomcat6支持分布式部署,可以实现集群功能,提高响应能力。

5、利用JMX监控Tomcat运行情况,需要手工调整启动参数,如下: 打开cataline.bat,增加一行 set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.port=10090 -Dcom.sun.management.jmxremote.ssl=false

-Dcom.sun.management.jmxremote.authenticate=false

-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager

-Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties" linux下修改cataline.sh: JAVA_OPTS="-Dcom.sun.management.jmxremote.port=10090 -Dcom.sun.management.jmxremote.ssl=false

-Dcom.sun.management.jmxremote.authenticate=false

-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager

-Djava.util.logging.config.file=%CATALINA_BASE\conf\logging.properties" 注意JDK\jre\lib\management\management.properties文件必须存在。 重新启动tomcat节点,然后用jconsole连接(此处端口wei10090)

6、Tomcat增加一个应用 在server.xml的Host标签中增加行 <Context displayName="OA" docBase="/app/web-apps/GACWP" path="" /> path代表上下文名称,空表示是根路径。 ================================= Tomcat6.x目录与server.xml详解 tomcat 服务器是一个免费的开放源代码的Web 应用服务器,目前最新版本是6.x,相对5.x性能提升很多,主要优化了内存使用,增强IO能力,重新构造集群功能。 近期对Tomcat6.x作深入学习,参考上述声明的Tomcat全攻略,由于笔者是20xx年针对Tomcat4.x所写,故参考之并针对 Tomcat6.x做了总结,形成此篇学习笔记,希望对学习的人有所帮助,本文涵盖了:Tomcat目录、Server.xml元素讲解,数据库连接池配置、线程池配置、虚拟目录配置。关于如何下载、安装、运行Tomcat略,请google,相信有详细的文章讲述。 tomcat的目录结构如下: 目录名 bin 存放启动和关闭tomcat脚本

conf 包含不同的配置文件,server.xml(Tomcat的主要配置文件)和web.xml work 存放jsp编译后产生的class文件 webapp 存放应用程序示例,以后你要部署的应用程序也要放到此目录 logs 存放日志文件 lib 这三个目录主要存放tomcat所需的jar文件

server.xml配置简介

元素名

属性 解释 server port 指定一个端口,这个端口负责监听关闭tomcat的请求 shutdown 指定向端口发送的命令字符串 GlobalNamingResources

服务器的全局JNDI资源,可以有子标签<Resource></Resource> Executor(线程池,一个或多个Connector可以共享此线程池) name 线程池名称,名称必须唯一 namePrefix

线程的名字前缀,用来标记线程名字的,这样每个线程就用这个前缀加上线程编号了,比如 catalina-exec-1 、catalina-exec-2 maxThreads

允许的最大线程池里的线程数量,默认是200,大的并发应该设置的高一些,反正只是限制而已,不占用资源 minSpareThreads

最小的保持活跃的线程数量,默认是25.这个要根据负载情况自行调整了。太小了就影响反应速度,太大了白白占用资源 maxIdleTime

最小的保持活跃的线程数量,默认是25.这个要根据负载情况自行调整了。太小了就影响反应速度,太大了白白占用资源 threadPriority

线程的等级。默认是Thread.NORM_PRIORITY service name 指定service的名字 Connector (表示客户端和service之间的连接) port

指定服务器端要创建的端口号,并在这个断口监听来自客户端的请求 minProcessors 服务器启动时创建的处理请求的线程数maxProcessors

最大可以创建的处理请求的线程数enableLookups

如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址 redirectPort

指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号 acceptCount 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理connectionTimeout

指定超时的时间数(以毫秒为单位) Engine (表示指定service中的请求处理机,接收和处理来自Connector的请求) name defaultHost

指定缺省的处理请求的主机名,它至少与其中的一个host元素的name属性值是一样的 jvmRoute host (表示一个虚拟主机、并且可以包含Context子节点配置虚拟目录) name

指定主机名 appBase

应用程序基本目录,即存放应用程序的目录 unpackWARs

如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序 autoDeploy

自动部署 xmlValidation

是否验证xml xmlNamespaceAware Realm (表示存放用户名,密码及role的数据库) className

指定Realm使用的类名,此类必须实现org.apache.catalina.Realm接口 Context(host子节点配置虚拟目录)

Path

虚拟目录名称 docBase

物理路径 Debug Debug模式 Reload True 重新加载,修改后自动加载 上面我们讲述了server .xml个元素的含义,下面我们给出详细示例 Tomcat数据库连接池配置如下: server.xml配置Resource Xml代码

1. <Resource name="jdbc/ExampleDB" auth="Container" type="javax.sql.DataSource"

2. maxActive="100" maxIdle="30" maxWait="10000"

3. username="APP" password="APP"

driverClassName="org.apache.derby.jdbc.ClientDriver"

4. url="jdbc:derby://localhost:1527/springside-example;create=true"/>

context.xml文件增加: Xml代码

<WatchedResource>WEB-INF/web.xml</WatchedResource>

<ResourceLink name="jdbc/ExampleDB" global="jdbc/ExampleDB"

type="javax.sql.DataSource"/>

4. Tomcat共享线程池配置: 取消Executor注释,修改连接数至自己合适的数值既可。 Xml代码

1. <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"

2. maxThreads="200" minSpareThreads="100" maxIdleTime="60000"/>

executor="tomcatThreadPool" 标明此连接使用上面配置的名称为tomcatThreadPool的连接池,无属性共享连接不会生效

protocol表示使用的是 http协议 端口号为8080 Java代码

1. <Connector port="8080" protocol="HTTP/1.1" redirectPort="8443"

2. connectionTimeout="20000"

3. executor="tomcatThreadPool"

4. acceptCount="100"

5. useBodyEncodingForURI="true"

6. enableLookups="false"

7. /> 虚拟目录配置: 在<host></host>之间增加如下 <!-- 配置虚拟目录,例如:http://localhost:8080 --> Xml代码

1. <Context path="/" docBase="D:\workspace\code\HBJH\web"></Context> 附件中是取自springside3中,Tomcat production config配置示例,即生产环境下Tomcat配置

2、tomcat6 server.xml 参数详解

元素名 属性 解释

server port

shutdown

指定一个端口,这个端口负责监听关闭 tomcat 的请求

GlobalNamingResources name 服务器的全局 JNDI 资源,可以有子标签

<Resource></Resource>

Executor name 线程池名称,名称必须唯一

一个或多个 Connector 可以共享此线程池

(boolean)daemon 是否是守护程序运行,默认为true

namePrefix 线程的名字前缀,用来标记线程名字的,这样每个线程就用这个前缀加上线程编号了,比如 catalina-exec-1 、catalina-exec-2

(int)maxThreads 允许的最大线程池里的线程数量,默认是200,大的并发应该设置的高一些,反正只是限制而已,不占用资源

(int)minSpareThreads 最小的保持活跃的线程数量,默认是 25. 这个要根据负载情况自行调整了。太小了就影响反应速度,太大了白白占用资源

(int) maxIdleTime 线程空闲时间,超过最小活跃线程数量的线程,如果空闲时间超过这个设置后,会被关别。默认是1分钟。

(int)threadPriority 线程的等级。默认是 Thread.NORM_PRIORITY

Connector port 指定服务器端要创建的端口号,并在这个断口监听来自客户端的请求 protocol 指定通讯协议

executor 指定使用的线程池

minProcessors 服务器启动时创建的处理请求的线程数, 初始化时创建的线程数 maxProcessors 最大可以创建的处理请求的线程数

(boolean)allowTrace 是否启用http跟踪,默认为false

(boolean)emptySessionPath 如果设置为true,则所有的session cookies的路径都为/,默认为false

(boolean)enableLookups 如果为 true ,则可以通过调用 request.getRemoteHost() 进行 DNS 查询来得到远程客户端的实际主机名,若为 false 则不进行 DNS 查询,而是返回其 ip 地址,默认为true

maxPostSize 默认2097152字节(2m)

maxSavePostSize 默认4096字节(4k)

proxyName 如果配置的是proxy模式,则request.getServerName() 返回这里配置的值 proxyPort 如果配置的是proxy模式,则request.getServerPort() 返回这里配置的值 redirectPort 指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号

SSLEnabled 是否启用ssl

scheme 默认http

secure

URIEncoding 字符编码,默认ISO-8859-1

useBodyEncodingForURI 表明如果contentType指定的编码用于URI查询参数,则不用URIEncoding。与Tomcat4.1.x兼容。默认为false

useIPVHosts 默认false

xpoweredBy 默认false

http额外属性

acceptCount 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,默认10

address 默认为机器的所有ip

bufferSize 默认2048字节(2k),Connector创建的输入流的大小,提高这个值可以提升性能,增加内存消耗。

compressableMimeType 使用HTTP压缩的MIME类型,使用逗号分割,默认值是

text/html,text/xml,text/plain

compression 为了节省带宽,可以将这个值设置为on,从而启用HTTP/1.1 GZIP压缩。off关闭压缩,forces强制使用压缩,默认值是off。

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

noCompressionUserAgents 不启用压缩的浏览器,默认为空

connectionLinger 默认-1

connectionTimeout 指定超时的时间数 ( 以毫秒为单位 ),默认60000(1分钟)

keepAliveTimeout 默认值与connectionTimeout相同

maxKeepAliveRequests 默认值100

disableUploadTimeout 默认为true

maxHttpHeaderSize 默认值为4096 (4 KB).

maxThreads 允许的最大线程池里的线程数量,默认值40,如果指定了 executor,则该值无效

maxProcessors 最大可以创建的处理请求的线程数

debug

AJP配置:

AJP Connector是一个基于AJP协议的 Connector组件,用于apahce和tomcat的集成使用。 这个组件可与Engine .结合使用,达到负载均衡。

元素名 属性 解释

公共属性Common Attributes,使用ajp,必须指定以下属性

Connector protocol 指定通讯协议

(boolean)allowTrace 是否启用http跟踪,默认为false

(boolean)emptySessionPath 如果设置为true,则所有的session cookies的路径都为/,默认为false

(boolean)enableLookups 如果为 true ,则可以通过调用 request.getRemoteHost() 进行 DNS 查询来得到远程客户端的实际主机名,若为 false 则不进行 DNS 查询,而是返回其 ip 地址,默认为true

maxPostSize 容器在 Form URL 参数解析过程中能够处理的 POST 最大长度,以字节计算。该属性设置为小于或等于 0 ,限制取消。

默认2097152字节(2m)

maxSavePostSize 默认4096字节(4k)

proxyName 如果配置的是proxy模式,则request.getServerName() 返回这里配置的值 proxyPort 如果配置的是proxy模式,则request.getServerPort() 返回这里配置的值 redirectPort 指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号

request.registerRequests 该属性控制是否为了 Connector 的 JMX 监控记录请求。缺省情况下启用,但是禁用它可以节省一点内存

scheme 默认http

secure

URIEncoding 字符编码,默认ISO-8859-1

useBodyEncodingForURI 表明如果contentType指定的编码用于URI查询参数,则不用URIEncoding。与Tomcat4.1.x兼容。默认为false

useIPVHosts 默认false

xpoweredBy 默认false

AJP 1.3支持的实现

Connector address 默认为机器的所有ip

port 指定服务器端要创建的端口号,并在这个断口监听来自客户端的请求

backlog 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,默认10

bufferSize 输出缓冲区的大小,小于等于0时,输出缓冲被禁用,默认为-1

executor 指定使用的线程池

connectionTimeout Connector 接收连接后,等待提供请求 URI 的时间 . 缺省值为无限长(也就是没有超时) .

keepAliveTimeout 默认值与connectionTimeout相同,在关闭链接前等待另一个AJP请求的时间,单位为毫秒

maxThreads 允许的最大线程池里的线程数量,默认值40,如果指定了 executor,则该值无效

tomcatAuthentication

如果设置为true,验证在JBoss Web中完成。否则,主体在在本地web服务器被验证后,传递到JBoss Web中授权。缺省值为true。

tcpNoDelay 该值为 true ,服务器的 socket 将使用 TCP_NO_DELAY 选项,大部分情况下该选

项可以提升性能。缺省值为 true 。

无嵌套组件Nested Components 。

host配置:

元素名 属性 解释

Host name 指定主机名

appBase 应用程序基本目录,即存放应用程序的目录

autoDeploy 如果此项设为true,表示当Tomcat服务器处于运行状态时,能够监测appBase下的文件,如果有新的Web应用加入进来,会自动发布这个Web应用.

默认为true

backgroundProcessorDelay 默认为-1

className 指定 Realm 使用的类名,此类必须实现 org.apache.catalina.Realm 接口 密码及 role 的数据库 )

deployOnStartup 如果此项设为true,表示Tomcat服务器启动时会自动发布appBase目录下的所有Web应用,如果Web应用在server.xml中没有相应的<Context>元素,将采用Tomcat默认的Context

默认为true

以下为Standard Implementation

deployXML 默认为true

errorReportValveClass

unpackWARs 如果为 true ,则 tomcat 会自动将 WAR 文件解压,否则不解压,直接从 WAR 文件中运行应用程序

workDir

Alias 指定虚拟主机的别名,可以指定多个别名.

xmlValidation

xmlNamespaceAware

Context配置:

元素名 属性 解释

Context path 虚拟目录名称,默认项目配""

docBase 物理路径

reloadable 如果希望Catalina监视/WEB-INF/classes/和/WEB-INF/lib下面的类是否发生变化,在发生变化的时候自动重载web application,设为true。这个特征在开发阶段很有用,但也大大增加了服务器的开销。因此,在发布以后,不推荐使用。但是,你可以使用 Manager应用在必要的时候触发应用的重载。

backgroundProcessorDelay 这个值代表在context及其子容器(包括所有的wrappers)上调用backgroundProcess方法的延时,以秒为单位。如果延时值非负,子容器不会被调用,也就是说子容器使用自己的处理线程。如果该值为正,会创建一个新的线程。在等待指定的时间以后,该线程在主机及其 子容器上调用backgroundProcess方法。context利用后台处理session过期,监测类的变化用于重新载入。如果没有指定,该属性的缺省值是-1,说明context依赖其所属的Host的后台处理。

className 实现的Java类名。该类必须实现org.apache.catalina.Context接口。如果没有指定,使用标准实现(在下面定义)

deployOnStartup 如果此项设为true,表示Tomcat服务器启动时会自动发布appBase目录下的所有Web应用,如果Web应用在server.xml中没有相应的<Context>元素,将采用Tomcat默认的Context

默认为true

cookies 如果想利用cookies来传递session identifier(需要客户端支持cookies),设为ture。否则为false,这种情况下只能依靠URL Rewriting传递session identifier。 crossContext 如果想在应用内调用ServletContext.getContext()来返回在该虚拟主机上运行的其他web application的request dispatcher,设为true。在安全性很重要的环境中,设为false,使得getContext()总是返回null。缺省值为false。

override 如果想利用该Context元素中的设置覆盖DefaultContext中相应的设置,设为true。缺省情况下使用DefaultContext中的设置。

privileged 设为true,允许context使用container servlets,比如manager servlet。 wrapperClassorg.apache.catalina.Wrapper实现类的名称,用于该Context管理的servlets。如果没有指定,使用标准的缺省值。

相关推荐