浏览代码

[ci fw-only Java/act] update act to 1.0.7; act-ebean to 1.1.0; minor tune on multiple queri… (#2651)

* update act to 1.0.7; act-ebean to 1.1.0; minor tune on multiple queries test

* modify JVM parameter for ActFramework; make ActFramework tests display names more clear

* short display name for actframework db tests

* restrict maximum undertow worker thread to 256
Green Luo 8 年之前
父节点
当前提交
e074b14271

+ 3 - 3
frameworks/Java/act/benchmark_config.json

@@ -39,7 +39,7 @@
       "webserver": "None",
       "os": "Linux",
       "database_os": "Linux",
-      "display_name": "actframework-pgsql",
+      "display_name": "act-ebean-pgsql",
       "notes": "",
       "versus": "undertow"
     },
@@ -61,7 +61,7 @@
       "webserver": "None",
       "os": "Linux",
       "database_os": "Linux",
-      "display_name": "actframework-mysql",
+      "display_name": "act-ebean-mysql",
       "notes": "",
       "versus": "undertow"
     },
@@ -83,7 +83,7 @@
       "webserver": "None",
       "os": "Linux",
       "database_os": "Linux",
-      "display_name": "actframework-mongo",
+      "display_name": "act-morphia",
       "notes": "",
       "versus": "undertow"
     }

+ 10 - 4
frameworks/Java/act/pom.xml

@@ -7,18 +7,19 @@
 
     <groupId>com.techempower</groupId>
     <artifactId>actframework</artifactId>
-    <version>1.0.3</version>
-    <name>ActFramework sample project</name>
+    <version>1.0.4</version>
+    <name>ActFramework Test</name>
     <packaging>jar</packaging>
 
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-        <act.version>1.0.6</act.version>
+        <act.version>1.0.7</act.version>
         <act-morphia.version>1.0.3</act-morphia.version>
-        <act-ebean.version>1.0.4</act-ebean.version>
+        <act-ebean.version>1.1.0</act-ebean.version>
         <mysql.version>6.0.6</mysql.version>
         <postgres-jdbc.version>42.0.0</postgres-jdbc.version>
+        <HikariCP.version>2.6.1</HikariCP.version>
         <app.entry>com.techempower.act.AppEntry</app.entry>
     </properties>
 
@@ -53,6 +54,11 @@
             <artifactId>postgresql</artifactId>
             <version>${postgres-jdbc.version}</version>
         </dependency>
+        <dependency>
+            <groupId>com.zaxxer</groupId>
+            <artifactId>HikariCP</artifactId>
+            <version>${HikariCP.version}</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 19 - 7
frameworks/Java/act/run.sh

@@ -1,10 +1,22 @@
 #!/bin/bash
 
-if [ ! -f target/dist/start ]; then
-    mvn clean package
-    cd target/dist
-    unzip *.zip
-else
-    cd target/dist
+mvn -U clean package
+cd target/dist
+unzip *.zip
+
+
+APP_ENTRY=com.techempower.act.AppEntry
+
+DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+BASE=$DIR/target/dist
+if [[ $DIR == *"dist" ]]; then
+  BASE=$DIR
 fi
