2017-04-21 4 views
1

SonarQube가 포함 된 도커 컨테이너를 실행하려고합니다.sonarqube로 도커 메모리 누수가 발생했습니다.

빌드 컨테이너를 만들었 으면 아래 명령을 실행하여 컨테이너를 실행했습니다. 처음 몇 시간 동안은 괜찮아 보입니다. (up 상태가 docker ps -a 인 것을 알 수 있습니다.)하지만 자동으로 종료됩니다.

내가 입력 한 명령과 같은 ...

docker run -d --name sonarqube 
    -p 9000:9000 -p 9092:9092 
    -e SONARQUBE_JDBC_USERNAME=sonar 
    -e SONARQUBE_JDBC_PASSWORD=sonar 
    -e SONARQUBE_JDBC_URL="jdbc:mysql://111.222.33.444:3306/sonar?characterEncoding=utf8&useUnicode=true&rewriteBatchedStatements=true" 
    sonarqube 

그리고 따라 자동 종료의 주요 원인이 memory leak처럼 보인다, 오류 로그 모든 후

2017.04.21 06:39:37 WARN web[][o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [elasticsearch[Pip the Troll][[timer]]] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: 
java.lang.Thread.sleep(Native Method) 
org.elasticsearch.threadpool.ThreadPool$EstimatedTimeThread.run(ThreadPool.java:747) 
2017.04.21 06:39:37 WARN web[][o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [elasticsearch[Pip the Troll][scheduler][T#1]] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: 
sun.misc.Unsafe.park(Native Method) 
java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078) 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093) 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809) 
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
java.lang.Thread.run(Thread.java:745) 
2017.04.21 06:39:37 WARN web[][o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [elasticsearch[Pip the Troll][transport_client_worker][T#1]{New I/O worker #1}] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: 
sun.nio.ch.EPollArrayWrapper.epollWait(Native Method) 
sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269) 
sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93) 
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86) 
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97) 
org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:68) 
org.jboss.netty.channel.socket.nio.AbstractNioSelector.select(AbstractNioSelector.java:434) 
org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:212) 
org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89) 
org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178) 
org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) 
org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
java.lang.Thread.run(Thread.java:745) 
2017.04.21 06:39:37 WARN web[][o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [elasticsearch[Pip the Troll][transport_client_worker][T#2]{New I/O worker #2}] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: 
sun.nio.ch.EPollArrayWrapper.epollWait(Native Method) 
sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269) 
sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93) 
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86) 
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97) 
org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:68) 
org.jboss.netty.channel.socket.nio.AbstractNioSelector.select(AbstractNioSelector.java:434) 
org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:212) 
org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89) 
org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178) 
org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) 
org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
java.lang.Thread.run(Thread.java:745) 
2017.04.21 06:39:37 WARN web[][o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [elasticsearch[Pip the Troll][transport_client_worker][T#3]{New I/O worker #3}] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: 
sun.nio.ch.EPollArrayWrapper.epollWait(Native Method) 
sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269) 
sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93) 
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86) 
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97) 
org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:68) 
org.jboss.netty.channel.socket.nio.AbstractNioSelector.select(AbstractNioSelector.java:434) 
org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:212) 
org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89) 
org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178) 
org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) 
org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
java.lang.Thread.run(Thread.java:745) 

입니다. 이 문제를 어떻게 해결할 수 있습니까?

FYI, JDBC 정보없이 잘 작동합니다.

================= 편집 ==================

어쩌면 내가 더 많은 정보를 제공한다 이 문제를 해결할 수 있습니다. 내가 docker run 즉시 docker logs sonarqube를 입력하면

