jstack 분석 관련 질문

ganzboy의 이미지

현재 운영중인 서버에서 CPU 사용률 이슈가 있어서 질문 드려봅니다.

서버의 CPU가 평소에는 20~30% 대로 안정적입니다.
하지만 서버에 접속이 몰릴경우에는 90% 이상까지도 올라가는 경우가 있습니다.
이후, 다시 한가한 시간이 되면 20~30% 대로 내려가긴 합니다.
그런데 종종 한가한 시간에도 100%를 치는 경우가 있어서 확인해보니
cpu 사용률의 us 는 20~30%인데 sy영역이 나머지 %를 차지하고 있어서 도합 100%로 나타나고 있었습니다.
jstack 로 덤프를 떠서 cpu 사용률이 높은걸 확인해보니

첫번쨰
"DefaultUDPTransportMapping_IP/162" daemon prio=10 tid=0x00007ff0e01c7000 nid=0x645c runnable [0x00007ff0befee000]
java.lang.Thread.State: RUNNABLE
at java.net.PlainDatagramSocketImpl.receive0(Native Method)
- locked <0x000000076ad7c110> (a java.net.PlainDatagramSocketImpl)
at java.net.AbstractPlainDatagramSocketImpl.receive(AbstractPlainDatagramSocketImpl.java:145)
- locked <0x000000076ad7c110> (a java.net.PlainDatagramSocketImpl)
at java.net.DatagramSocket.receive(DatagramSocket.java:815)
- locked <0x000000077b605e98> (a java.net.DatagramPacket)
- locked <0x000000076ad86580> (a java.net.DatagramSocket)
at org.snmp4j.transport.DefaultUdpTransportMapping$ListenThread.run(DefaultUdpTransportMapping.java:403)
at java.lang.Thread.run(Thread.java:748)

Locked ownable synchronizers:
- None

두번째
"com.UDPMonitor" daemon prio=10 tid=0x00007ff0a4008000 nid=0x645b runnable [0x00007ff0bf0ef000]
java.lang.Thread.State: RUNNABLE
at java.net.PlainDatagramSocketImpl.receive0(Native Method)
- locked <0x000000076ad7c1f0> (a java.net.PlainDatagramSocketImpl)
at java.net.AbstractPlainDatagramSocketImpl.receive(AbstractPlainDatagramSocketImpl.java:145)
- locked <0x000000076ad7c1f0> (a java.net.PlainDatagramSocketImpl)
at java.net.DatagramSocket.receive(DatagramSocket.java:815)
- locked <0x000000076b0b8248> (a java.net.DatagramPacket)
- locked <0x000000076ad86610> (a java.net.DatagramSocket)
at com.UDPMonitor.inWhile(TR069_UDPMonitor.java:205)
at com.AThread.run(AThread.java:171)
at java.lang.Thread.run(Thread.java:748)

Locked ownable synchronizers:
- None

세번째

"http-nio-IP-8443-exec-2311" daemon prio=10 tid=0x00007ff10476c800 nid=0x715a waiting for monitor entry [0x00007fef08e8d000]
java.lang.Thread.State: BLOCKED (on object monitor)
at sun.security.util.MemoryCache.put(Cache.java:353)
- waiting to lock <0x00000007662eeb30> (a sun.security.util.MemoryCache)
at sun.security.ssl.SSLSessionContextImpl.put(SSLSessionContextImpl.java:183)
at sun.security.ssl.ServerHandshaker.clientFinished(ServerHandshaker.java:1756)
at sun.security.ssl.ServerHandshaker.processMessage(ServerHandshaker.java:317)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:972)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:901)
at sun.security.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:996)
- locked <0x000000075e98c338> (a sun.security.ssl.SSLEngineImpl)
at sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:877)
at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:747)
- locked <0x000000075e996180> (a java.lang.Object)
at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624)
at org.apache.tomcat.util.net.SecureNioChannel.handshakeUnwrap(SecureNioChannel.java:350)
at org.apache.tomcat.util.net.SecureNioChannel.handshake(SecureNioChannel.java:209)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1732)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1715)
- locked <0x00000007981670f8> (a org.apache.tomcat.util.net.SecureNioChannel)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)

Locked ownable synchronizers:
- <0x00000007697a2398> (a java.util.concurrent.ThreadPoolExecutor$Worker)

이런게 있는데

첫번째는 SNMP Trap를 수신하기 위해 열어놓은 포트고,
두번째는 홀펀칭을 위해 UDP 패킷을 수신하기 위해 열어놓은 포트입니다.
세번째는 HTTPS TLS1.2 (TR069 Inform) 패킷을 수신하는 8443포트입니다.
저 세두부분이 CPU 사용률과 관련이 있을까요?

아니면 CPU 사용률(시스템영역이 사용하는 CPU 사용률)이 증가하는 원인에 대해서 참고해볼만한 내용이 있을까요?

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.