Ver Fonte

版本 netty-30 升级, 增加启动参数设置 默认 maxdirm = 960M

jianghouwei há 6 anos atrás
pai
commit
f2bc9278b6

+ 5 - 3
pom.xml

@@ -51,10 +51,12 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter</artifactId>
         </dependency>
+
+        <!-- https://mvnrepository.com/artifact/io.netty/netty-all -->
         <dependency>
-            <groupId>io.netty</groupId>
-            <artifactId>netty-all</artifactId>
-            <version>4.1.15.Final</version>
+        <groupId>io.netty</groupId>
+        <artifactId>netty-all</artifactId>
+        <version>4.1.15.Final</version>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>

+ 1 - 1
src/bin/start.sh

@@ -1,4 +1,4 @@
 #!/bin/bash
-nohup java -Dspring.profiles.active=all -jar data-acceptance.jar > /dev/null 2>&1 &
+nohup java -Dspring.profiles.active=all  -XX:MaxDirectMemorySize=960M -jar data-acceptance.jar > /dev/null 2>&1 &
 
 

+ 59 - 0
src/main/java/com/tidecloud/dataacceptance/service/DirectMemoryReporterImpl.java

@@ -0,0 +1,59 @@
+package com.tidecloud.dataacceptance.service;
+
+import io.netty.util.internal.PlatformDependent;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+import org.springframework.util.ReflectionUtils;
+
+import javax.annotation.PostConstruct;
+import java.lang.reflect.Field;
+import java.util.Date;
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.concurrent.atomic.AtomicLong;
+
+
+/**
+ *   日志更新
+ */
+@Service
+public class DirectMemoryReporterImpl {
+
+	private static final int _ik = 1024;
+
+	private static final String BUSINESS_KEY = "netty_direct_memory";
+
+	private AtomicLong directMemory;
+	private Long maxDirectMemory;
+
+	private static Logger logger = LoggerFactory.getLogger(DirectMemoryReporterImpl.class);
+
+	@PostConstruct
+	public void init() {
+
+		try {
+			Field field = ReflectionUtils.findField(PlatformDependent.class, "DIRECT_MEMORY_COUNTER");
+			field.setAccessible(true);
+			directMemory = (AtomicLong) field.get(PlatformDependent.class);
+			Field field1 = ReflectionUtils.findField(PlatformDependent.class, "DIRECT_MEMORY_LIMIT");
+			field1.setAccessible(true);
+			maxDirectMemory = (Long) field1.get(PlatformDependent.class);
+		} catch (Exception e) {
+			logger.error(e.getMessage());
+		}
+
+		TimerTask timerTask = new TimerTask() {
+			@Override
+			public void run() {
+				System.out.println("task  run:" + new Date());
+				long m = directMemory.get() / _ik;
+				logger.error(BUSINESS_KEY + "maxDirectMemory==={}:{}K", maxDirectMemory/_ik, m);
+			}
+		};
+		Timer timer = new Timer();
+		//安排指定的任务在指定的时间开始进行重复的固定延迟执行。这里是每3秒执行一次
+		timer.schedule(timerTask, 10, 2000);
+	}
+
+}