-./start
+CP=$BASE/classes:$BASE/lib/*
+echo
+echo CLASSPATH: $CP
+echo
+
+JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom -Xms1G -Xmx1G -Xss320k -XX:+UseNUMA -XX:+UseParallelGC -XX:+AggressiveOpts"
+
+java -server $JAVA_OPTS -Dapp.mode=prod -Dapp.nodeGroup=$GROUP -Dprofile=local -Dxio.worker_threads.max=256 -Dmongo.host=localhost -Dmysql.host=localhost -Dpgsql.host=localhost -cp "$CP" $APP_ENTRY

+ 2 - 2
frameworks/Java/act/setup.sh

@@ -19,6 +19,6 @@ echo
 echo CLASSPATH: $CP
 echo
 
-JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom -Dawt.useSystemAAFontSettings=on -server -Xms512m -Xmx2g"
+JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom -Xms1G -Xmx1G -Xss320k -XX:+UseNUMA -XX:+UseParallelGC -XX:+AggressiveOpts"
 
-java -server $JAVA_OPTS -Dapp.mode=prod -Dapp.nodeGroup=$GROUP -Dprofile=prod -Dmongo.host=${DBHOST} -Dmysql.host=${DBHOST} -Dpgsql.host=${DBHOST} -cp "$CP" $APP_ENTRY &
+java -server $JAVA_OPTS -Dapp.mode=prod -Dapp.nodeGroup=$GROUP -Dprofile=prod -Dxio.worker_threads.max=256 -Dmongo.host=${DBHOST} -Dmysql.host=${DBHOST} -Dpgsql.host=${DBHOST} -cp "$CP" $APP_ENTRY &

+ 1 - 1
frameworks/Java/act/src/assembly/pkg.xml

@@ -52,7 +52,7 @@ under the License.
       <directory>${project.basedir}/src/main/bin</directory>
       <outputDirectory></outputDirectory>
       <includes>
-        <include>start*</include>
+        <include>*</include>
       </includes>
       <filtered>true</filtered>
     </fileSet>

+ 0 - 1
frameworks/Java/act/src/main/java/com/techempower/act/controller/FortuneControllerBase.java

@@ -25,7 +25,6 @@ public abstract class FortuneControllerBase<MODEL_TYPE extends IFortune,
         List<IFortune> fortunes = (List)fortuneDao.findAllAsList();
         fortunes.add(new Fortune(0, "Additional fortune added at request time."));
         Collections.sort(fortunes);
-
         template("fortunes", fortunes);
     }
 

+ 9 - 5
frameworks/Java/act/src/main/java/com/techempower/act/controller/WorldControllerBase.java

@@ -3,9 +3,11 @@ package com.techempower.act.controller;
 import act.app.conf.AutoConfig;
 import act.controller.Controller;
 import act.db.Dao;
+import com.avaje.ebean.annotation.Transactional;
 import com.techempower.act.domain.IWorld;
 import org.osgl.$;
 import org.osgl.mvc.annotation.GetAction;
+import org.osgl.mvc.result.Result;
 import org.osgl.util.Const;
 
 import java.util.ArrayList;
@@ -35,14 +37,15 @@ public abstract class WorldControllerBase<MODEL_TYPE extends IWorld,
 	}
 
 	@GetAction("queries")
-	public final void multipleQueries(String queries) {
+    @Transactional(readOnly = true)
+	public final Result multipleQueries(String queries) {
 		int q = regulateQueries(queries);
 
-		List<MODEL_TYPE> retVal = new ArrayList<>();
+		IWorld[] worlds = new IWorld[q];
 		for (int i = 0; i < q; ++i) {
-			retVal.add(findOne());
+			worlds[i] = findOne();
 		}
-		json(retVal);
+		return json(worlds);
 	}
 
 	@GetAction("updates")
@@ -52,8 +55,9 @@ public abstract class WorldControllerBase<MODEL_TYPE extends IWorld,
 		json(retVal);
 	}
 
+	@Transactional
 	protected List<MODEL_TYPE> doUpdate(int q) {
-		List<MODEL_TYPE> retVal = new ArrayList<>();
+		List<MODEL_TYPE> retVal = new ArrayList<>(q);
 		for (int i = 0; i < q; ++i) {
 			retVal.add(findAndModifyOne());
 		}

+ 1 - 0
frameworks/Java/act/src/main/resources/conf/common/app.properties

@@ -12,3 +12,4 @@ metric=false
 
 # World max row is 10,000
 app.world.max_row=10000
+

+ 2 - 2
frameworks/Java/act/src/main/resources/conf/common/db.properties

@@ -11,7 +11,7 @@ db.mysql.impl=act.db.ebean.EbeanPlugin
 db.mysql.url=jdbc:mysql://${mysql.host}:3306/hello_world?jdbcCompliantTruncation=false&elideSetAutoCommits=true&useLocalSessionState=true&cachePrepStmts=true&cacheCallableStmts=true&alwaysSendSetIsolation=false&prepStmtCacheSize=4096&cacheServerConfiguration=true&prepStmtCacheSqlLimit=2048&zeroDateTimeBehavior=convertToNull&traceProtocol=false&useUnbufferedInput=false&useReadAheadInput=false&maintainTimeStats=false&useServerPrepStmts=true&cacheRSMetadata=true&serverTimezone=UTC
 db.mysql.username=benchmarkdbuser
 db.mysql.password=benchmarkdbpass
-db.mysql.maximumPoolSize=256
+db.mysql.maxConnections=256
 db.mysql.useServerPrepStmts=true
 
 pgsql.host=localhost
@@ -21,4 +21,4 @@ db.pgsql.url=jdbc:postgresql://${pgsql.host}:5432/hello_world
 db.pgsql.username=benchmarkdbuser
 db.pgsql.password=benchmarkdbpass
 db.pgsql.namingconvention=com.avaje.ebean.config.MatchingNamingConvention
-db.pgsql.maximumPoolSize=256
+db.pgsql.maxConnections=256

+ 2 - 0
frameworks/Java/act/src/main/resources/conf/local/db.properties

@@ -0,0 +1,2 @@
+db.mysql.maxConnections=40
+db.pgsql.maxConnections=40