Tomcat异常错误

记一篇不知名的错误,在我将一个web项目放到客户服务器上之后,Tomcat虽然启动成功,但是出现非常令人无奈的效果:只在项目启动的一段时间内可以访问,过了一段时间之后就会出现类似休眠的状态,必须人为远程登录服务器才可以重启Tomcat才可以,关键是哪里都不报错,这个是真的让我很无奈,一度以为是服务器的原因,后来没办法突然想起来查看一下Tomcat启动日志,果然,Tomcat启动的时候报错了,但是并不影响项目的运行,以下为日志信息:

22-Oct-2018 09:02:52.898 信息 [http-nio-2000-exec-85] org.apache.coyote.http11.Http11Processor.service Error parsing HTTP request header
 Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
 java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens
	at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:426)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:687)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:748)

22-Oct-2018 09:02:52.898 信息 [http-nio-2000-exec-88] org.apache.coyote.http11.Http11Processor.service Error parsing HTTP request header
 Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
 java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens
	at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:426)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:687)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:748)

解决办法:在Tomcat的server.xml配置文件中加入这么一段话:

<Connector port="2000" protocol="org.apache.coyote.http11.Http11Protocol"
               connectionTimeout="20000"
               redirectPort="8443" 
			   maxHttpHeaderSize="8192"
		       maxThreads="1000"
			   minSpareThreads="100"
     		   maxSpareThreads="200"
     	   	   acceptCount="1000"
               maxConnections="1000"
               keepAliveTimeout="15000"
               maxKeepAliveRequests="1"
               tcpNoDelay="true"
               enableLookups="false"
               URIEncoding="UTF-8"/>

在原有基础上添加即可,有人告诉我只添加maxHttpHeaderSize="8192"一句话即可,可是我怕,担心再出问题,直接一套加上来,保存之后重启Tomcat,然后再去查看日志信息,终于不报错了,万事大吉,今天启动试试明天能不能继续访问吧,如果能说明我的解决措施没问题,如果不能,继续改。
这是昨天写的文章,今天又上去试了一下,终于不死掉了,万幸。

猜你喜欢

转载自blog.csdn.net/single_cong/article/details/83273802
今日推荐