[[email protected] ice]# docker logs sonarqube 
01:00:46.930 [main] WARN org.sonar.application.JdbcSettings - JDBC URL is recommended to have the property 'useConfigs=maxPerformance' 
2017.04.24 01:00:47 INFO app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /opt/sonarqube/temp 
2017.04.24 01:00:47 INFO app[][o.s.p.m.JavaProcessLauncher] Launch process[es]: /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java -Djava.awt.headless=true -Xmx1G -Xms256m -Xss256k -Djna.nosys=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -Djava.io.tmpdir=/opt/sonarqube/temp -javaagent:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/management-agent.jar -cp ./lib/common/*:./lib/search/* org.sonar.search.SearchServer /opt/sonarqube/temp/sq-process7897977644818879465properties 
2017.04.24 01:00:47 INFO es[][o.s.p.ProcessEntryPoint] Starting es 
2017.04.24 01:00:47 INFO es[][o.s.s.EsSettings] Elasticsearch listening on /127.0.0.1:9001 
2017.04.24 01:00:47 INFO es[][o.elasticsearch.node] [sonarqube] version[2.4.4], pid[45], build[fcbb46d/2017-01-03T11:33:16Z] 
2017.04.24 01:00:47 INFO es[][o.elasticsearch.node] [sonarqube] initializing ... 
2017.04.24 01:00:47 INFO es[][o.e.plugins] [sonarqube] modules [], plugins [], sites [] 
2017.04.24 01:00:47 INFO es[][o.elasticsearch.env] [sonarqube] using [1] data paths, mounts [[/opt/sonarqube/data (/dev/mapper/centos-root)]], net usable_space [7gb], net total_space [49.9gb], spins? [possibly], types [xfs] 
2017.04.24 01:00:47 INFO es[][o.elasticsearch.env] [sonarqube] heap size [989.8mb], compressed ordinary object pointers [true] 
2017.04.24 01:00:49 INFO es[][o.elasticsearch.node] [sonarqube] initialized 
2017.04.24 01:00:49 INFO es[][o.elasticsearch.node] [sonarqube] starting ... 
2017.04.24 01:00:49 INFO es[][o.e.transport] [sonarqube] publish_address {127.0.0.1:9001}, bound_addresses {127.0.0.1:9001} 
2017.04.24 01:00:49 INFO es[][o.e.discovery] [sonarqube] sonarqube/GPO7RRqHR8a8tfu1KfgVtw 

그러나 몇 초 후

이 오류가 발생하고 종료 ... 같은 는 로그가 보인다. 첫 번째 오류는 ElasticSearch과 관련된 것입니다.

2017.04.24 01:00:52 INFO es[][o.elasticsearch.node] [sonarqube] started 
2017.04.24 01:00:52 INFO es[][o.e.gateway] [sonarqube] recovered [0] indices into cluster_state 
2017.04.24 01:00:52 INFO app[][o.s.p.m.Monitor] Process[es] is up 
2017.04.24 01:00:52 INFO app[][o.s.p.m.JavaProcessLauncher] Launch process[web]: /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError -Djava.security.egd=file:/dev/./urandom -Djava.io.tmpdir=/opt/sonarqube/temp -javaagent:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/management-agent.jar -cp ./lib/common/*:./lib/server/*:/opt/sonarqube/lib/jdbc/mysql/mysql-connector-java-5.1.39.jar org.sonar.server.app.WebServer /opt/sonarqube/temp/sq-process8670082336569494309properties 
2017.04.24 01:00:53 INFO web[][o.s.p.ProcessEntryPoint] Starting web 
2017.04.24 01:00:53 INFO web[][o.a.t.u.n.NioSelectorPool] Using a shared selector for servlet write/read 
2017.04.24 01:00:54 INFO web[][o.e.plugins] [Immortus] modules [], plugins [], sites [] 
2017.04.24 01:00:54 INFO web[][o.s.s.e.EsClientProvider] Connected to local Elasticsearch: [127.0.0.1:9001] 
2017.04.24 01:00:54 INFO web[][o.s.s.p.LogServerVersion] SonarQube Server/6.3.0.19869/43ea4f4c43aa89d4c435017f86d0da254e115e6b 
2017.04.24 01:00:54 INFO web[][o.sonar.db.Database] Create JDBC data source for jdbc:mysql://125.131.88.156:3306/sonar?characterEncoding=utf8&useUnicode=true&rewriteBatchedStatements=true 
2017.04.24 01:00:55 ERROR web[][o.a.c.c.C.[.[.[/]] Exception sending context initialized event to listener instance of class org.sonar.server.platform.web.PlatformServletContextListener 
org.sonar.api.utils.MessageException: Unsupported mysql version: 5.5. Minimal supported version is 5.6. 
2017.04.24 01:00:55 ERROR web[][o.a.c.c.StandardContext] One or more listeners failed to start. Full details will be found in the appropriate container log file 
2017.04.24 01:00:55 ERROR web[][o.a.c.c.StandardContext] Context [] startup failed due to previous errors 
2017.04.24 01:00:55 WARN web[][o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [elasticsearch[Immortus][[timer]]] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: 
java.lang.Thread.sleep(Native Method) 
org.elasticsearch.threadpool.ThreadPool$EstimatedTimeThread.run(ThreadPool.java:747) 
2017.04.24 01:00:55 WARN web[][o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [elasticsearch[Immortus][scheduler][T#1]] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: 
sun.misc.Unsafe.park(Native Method) 
java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078) 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093) 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809) 
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
java.lang.Thread.run(Thread.java:745) 
2017.04.24 01:00:55 WARN web[][o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [elasticsearch[Immortus][transport_client_worker][T#1]{New I/O worker #1}] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: 
sun.nio.ch.EPollArrayWrapper.epollWait(Native Method) 
sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269) 
sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93) 
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86) 
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97) 
org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:68) 
org.jboss.netty.channel.socket.nio.AbstractNioSelector.select(AbstractNioSelector.java:434) 
org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:212) 
org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89) 
org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178) 
org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) 
org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
java.lang.Thread.run(Thread.java:745) 

저는 JDBC URL이 괜찮아 보입니다. sqllite로 데이터베이스에 액세스 할 수 있습니다.

내 오류에 답변 해 주셔서 감사합니다.

+0

이러한 오류는 시작하는 동안 포함 된 Tomcat에서 SonarQube 웹 응용 프로그램의 초기 충돌로 인해 발생합니다. 로그의 앞부분을보고 충돌의 원인을 찾으십시오 (대부분 jdbc 설정이 잘못됨) –

+0

Thanks @ Seb-SonarSourceTeam. 나는 이전의 로그를 조사 할 것이다. 괜찮으 시다면 질문을 하나 더 드릴까요? jdbc 옵션'characterEncoding','useUnicode','rewriteBatchStatements'는 항상 필요합니까? –

+0

@ Seb-SonarSourceTeam 몇 가지 추가 정보를 추가합니다. 그걸 확인해 줄래? 감사! –

답변

0

내 데이터베이스 시스템 형식 MariaDB ver.10.1.22를 MySQL ver.5.7로 변경했습니다. 이 문제에 대한 게시물이 있지만 아직 해결되지 않은 것으로 보입니다. 현재 Sonarqube는 MariaDB의 일부 버전에서는 사용할 수 없습니다.

0

데이터베이스 연결 문제 일 수 있습니다. 주소에 오타가 있는지 확인하고 자격 증명이 올바른지 확인하십시오.