tomcat后台总是报这个错误,这tomcat是什么软件原因

Java后台向前台传值乱码问题,修改tomcat & &apache-tomcat-7.0.27\conf\server.xml 中的配置 添加上URIEncoding=&UTF-8&
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:220527次
积分:2819
积分:2819
排名:第6338名
原创:19篇
转载:377篇
评论:19条
(10)(46)(100)(31)(65)(25)(21)(6)(3)(1)(1)(1)(22)(8)(6)(6)(5)(1)(4)(7)(6)(15)(2)(7)我们的一个系统,需要在前台定时调用后台的sql,查询预警的状态,目前前台采用JSON定时调用后台的一句selectSql,每分钟调用一次,并发大概在50-80,环境是tomcat+sqlserver2005,现在每次重启tomcat都隔30分钟左右就会报内存堆栈溢出,主要报错如下,请各位大哥哥救场。。。。。。。
08:42:20 StandardWrapperValve[action]: Servlet.service() for servlet action threw exception
org.springframework.jdbc.UncategorizedSQLException: StatementC uncategorized SQLException for SQL [SELECT TOP (1)(select NodeName from SYS_CODE where AUTO_ID=yj.Emergency_Plan_ID) as yaName,Status FROM T_YJYA as yj& ORDER BY START_DATE DESC]; SQL state [08S01]; error code [0]; Software caused connection abort: nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: Software caused connection abort: socket write error
com.microsoft.sqlserver.jdbc.SQLServerException: Software caused connection abort: socket write error
at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSChannel.write(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSWriter.flush(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSWriter.writePacket(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSWriter.endMessage(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSCommand.startResponse(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeQuery(Unknown Source)
at mons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:205)
at org.springframework.jdbc.core.JdbcTemplate$1QueryStatementCallback.doInStatement(JdbcTemplate.java:333)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:282)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:348)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:352)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:356)
at org.springframework.jdbc.core.JdbcTemplate.queryForList(JdbcTemplate.java:387)
at cn.sh.ideal.project.toc.YjyaDAO.getyaName(YjyaDAO.java:56)
at cn.sh.ideal.project.toc.YjyaPermAction.getCurrYAName(YjyaPermAction.java:82)
at sun.reflect.GeneratedMethodAccessor69.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at cn.sh.ideal.product.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:34)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:595)
10:28:52 StandardWrapperValve[action]: Servlet.service() for servlet action threw exception
java.lang.OutOfMemoryError: Java heap space
at java.io.ByteArrayOutputStream.&init&(ByteArrayOutputStream.java:59)
at com.sun.net.ssl.internal.ssl.OutputRecord.&init&(OutputRecord.java:56)
at com.sun.net.ssl.internal.ssl.OutputRecord.&init&(OutputRecord.java:66)
at com.sun.net.ssl.internal.ssl.AppOutputStream.&init&(AppOutputStream.java:33)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.init(SSLSocketImpl.java:514)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.&init&(SSLSocketImpl.java:474)
at com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl.createSocket(SSLSocketFactoryImpl.java:90)
at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.loginWithoutFailover(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(Unknown Source)
at mons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:37)
at mons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:290)
at mons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:771)
at mons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:95)
at mons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:112)
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:268)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:348)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:352)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:356)
at org.springframework.jdbc.core.JdbcTemplate.queryForList(JdbcTemplate.java:387)
at cn.sh.ideal.project.toc.YjyaDAO.getyaName(YjyaDAO.java:56)
at cn.sh.ideal.project.toc.YjyaPermAction.getCurrYAName(YjyaPermAction.java:82)
at sun.reflect.GeneratedMethodAccessor69.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
Tomcat内存溢出的原因及调试
在生产环境中tomcat内存设置不好很容易出现内存溢出。造成内存原因是不一样的,当然处理方式也不一样。
这里根据平时遇到的情况和相关资料进行一个总结。常见的一般会有下面三种情况:
1.OutOfMemoryError: Java heap space
2.OutOfMemoryError: PermGen space
3.OutOfMemoryError: unable to create new native thread.
Tomcat内存溢出解决方案
对于前两种情况,在应用本身没有内存泄露的情况下可以用设置tomcat jvm参数来解决。(-Xms -Xmx -XX:PermSize -XX:MaxPermSize)最后一种可能需要调整操作系统和tomcat jvm参数同时调整才能达到目的。
第一种:是堆溢出。
在JVM中如果98%的时间是用于GC且可用的 Heap size 不足2%的时候将抛出此异常信息。
没有内存泄露的情况下,调整-Xms -Xmx参数可以解决。
-Xms:初始堆大小
-Xmx:最大堆大小
但堆的大小受下面三方面影响:
1.相关操作系统的数据模型(32-bt还是64-bit)限制;(32位系统下,一般限制在1.5G~2G;我在2003 server 系统下(物理内存:4G和6G,jdk:1.6)测试 1612M,64为操作系统对内存无限制。)
2.系统的可用虚拟内存限制;
3.系统的可用物理内存限制。
-Xms -Xmx一般配置成一样比较好比如set JAVA_OPTS= -Xms1024m -Xmx1024m
第二种:永久保存区域溢出
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。但目前的hibernate和spring项目中也很容易出现这样的问题。 /topic/80620?page=1 的帖子有讨论的这个问题。可能是由于这些框架会动态class,而且jvm的gc是不会清理PemGen space的,导致内存溢出。
这一个一般是加大-XX:PermSize -XX:MaxPermSize 来解决问题。
-XX:PermSize 永久保存区域初始大小
-XX:PermSize 永久保存区域初始最大值
这一般结合第一条使用,比如 set JAVA_OPTS= -Xms1024m -Xmx1024m -XX:PermSize=128M -XX:PermSize=256M
有一点需要注意:java -Xmx***M version 命令来测试的最大堆内存是 -Xmx与 -XX:PermSize的 和比如系统支持最大的jvm堆大小事1.5G,那 -Xmx1024m -XX:PermSize=768M 是无法运行的。
第三种:无法创建新的线程。
这种现象比较少见,也比较奇怪,主要是和jvm与系统内存的比例有关。
这种怪事是因为JVM已经被系统分配了大量的内存(比如1.5G),并且它至少要占用可用内存的一半。有人发现,在线程个数很多的情况下,你分配给JVM的内存越多,那么,上述错误发生的可能性就越大。
产生这种现象的原因如下(从这个blog中了解到原因:/hexiong/blog/item/16dc9e518fb10cc.html):
每一个32位的进程最多可以使用2G的可用内存,因为另外2G被操作系统保留。这里假设使用1.5G给JVM,那么还余下500M可用内存。这500M内存中的一部分必须用于系统dll的加载,那么真正剩下的也许只有400M,现在关键的地方出现了:当你使用Java创建一个线程,在JVM的内存里也会创建一个Thread对象,但是同时也会在操作系统里创建一个真正的物理线程(参考JVM规范),操作系统会在余下的 400兆内存里创建这个物理线程,而不是在JVM的1500M的内存堆里创建。在jdk1.4里头,默认的栈大小是256KB,但是在jdk1.5里头,默认的栈大小为1M每线程,因此,在余下400M的可用内存里边我们最多也只能创建400个可用线程。
这样结论就出来了,要想创建更多的线程,你必须减少分配给JVM的最大内存。还有一种做法是让JVM宿主在你的JNI代码里边。
给出一个有关能够创建线程的最大个数的估算公式:
(MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads
对于jdk1.5而言,假设操作系统保留120M内存:
1.5GB JVM: (2GB-1.5Gb-120MB)/(1MB) = ~380 threads
1.0GB JVM: (2GB-1.0Gb-120MB)/(1MB) = ~880 threads
在2000/XP/2003的boot.ini里头有一个启动选项,好像是:/PAE /3G ,可以让用户进程最大内存扩充至3G,这时操作系统只能占用最多1G的虚存。那样应该可以让JVM创建更多的线程。
因此这种情况需要结合操作系统进行相关调整。
因此:我们需要结合不同情况对tomcat内存分配进行不同的诊断才能从根本上解决问题。
以上就是针对Tomcat内存溢出的几种解决方案。
装个profiler,调试一下。
已解决问题
未解决问题主题 : 在使用jeecms时,出现以下错误,不能访问后台
级别: 童生
在线时长:0
1# & 发表于: 17:12:58& IP:113.25.*.*
1、按照readme文档,将项目拷贝到webapps目录下。
2、运行tomcat,进入http://localhost:8080/cms/install/index.html,进行在线安装,配置数据库应用。配置如图所示。
3、tomcat下插入数据,完后出现jdbc错误,页面提示安装成功,重启tomcat,如图所示。
4、tomcat下插入数据完成最后出现这个如图所示的两个严重警告,页面提示安装成功,重启tomcat。
(3、4步骤为我部署两次的结果)
5、重启tomcat,运行后台程序地址....jeecms/login.do,输入用户名密码登录,界面提示页面不存在,没有找到页面的错误,一直刷新也不出现后台管理界面。但是访问前台展示没有任何问题,可看到首页、新闻、下载导航等画面。
错误信息:后台管理界面登录,找不到页面,访问页面不存在。
赞助商广告
级别: 版主
积分:73658
回复:61554
在线时长:303.64
2# & 发表于: 17:17:22& IP:220.14.*.*
两个严重警告不影向你使用
路漫漫其修远兮,吾将上下而求索!
级别: 版主
积分:73658
回复:61554
在线时长:303.64
3# & 发表于: 17:17:47& IP:220.14.*.*
是你后台地址输错了
路漫漫其修远兮,吾将上下而求索!
级别: 版主
积分:73658
回复:61554
在线时长:303.64
4# & 发表于: 17:18:06& IP:220.14.*.*
你使用的是什么版本?
路漫漫其修远兮,吾将上下而求索!
级别: 童生
在线时长:0
5# & 发表于: 17:23:02& IP:113.25.*.*
版本是2012的,地址不应该错误啊,如果地址错误,请给予指点。
级别: 童生
在线时长:0
6# & 发表于: 17:26:13& IP:113.25.*.*
这是访问后台登录的地址http://localhost:8080/cms/jeeadmin/jeecms/login.do,登录界面可以出来,可输入用户名及密码。这是部署路径\tomcat\webapps\cms\相关文件
级别: 版主
积分:73658
回复:61554
在线时长:303.64
7# & 发表于: 17:27:06& IP:220.14.*.*
你将ROOT文件夹复制放到tomcat下的webapps文件下吗?
路漫漫其修远兮,吾将上下而求索!
级别: 童生
在线时长:0
8# & 发表于: 17:29:16& IP:113.25.*.*
回复第3楼&&&&&&&&&&这是登录后错误显示
级别: 版主
积分:73658
回复:61554
在线时长:303.64
9# & 发表于: 17:30:23& IP:220.14.*.*
后台登录的地址http://localhost:8080/cms/jeeadmin/jeecms/index.do
路漫漫其修远兮,吾将上下而求索!
级别: 童生
在线时长:0
10# & 发表于: 17:36:35& IP:113.25.*.*
回复第7楼&&是的,项目没有放错位置。这个项目部署成功过一次,唯一的缺陷是别人通过IP地址不能访问,我就删了,重新部署,从这之后就没有成功过一次,不知道是咋回事。1362人阅读
1、tomcat7的环境变量配置部分略去。
2、通过命令行,跳转到tomcat7的bin目录下,然后 service.bat install,然后会出现安装成功的提示(The service 'Tomcat7' has been installed!)
  (注:vista和win7用户因为UAC得原因,可以去C:/windows/system32/下面找到cmd.exe,然后以管理员身份运行,然后重复2的操作即可成功,否则会出现错误提示:Failed
installing 'Tomcat7' service)
3、进入系统后台服务页面,会看见apache tomcat7的服务名,修改其启动方式就OK了
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:427933次
积分:5269
积分:5269
排名:第2388名
原创:57篇
转载:236篇
评论:49条
(1)(2)(6)(9)(2)(1)(3)(1)(2)(1)(6)(6)(5)(3)(19)(17)(12)(15)(3)(31)(12)(4)(10)(3)(17)(13)(4)(18)(14)(19)(28)(6)tomcat后台总是报这个错误,这是什么原因_百度知道
tomcat后台总是报这个错误,这是什么原因
提问者采纳
 你的应用加了身份认证,有人(或者你自己,呵呵)试图用manager用户登陆你的应用,密码输入错误5次或者5次以上(缺省是5次),就会在日志中记录警告信息,并锁定并禁止该用户的进一步登陆。​  以提醒你可能有人恶意猜测你的管理员密码。是tomcat为了阻止brute-force攻击(基于密码加密的暴力破解法)的安全策略。登陆用户名和密码在conf/tomcat-users.xml中配置
其他类似问题
为您推荐:
tomcat的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 tomcat是什么服务器 的文章

 

随机推荐