2017-02-06 1 views
1

Tomcat에 다른 패키지 공급자 (bitnami -> official debian)로 전환 한 후 문제가 있습니다. 누군가가 (악의적 인 의도로)의 요청으로 우리의 서버를 치는 것 같다 :Tomcat 8 : 100 % cpu 사용

59.111.29.6 - - [04/Feb/2017:16:17:58 +0000] "-" 400 - 

여기서 "-"증가 된 CPU 사용량과 일치

Feb 04, 2017 4:17:58 PM org.apache.coyote.http11.AbstractHttp11Processor process 
INFO: Error parsing HTTP request header 
Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level. 

과 일치 요청 경로입니다 . 서버 상태는 다음을 보여줍니다

<h1>JVM</h1><p> Free memory: 355.58 MB Total memory: 833.13 MB Max memory: 2900.00 MB</p><table border="0"><thead><tr><th>Memory Pool</th><th>Type</th><th>Initial</th><th>Total</th><th>Maximum</th><th>Used</th></tr></thead><tbody><tr><td>Eden Space</td><td>Heap memory</td><td>34.12 MB</td><td>229.93 MB</td><td>800.00 MB</td><td>12.47 MB (1%)</td></tr><tr><td>Survivor Space</td><td>Heap memory</td><td>4.25 MB</td><td>28.68 MB</td><td>100.00 MB</td><td>2.22 MB (2%)</td></tr><tr><td>Tenured Gen</td><td>Heap memory</td><td>85.37 MB</td><td>574.51 MB</td><td>2000.00 MB</td><td>462.84 MB (23%)</td></tr><tr><td>Code Cache</td><td>Non-heap memory</td><td>2.43 MB</td><td>7.00 MB</td><td>48.00 MB</td><td>6.89 MB (14%)</td></tr><tr><td>Perm Gen</td><td>Non-heap memory</td><td>128.00 MB</td><td>128.00 MB</td><td>512.00 MB</td><td>52.57 MB (10%)</td></tr></tbody></table><h1>"http-nio-8080"</h1><p> Max threads: 200 Current thread count: 10 Current thread busy: 3 Keeped alive sockets count: 1<br> Max processing time: 301 ms Processing time: 71.068 s Request count: 10021 Error count: 2996 Bytes received: 0.00 MB Bytes sent: 3.18 MB</p><table border="0"><tr><th>Stage</th><th>Time</th><th>B Sent</th><th>B Recv</th><th>Client (Forwarded)</th><th>Client (Actual)</th><th>VHost</th><th>Request</th></tr><tr><td><strong>F</strong></td><td>1486364749526 ms</td><td>0 KB</td><td>0 KB</td><td>185.40.4.169</td><td>185.40.4.169</td><td nowrap>?</td><td nowrap class="row-left">? ? ?</td></tr><tr><td><strong>F</strong></td><td>1486364749526 ms</td><td>0 KB</td><td>0 KB</td><td>185.40.4.169</td><td>185.40.4.169</td><td nowrap>?</td><td nowrap class="row-left">? ? ?</td></tr><tr><td><strong>R</strong></td><td>?</td><td>?</td><td>?</td><td>?</td><td>?</td><td>?</td></tr><tr><td><strong>S</strong></td><td>36 ms</td><td>0 KB</td><td>0 KB</td><td>106.51.39.130</td><td>106.51.39.130</td><td nowrap>104.197.119.177</td><td nowrap class="row-left">GET /manager/status?org.apache.catalina.filters.CSRF_NONCE=072F9F6884D94C5D7B30D1D34CE61BD9 HTTP/1.1</td></tr><tr><td><strong>R</strong></td><td>?</td><td>?</td><td>?</td><td>?</td><td>?</td><td>?</td></tr></table><p>P: Parse and prepare request S: Service F: Finishing R: Ready K: Keepalive</p><hr size="1" noshade="noshade"> 
 
<center><font size="-1" color="#525D76">

는 그래서 메모리 문제의 부족은 아닌 것 같아 (하지만 잘못 될 수있다).

내가 직면 한 문제를 피하려면 누군가가 먼저 요청을하지 않도록하려면 어떻게해야합니까? 바람둥이에서 실행되는 webapp은 HTTP 메소드를 GET/POST로 제한하지만, 바람둥이를 제한하기 위해 전체적으로 어떻게 구성 할 수 있습니까?

답변

0

내가 서버의 스레드 덤프 얻기 위해 조언을 것입니다 :

jps -l

  • 사용하여 스레드 덤프를 가져옵니다 :

    • 사용 Tomcat 서버의 PID를 격리 된 것을 :

    kill -3 PID 또는

    • jstack PID 그런 다음 스레드 덤프를 확인, 당신은 내가 [여기] 덤프를 가지고있는 호깅 스레드
+0

의 이유를 찾아야한다 (http://pastebin.com/fAZt1GRF). 어떻게 해석 할 수 있습니까? – njLT

+0

JDK 문제와 관련이 있는지 확신 할 수 없습니다. https://github.com/netty/netty/issues/327 sun.nio.ch.EPollArrayWrapper.poll (EPollArrayWrapper.java:269) –