Browse Source

add t-io for test (#3855)

* add test for t-io

* update README.md

* update README.md

* add t-io

* add t-io.dockerfile

* delete t-io test

* add t-io test once more

* update t-io to 3.0.2

* 去掉没用的代码

* delete some useless code

* Optimization parameters

* delete useless jar
tywo45 7 years ago
parent
commit
e7d650d2fc

+ 1 - 0
.travis.yml

@@ -67,6 +67,7 @@ env:
      - "TESTDIR=Java/spark"
      - "TESTDIR=Java/spark"
      - "TESTDIR=Java/spring"
      - "TESTDIR=Java/spring"
      - "TESTDIR=Java/tapestry"
      - "TESTDIR=Java/tapestry"
+     - "TESTDIR=Java/t-io"
      - "TESTDIR=Java/undertow"
      - "TESTDIR=Java/undertow"
      - "TESTDIR=Java/undertow-jersey"
      - "TESTDIR=Java/undertow-jersey"
      - "TESTDIR=Java/vertx"
      - "TESTDIR=Java/vertx"

+ 1 - 0
frameworks/Java/t-io/.gitignore

@@ -0,0 +1 @@
+/target/

+ 20 - 0
frameworks/Java/t-io/README.md

@@ -0,0 +1,20 @@
+# t-io Benchmarking Test
+
+This is the t-io portion of a [benchmarking test suite](../) comparing a variety of web development platforms.
+
+## Controller
+
+These implementations use the t-io's controller.
+* [Plaintext test source](src/main/java/org/tio/http/server/benchmark/controller/TestController.java)
+* [JSON test source](src/main/java/org/tio/http/server/benchmark/controller/TestController.java)
+
+
+## Versions
+3.0.2.v20180612-RELEASE (https://gitee.com/tywo45/t-io)
+
+## Test URLs
+
+All implementations use the same URLs.
+
+ * Plaintext - `http://localhost:8080/plaintext`
+ * JSON - `http://localhost:8080/json`

+ 38 - 0
frameworks/Java/t-io/_cmd.bat

@@ -0,0 +1,38 @@
+echo off
+echo -
+echo #下载源代码
+echo mvn dependency:sources
+echo -
+
+echo #下载源代码jar。 -DdownloadJavadocs=true 下载javadoc包
+echo -DdownloadSources=true
+echo -
+echo -
+
+
+
+echo #将jar解压出来
+echo mvn dependency:unpack-dependencies
+echo -
+
+echo #将jar拷贝到某一目录中(所有jar在同一目录中)
+echo mvn dependency:copy-dependencies -Dmdep.useRepositoryLayout=false
+echo -
+
+echo #将jar按仓库目录拷贝出来()
+echo mvn dependency:copy-dependencies -Dmdep.useRepositoryLayout=true -Dmdep.copyPom=true
+echo -
+echo -
+
+
+
+echo #检查版本更新
+echo mvn versions:display-dependency-updates
+echo -
+
+echo #版本变更
+echo mvn versions:set -DnewVersion=4.0.0-talent-999
+echo -
+
+
+call cmd

+ 24 - 0
frameworks/Java/t-io/benchmark_config.json

@@ -0,0 +1,24 @@
+{
+  "framework": "t-io",
+  "tests": [{
+    "default": {
+      "json_url": "/json",
+      "plaintext_url": "/plaintext",
+      "port": 8080,
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "None",
+      "framework": "None",
+      "language": "Java",
+      "flavor": "None",
+      "orm": "Raw",
+      "platform": "t-io",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "tio-http-server",
+      "notes": "tio-http-server",
+      "versus": "t-io"
+    }
+  }]
+}

+ 4 - 0
frameworks/Java/t-io/install.bat

@@ -0,0 +1,4 @@
+call mvn clean install
+
+
+pause

+ 108 - 0
frameworks/Java/t-io/pom.xml

@@ -0,0 +1,108 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<artifactId>tio-http-server-benchmark</artifactId>
+	<name>${project.artifactId}</name>
+
+	<parent>
+		<groupId>org.t-io</groupId>
+		<artifactId>tio-http-parent</artifactId>
+		<version>3.0.2.v20180612-RELEASE</version>
+	</parent>
+	
+	<properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <main.class>org.tio.http.server.benchmark.TioBenchmarkStarter</main.class>
+    </properties>
+
+	<dependencies>
+
+		<dependency>
+			<groupId>org.t-io</groupId>
+			<artifactId>tio-http-server</artifactId>
+			<!-- 因为没用集群,所以可以把redisson依赖的netty全部排除掉 -->
+			<exclusions>
+				<exclusion>
+					<groupId>io.netty</groupId>
+					<artifactId>netty-common</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>io.netty</groupId>
+					<artifactId>netty-buffer</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>io.netty</groupId>
+					<artifactId>netty-resolver-dns</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>io.netty</groupId>
+					<artifactId>netty-codec</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>io.netty</groupId>
+					<artifactId>netty-handler</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>io.netty</groupId>
+					<artifactId>netty-transport</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+
+		<!-- slf4j-logback绑定 -->
+		<dependency>
+			<groupId>ch.qos.logback</groupId>
+			<artifactId>logback-classic</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>ch.qos.logback</groupId>
+			<artifactId>logback-access</artifactId>
+		</dependency>
+
+
+		<!-- redirect apache commons logging -->
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>jcl-over-slf4j</artifactId>
+		</dependency>
+		<!-- redirect jdk util logging -->
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>jul-to-slf4j</artifactId>
+		</dependency>
+		<!-- redirect log4j -->
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>log4j-over-slf4j</artifactId>
+		</dependency>
+	</dependencies>
+
+	<build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifest>
+                            <mainClass>${main.class}</mainClass>
+                        </manifest>
+                    </archive>
+                    <descriptorRefs>
+                        <descriptorRef>jar-with-dependencies</descriptorRef>
+                    </descriptorRefs>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>make-assembly</id> <!-- this is used for inheritance merges -->
+                        <phase>package</phase> <!-- bind to the packaging phase -->
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 21 - 0
frameworks/Java/t-io/src/main/java/org/tio/http/server/benchmark/TioBenchmarkStarter.java

@@ -0,0 +1,21 @@
+package org.tio.http.server.benchmark;
+
+import java.io.IOException;
+
+import org.tio.http.server.benchmark.init.HttpServerInit;
+
+/**
+ * @author tanyaowu 
+ * 2018年6月9日 上午10:30:45
+ */
+public class TioBenchmarkStarter {
+
+	/**
+	 * @param args
+	 * @author tanyaowu
+	 * @throws IOException
+	 */
+	public static void main(String[] args) throws Exception {
+		HttpServerInit.init();
+	}
+}

+ 27 - 0
frameworks/Java/t-io/src/main/java/org/tio/http/server/benchmark/controller/TestController.java

@@ -0,0 +1,27 @@
+package org.tio.http.server.benchmark.controller;
+
+import org.tio.http.common.HttpRequest;
+import org.tio.http.common.HttpResponse;
+import org.tio.http.server.annotation.RequestPath;
+import org.tio.http.server.benchmark.model.Message;
+import org.tio.http.server.util.Resps;
+
+/**
+ * @author tanyaowu
+ * 2017年6月29日 下午7:53:59
+ */
+@RequestPath(value = "/")
+public class TestController {
+
+	private static final String HELLO_WORLD = "Hello, World!";
+
+	@RequestPath(value = "json")
+	public HttpResponse json(HttpRequest request) throws Exception {
+		return Resps.json(request, new Message(HELLO_WORLD));
+	}
+
+	@RequestPath(value = "plaintext")
+	public HttpResponse plaintext(HttpRequest request) throws Exception {
+		return Resps.txt(request, HELLO_WORLD);
+	}
+}

+ 38 - 0
frameworks/Java/t-io/src/main/java/org/tio/http/server/benchmark/init/HttpServerInit.java

@@ -0,0 +1,38 @@
+package org.tio.http.server.benchmark.init;
+
+import org.tio.http.common.HttpConfig;
+import org.tio.http.common.handler.HttpRequestHandler;
+import org.tio.http.server.HttpServerStarter;
+import org.tio.http.server.benchmark.controller.TestController;
+import org.tio.http.server.handler.DefaultHttpRequestHandler;
+import org.tio.http.server.mvc.Routes;
+import org.tio.server.ServerGroupContext;
+
+/**
+ * @author tanyaowu
+ * 2017年7月19日 下午4:59:04
+ */
+public class HttpServerInit {
+	public static HttpConfig httpConfig;
+
+	public static HttpRequestHandler requestHandler;
+
+	public static HttpServerStarter httpServerStarter;
+	
+	public static ServerGroupContext serverGroupContext;
+
+	public static void init() throws Exception {
+		httpConfig = new HttpConfig(8080, null, null, null);
+		httpConfig.setUseSession(false);
+
+		String[] scanPackages = new String[] { TestController.class.getPackage().getName() };
+		Routes routes = new Routes(scanPackages);
+
+		DefaultHttpRequestHandler requestHandler = new DefaultHttpRequestHandler(httpConfig, routes);
+
+		httpServerStarter = new HttpServerStarter(httpConfig, requestHandler);
+		serverGroupContext = httpServerStarter.getServerGroupContext();
+		serverGroupContext.setReadBufferSize(1024 * 60);
+		httpServerStarter.start();
+	}
+}

+ 17 - 0
frameworks/Java/t-io/src/main/java/org/tio/http/server/benchmark/model/Message.java

@@ -0,0 +1,17 @@
+package org.tio.http.server.benchmark.model;
+
+/**
+ * @author tanyaowu 
+ * 2018年6月9日 上午10:06:26
+ */
+public final class Message {
+	private final String message;
+
+	public Message(String message) {
+		this.message = message;
+	}
+
+	public String getMessage() {
+		return message;
+	}
+}

+ 0 - 0
frameworks/Java/t-io/src/main/resources/app.properties


+ 23 - 0
frameworks/Java/t-io/src/main/resources/logback.properties

@@ -0,0 +1,23 @@
+#http://logback.qos.ch/manual/configuration.html
+#<include resource="includedConfig.xml"/>  resource, file, url (被包含的文件需要满足一定格式)
+
+context.name=tio-http-server-benchmark
+
+log.dir=/logs/tio-http-server-benchmark
+
+rolling.policy.file.name.pattern=yyyy-MM-dd
+max.file.size=100MB
+max.history=50
+
+conversion.pattern=%m
+
+root.level=error
+
+app.package=org.tio.http
+app.level=error
+
+tio.package=org.tio
+tio.level=error
+
+talent.package=com.talent
+talent.level=error

+ 268 - 0
frameworks/Java/t-io/src/main/resources/logback.xml

@@ -0,0 +1,268 @@
+<configuration scan="true" scanPeriod="10 seconds" debug="true">
+	<property resource="logback.properties" />
+	
+	<contextName>${context.name}</contextName>                         <!-- 本项目的名字 -->
+   
+	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+		<encoder>
+			<pattern>${conversion.pattern}</pattern>
+		</encoder>
+	</appender>
+	
+	<!-- root file 日志 -->
+	<appender name="root-file-error"
+		class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${log.dir}/error.log</file>
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<fileNamePattern>${log.dir}/error.%d{${rolling.policy.file.name.pattern}}.%i.log.zip</fileNamePattern>
+			<timeBasedFileNamingAndTriggeringPolicy
+				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<maxFileSize>${max.file.size}</maxFileSize>
+			</timeBasedFileNamingAndTriggeringPolicy>
+			<maxHistory>${max.history}</maxHistory>
+		</rollingPolicy>
+		<encoder>
+			<pattern>${conversion.pattern}</pattern>
+		</encoder>
+		<filter class="ch.qos.logback.classic.filter.LevelFilter">   
+			<level>ERROR</level>   
+			<onMatch>ACCEPT</onMatch>   
+			<onMismatch>DENY</onMismatch>   
+		</filter> 
+	</appender>
+	<appender name="root-file-warn"
+		class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${log.dir}/warn.log</file>
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<fileNamePattern>${log.dir}/warn.%d{${rolling.policy.file.name.pattern}}.%i.log.zip</fileNamePattern>
+			<timeBasedFileNamingAndTriggeringPolicy
+				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<maxFileSize>${max.file.size}</maxFileSize>
+			</timeBasedFileNamingAndTriggeringPolicy>
+			<maxHistory>${max.history}</maxHistory>
+		</rollingPolicy>
+		<encoder>
+			<pattern>${conversion.pattern}</pattern>
+		</encoder>
+		<filter class="ch.qos.logback.classic.filter.LevelFilter">   
+			<level>warn</level>   
+			<onMatch>ACCEPT</onMatch>   
+			<onMismatch>DENY</onMismatch>   
+		</filter> 
+	</appender>
+	<appender name="root-file-info"
+		class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${log.dir}/info.log</file>
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<fileNamePattern>${log.dir}/info.%d{${rolling.policy.file.name.pattern}}.%i.log.zip</fileNamePattern>
+			<timeBasedFileNamingAndTriggeringPolicy
+				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<maxFileSize>${max.file.size}</maxFileSize>
+			</timeBasedFileNamingAndTriggeringPolicy>
+			<maxHistory>${max.history}</maxHistory>
+		</rollingPolicy>
+		<encoder>
+			<pattern>${conversion.pattern}</pattern>
+		</encoder>
+		<filter class="ch.qos.logback.classic.filter.LevelFilter">   
+			<level>INFO</level>   
+			<onMatch>ACCEPT</onMatch>   
+			<onMismatch>DENY</onMismatch>   
+		</filter> 
+	</appender>
+	<appender name="root-file-debug"
+		class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${log.dir}/debug.log</file>
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<fileNamePattern>${log.dir}/debug.%d{${rolling.policy.file.name.pattern}}.%i.log.zip</fileNamePattern>
+			<timeBasedFileNamingAndTriggeringPolicy
+				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<maxFileSize>${max.file.size}</maxFileSize>
+			</timeBasedFileNamingAndTriggeringPolicy>
+			<maxHistory>${max.history}</maxHistory>
+		</rollingPolicy>
+		<encoder>
+			<pattern>${conversion.pattern}</pattern>
+		</encoder>
+		<filter class="ch.qos.logback.classic.filter.LevelFilter">   
+			<level>debug</level>   
+			<onMatch>ACCEPT</onMatch>   
+			<onMismatch>DENY</onMismatch>   
+		</filter> 
+	</appender>
+	
+	<root level="${root.level}">
+		<appender-ref ref="root-file-error"/>
+		<appender-ref ref="root-file-warn"/>
+		<appender-ref ref="root-file-info"/>
+		<appender-ref ref="root-file-debug"/>
+		<appender-ref ref="console"/>
+	</root>
+	
+	<logger name="${app.package}" additivity="false">
+		<level value="${app.level}" />
+		<appender-ref ref="root-file-error" />
+		<appender-ref ref="root-file-warn" />
+		<appender-ref ref="root-file-info" />
+		<appender-ref ref="root-file-debug" />
+		<appender-ref ref="console"/>
+	</logger>
+	
+	<logger name="${tio.package}" additivity="false">
+		<level value="${tio.level}" />
+		<appender-ref ref="root-file-error" />
+		<appender-ref ref="root-file-warn" />
+		<appender-ref ref="root-file-info" />
+		<appender-ref ref="root-file-debug" />
+		<appender-ref ref="console"/>
+	</logger>
+	
+	<logger name="${talent.package}" additivity="false">
+		<level value="${talent.level}" />
+		<appender-ref ref="root-file-error" />
+		<appender-ref ref="root-file-warn" />
+		<appender-ref ref="root-file-info" />
+		<appender-ref ref="root-file-debug" />
+		<appender-ref ref="console"/>
+	</logger>
+	
+	
+	
+	
+	<!-- 跟踪客户端行为 -->
+	<appender name="tio-client-trace-log-appender" class="ch.qos.logback.classic.sift.SiftingAppender">
+		<discriminator>
+			<Key>tio_client</Key>
+			<DefaultValue>unknown</DefaultValue>
+		</discriminator>
+		
+		<sift>
+			<appender name="${tio_client}" class="ch.qos.logback.core.rolling.RollingFileAppender">
+				<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+					<fileNamePattern>${log.dir}/tio/client-trace/${tio_client}_%d{yyyyMMdd}.log</fileNamePattern>
+					<maxFileSize>20MB</maxFileSize>
+				</rollingPolicy>
+				<Append>false</Append>
+				<layout class="ch.qos.logback.classic.PatternLayout">
+					<pattern>%m%n</pattern>
+				</layout>
+			</appender>
+		</sift>
+	</appender>
+	
+	<logger name="tio-client-trace-log" additivity="false">
+		<level value="info"/>
+		<appender-ref ref="tio-client-trace-log-appender"/>
+	</logger>
+	
+
+
+
+
+
+
+
+
+	<!-- ip访问打印  -->
+	<appender name="tio-ip-trace-log-appender" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${log.dir}/ip.log</file>
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<fileNamePattern>${log.dir}/ip.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
+			<timeBasedFileNamingAndTriggeringPolicy
+				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<maxFileSize>${max.file.size}</maxFileSize>
+			</timeBasedFileNamingAndTriggeringPolicy>
+			<maxHistory>${max.history}</maxHistory>
+		</rollingPolicy>
+		<encoder>
+			<pattern>%d %m%n</pattern>
+		</encoder>
+	</appender>
+	<logger name="tio-ip-trace-log" additivity="false">
+		<level value="info"/>
+		<appender-ref ref="tio-ip-trace-log-appender"/>
+	</logger>
+	
+	<!-- chat日志打印  -->
+	<appender name="tio-chat-trace-log-appender" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${log.dir}/chat.log</file>
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<fileNamePattern>${log.dir}/chat.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
+			<timeBasedFileNamingAndTriggeringPolicy
+				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<maxFileSize>${max.file.size}</maxFileSize>
+			</timeBasedFileNamingAndTriggeringPolicy>
+			<maxHistory>${max.history}</maxHistory>
+		</rollingPolicy>
+		<encoder>
+			<pattern>%d%n %m%n</pattern>
+		</encoder>
+	</appender>
+	<logger name="tio-chat-trace-log" additivity="false">
+		<level value="info"/>
+		<appender-ref ref="tio-chat-trace-log-appender"/>
+	</logger>
+	
+	<!-- address日志打印  -->
+	<appender name="tio-address-trace-log-appender" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${log.dir}/address.log</file>
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<fileNamePattern>${log.dir}/address.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
+			<timeBasedFileNamingAndTriggeringPolicy
+				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<maxFileSize>${max.file.size}</maxFileSize>
+			</timeBasedFileNamingAndTriggeringPolicy>
+			<maxHistory>${max.history}</maxHistory>
+		</rollingPolicy>
+		<encoder>
+			<pattern>%d%n %m%n</pattern>
+		</encoder>
+	</appender>
+	<logger name="tio-address-trace-log" additivity="false">
+		<level value="info"/>
+		<appender-ref ref="tio-address-trace-log-appender"/>
+	</logger>
+	
+	<!-- userAgent 日志打印  -->
+	<appender name="tio-userAgent-trace-log-appender" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${log.dir}/userAgent.log</file>
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<fileNamePattern>${log.dir}/userAgent.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
+			<timeBasedFileNamingAndTriggeringPolicy
+				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<maxFileSize>${max.file.size}</maxFileSize>
+			</timeBasedFileNamingAndTriggeringPolicy>
+			<maxHistory>${max.history}</maxHistory>
+		</rollingPolicy>
+		<encoder>
+			<pattern>%m%n</pattern>
+		</encoder>
+	</appender>
+	<logger name="tio-userAgent-trace-log" additivity="false">
+		<level value="info"/>
+		<appender-ref ref="tio-userAgent-trace-log-appender"/>
+	</logger>
+	
+	<!-- ipblacklist ip黑名单  -->
+	<appender name="tio-ipblacklist-trace-log-appender" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${log.dir}/ipblacklist.log</file>
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<fileNamePattern>${log.dir}/ipblacklist.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
+			<timeBasedFileNamingAndTriggeringPolicy
+				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<maxFileSize>${max.file.size}</maxFileSize>
+			</timeBasedFileNamingAndTriggeringPolicy>
+			<maxHistory>${max.history}</maxHistory>
+		</rollingPolicy>
+		<encoder>
+			<pattern>%m%n</pattern>
+		</encoder>
+	</appender>
+	<logger name="tio-ipblacklist-trace-log" additivity="false">
+		<level value="info"/>
+		<appender-ref ref="tio-ipblacklist-trace-log-appender"/>
+	</logger>
+
+	
+
+</configuration>

BIN
frameworks/Java/t-io/src/test/java/新建日记本文档.jnt


+ 10 - 0
frameworks/Java/t-io/t-io.dockerfile

@@ -0,0 +1,10 @@
+FROM maven:3.5.3-jdk-10-slim as maven
+WORKDIR /t-io
+COPY pom.xml pom.xml
+COPY src src
+RUN mvn compile assembly:single -q
+
+FROM openjdk:10-jre-slim
+WORKDIR /t-io
+COPY --from=maven /t-io/target/tio-http-server-benchmark-3.0.2.v20180612-RELEASE.jar app.jar
+CMD ["java", "-XX:+UseNUMA", "-XX:+UseParallelGC", "-jar", "app.jar"]