99import java .sql .SQLException ;
1010import java .text .ParseException ;
1111import java .util .*;
12+ import java .util .concurrent .Executors ;
1213import java .util .concurrent .SynchronousQueue ;
1314import java .util .concurrent .ThreadPoolExecutor ;
1415import java .util .concurrent .TimeUnit ;
@@ -51,7 +52,7 @@ private static DataSource createPostgresDataSource() throws ClassNotFoundExcepti
5152 config .setJdbcUrl ("jdbc:postgresql://tfb-database:5432/hello_world" );
5253 config .setUsername ("benchmarkdbuser" );
5354 config .setPassword ("benchmarkdbpass" );
54- config .setMaximumPoolSize (64 );
55+ config .setMaximumPoolSize (512 );
5556 return new HikariDataSource (config );
5657 }
5758
@@ -71,6 +72,7 @@ private static HttpHandler createPlaintextHandler() {
7172 t .getResponseHeaders ().add ("Server" , SERVER_NAME );
7273 t .sendResponseHeaders (200 , HELLO_LENGTH );
7374 t .getResponseBody ().write (HELLO_BYTES );
75+ t .getResponseBody ().flush ();
7476 t .getResponseBody ().close ();
7577 };
7678 }
@@ -90,6 +92,7 @@ private static HttpHandler createJSONHandler() {
9092 t .getResponseHeaders ().add ("Server" , SERVER_NAME );
9193 t .sendResponseHeaders (200 , bytes .length );
9294 t .getResponseBody ().write (bytes );
95+ t .getResponseBody ().flush ();
9396 t .getResponseBody ().close ();
9497 };
9598 }
@@ -113,6 +116,7 @@ private static HttpHandler createFortunesHandler(DataSource ds) throws IOExcepti
113116 t .getResponseHeaders ().add ("Server" , SERVER_NAME );
114117 t .sendResponseHeaders (200 , bytes .length );
115118 t .getResponseBody ().write (bytes );
119+ t .getResponseBody ().flush ();
116120 t .getResponseBody ().close ();
117121 } catch (SQLException | ParseException e ) {
118122 throw new IOException (e );
@@ -127,9 +131,8 @@ public static void main(String[] args) throws Exception {
127131 if (settings .contains ("debug" ))
128132 System .setProperty ("org.slf4j.simpleLogger.defaultLogLevel" , "DEBUG" );
129133 // create server
130- HttpServer server = HttpServer .create (new InetSocketAddress (port ), 0 );
131- server .setExecutor (new ThreadPoolExecutor (
132- 8 , Integer .MAX_VALUE , 300 , TimeUnit .SECONDS , new SynchronousQueue <>()));
134+ HttpServer server = HttpServer .create (new InetSocketAddress (port ), 1024 * 8 );
135+ server .setExecutor (Executors .newFixedThreadPool (Runtime .getRuntime ().availableProcessors ()));
133136 // add context handlers
134137 server .createContext ("/plaintext" , createPlaintextHandler ());
135138 server .createContext ("/json" , createJSONHandler ());
0 commit comments