public static void main(String[] args) throws Exception { System.out.println("Jersey performance test web service application"); final String jaxRsApp = args.length > 0 ? args[0] : null; //noinspection unchecked final ResourceConfig resourceConfig = ResourceConfig .forApplicationClass((Class<? extends Application>) Class.forName(jaxRsApp)); URI baseUri = args.length > 1 ? URI.create(args[1]) : BASE_URI; int selectors = args.length > 2 ? Integer.parseInt(args[2]) : DEFAULT_SELECTORS; int workers = args.length > 3 ? Integer.parseInt(args[3]) : DEFAULT_WORKERS; final HttpServer server = GrizzlyHttpServerFactory.createHttpServer(baseUri, resourceConfig, false); final TCPNIOTransport transport = server.getListener("grizzly").getTransport(); transport.setSelectorRunnersCount(selectors); transport.setWorkerThreadPoolConfig(ThreadPoolConfig.defaultConfig().setCorePoolSize(workers).setMaxPoolSize(workers)); server.start(); System.out.println(String.format("Application started.\nTry out %s\nHit Ctrl-C to stop it...", baseUri)); while (server.isStarted()) { Thread.sleep(600000); } } }
@Override protected void doOpen() throws Throwable { FilterChainBuilder filterChainBuilder = FilterChainBuilder.stateless(); filterChainBuilder.add(new TransportFilter()); filterChainBuilder.add(new GrizzlyCodecAdapter(getCodec(), getUrl(), this)); filterChainBuilder.add(new GrizzlyHandler(getUrl(), this)); TCPNIOTransportBuilder builder = TCPNIOTransportBuilder.newInstance(); ThreadPoolConfig config = builder.getWorkerThreadPoolConfig(); config.setPoolName(SERVER_THREAD_POOL_NAME).setQueueLimit(-1); String threadpool = getUrl().getParameter(Constants.THREADPOOL_KEY, Constants.DEFAULT_THREADPOOL); if (Constants.DEFAULT_THREADPOOL.equals(threadpool)) { int threads = getUrl().getPositiveParameter(Constants.THREADS_KEY, Constants.DEFAULT_THREADS); config.setCorePoolSize(threads).setMaxPoolSize(threads) .setKeepAliveTime(0L, TimeUnit.SECONDS); } else if ("cached".equals(threadpool)) { int threads = getUrl().getPositiveParameter(Constants.THREADS_KEY, Integer.MAX_VALUE); config.setCorePoolSize(0).setMaxPoolSize(threads) .setKeepAliveTime(60L, TimeUnit.SECONDS); } else { throw new IllegalArgumentException("Unsupported threadpool type " + threadpool); } builder.setKeepAlive(true).setReuseAddress(false) .setIOStrategy(SameThreadIOStrategy.getInstance()); transport = builder.build(); transport.setProcessor(filterChainBuilder.build()); transport.bind(getBindAddress()); transport.start(); }
@Override protected void doOpen() throws Throwable { FilterChainBuilder filterChainBuilder = FilterChainBuilder.stateless(); filterChainBuilder.add(new TransportFilter()); filterChainBuilder.add(new GrizzlyCodecAdapter(getCodec(), getUrl(), this)); filterChainBuilder.add(new GrizzlyHandler(getUrl(), this)); TCPNIOTransportBuilder builder = TCPNIOTransportBuilder.newInstance(); ThreadPoolConfig config = builder.getWorkerThreadPoolConfig(); config.setPoolName(SERVER_THREAD_POOL_NAME).setQueueLimit(-1); String threadpool = getUrl().getParameter(Constants.THREADPOOL_KEY, Constants.DEFAULT_THREADPOOL); if (Constants.DEFAULT_THREADPOOL.equals(threadpool)) { int threads = getUrl().getPositiveParameter(Constants.THREADS_KEY, Constants.DEFAULT_THREADS); config.setCorePoolSize(threads).setMaxPoolSize(threads) .setKeepAliveTime(0L, TimeUnit.SECONDS); } else if ("cached".equals(threadpool)) { int threads = getUrl().getPositiveParameter(Constants.THREADS_KEY, Integer.MAX_VALUE); config.setCorePoolSize(0).setMaxPoolSize(threads) .setKeepAliveTime(60L, TimeUnit.SECONDS); } else { throw new IllegalArgumentException("Unsupported threadpool type " + threadpool); } builder.setKeepAlive(true).setReuseAddress(false) .setIOStrategy(SameThreadIOStrategy.getInstance()); transport = builder.build(); transport.setProcessor(filterChainBuilder.build()); transport.bind(getBindAddress()); transport.start(); }
.setCorePoolSize(nHandlerThreads) .setMaxPoolSize(nHandlerThreads) .setQueueLimit(-1);
@Override protected void doOpen() throws Throwable { FilterChainBuilder filterChainBuilder = FilterChainBuilder.stateless(); filterChainBuilder.add(new TransportFilter()); filterChainBuilder.add(new GrizzlyCodecAdapter(getCodec(), getUrl(), this)); filterChainBuilder.add(new GrizzlyHandler(getUrl(), this)); TCPNIOTransportBuilder builder = TCPNIOTransportBuilder.newInstance(); ThreadPoolConfig config = builder.getWorkerThreadPoolConfig(); config.setPoolName(CLIENT_THREAD_POOL_NAME) .setQueueLimit(-1) .setCorePoolSize(0) .setMaxPoolSize(Integer.MAX_VALUE) .setKeepAliveTime(60L, TimeUnit.SECONDS); builder.setTcpNoDelay(true).setKeepAlive(true) .setConnectionTimeout(getConnectTimeout()) .setIOStrategy(SameThreadIOStrategy.getInstance()); transport = builder.build(); transport.setProcessor(filterChainBuilder.build()); transport.start(); }
@Override protected void doOpen() throws Throwable { FilterChainBuilder filterChainBuilder = FilterChainBuilder.stateless(); filterChainBuilder.add(new TransportFilter()); filterChainBuilder.add(new GrizzlyCodecAdapter(getCodec(), getUrl(), this)); filterChainBuilder.add(new GrizzlyHandler(getUrl(), this)); TCPNIOTransportBuilder builder = TCPNIOTransportBuilder.newInstance(); ThreadPoolConfig config = builder.getWorkerThreadPoolConfig(); config.setPoolName(CLIENT_THREAD_POOL_NAME) .setQueueLimit(-1) .setCorePoolSize(0) .setMaxPoolSize(Integer.MAX_VALUE) .setKeepAliveTime(60L, TimeUnit.SECONDS); builder.setTcpNoDelay(true).setKeepAlive(true) .setConnectionTimeout(getConnectTimeout()) .setIOStrategy(SameThreadIOStrategy.getInstance()); transport = builder.build(); transport.setProcessor(filterChainBuilder.build()); transport.start(); }
@Override public ThreadPoolConfig createDefaultWorkerPoolConfig(final Transport transport) { final ThreadPoolConfig config = ThreadPoolConfig.defaultConfig().copy(); final int coresCount = Runtime.getRuntime().availableProcessors(); config.setPoolName("Grizzly-worker"); config.setCorePoolSize(coresCount * 2); config.setMaxPoolSize(coresCount * 2); config.setMemoryManager(transport.getMemoryManager()); return config; }
@Override public ThreadPoolConfig createDefaultWorkerPoolConfig(final Transport transport) { final ThreadPoolConfig config = ThreadPoolConfig.defaultConfig().copy(); final int coresCount = Runtime.getRuntime().availableProcessors(); config.setPoolName("Grizzly-worker"); config.setCorePoolSize(coresCount * 2); config.setMaxPoolSize(coresCount * 2); config.setMemoryManager(transport.getMemoryManager()); return config; }
@Override public ThreadPoolConfig createDefaultWorkerPoolConfig(final Transport transport) { final ThreadPoolConfig config = ThreadPoolConfig.defaultConfig().copy(); final int coresCount = Runtime.getRuntime().availableProcessors(); config.setPoolName("Grizzly-worker"); config.setCorePoolSize(coresCount * 2); config.setMaxPoolSize(coresCount * 2); config.setMemoryManager(transport.getMemoryManager()); return config; }
@Override public ThreadPoolConfig createDefaultWorkerPoolConfig(final Transport transport) { final ThreadPoolConfig config = ThreadPoolConfig.defaultConfig().copy(); final int coresCount = Runtime.getRuntime().availableProcessors(); config.setPoolName("Grizzly-worker"); config.setCorePoolSize(coresCount * 2); config.setMaxPoolSize(coresCount * 2); config.setMemoryManager(transport.getMemoryManager()); return config; }
@Override public ThreadPoolConfig createDefaultWorkerPoolConfig(final Transport transport) { final ThreadPoolConfig config = ThreadPoolConfig.defaultConfig().copy(); final int coresCount = Runtime.getRuntime().availableProcessors(); config.setPoolName("Grizzly-worker"); config.setCorePoolSize(coresCount * 2); config.setMaxPoolSize(coresCount * 2); config.setMemoryManager(transport.getMemoryManager()); return config; }
clientTransport.setKernelThreadPoolConfig( ThreadPoolConfig.defaultConfig() .setCorePoolSize(kernelThreadsCount) .setMaxPoolSize(kernelThreadsCount) .setPoolName("grizzly-ahc-kernel")
@Override public ThreadPoolConfig createDefaultWorkerPoolConfig(final Transport transport) { final ThreadPoolConfig config = ThreadPoolConfig.defaultConfig().copy(); final int selectorRunnerCount = ((NIOTransport) transport).getSelectorRunnersCount(); config.setCorePoolSize(selectorRunnerCount * 2); config.setMaxPoolSize(selectorRunnerCount * 2); config.setMemoryManager(transport.getMemoryManager()); return config; }
@Override public ThreadPoolConfig createDefaultWorkerPoolConfig(final Transport transport) { final ThreadPoolConfig config = ThreadPoolConfig.defaultConfig().copy(); final int selectorRunnerCount = ((NIOTransport) transport).getSelectorRunnersCount(); config.setCorePoolSize(selectorRunnerCount * 2); config.setMaxPoolSize(selectorRunnerCount * 2); config.setMemoryManager(transport.getMemoryManager()); return config; }
@Override public ThreadPoolConfig createDefaultWorkerPoolConfig(final Transport transport) { final ThreadPoolConfig config = ThreadPoolConfig.defaultConfig().copy(); final int selectorRunnerCount = ((NIOTransport) transport).getSelectorRunnersCount(); config.setCorePoolSize(selectorRunnerCount * 2); config.setMaxPoolSize(selectorRunnerCount * 2); config.setMemoryManager(transport.getMemoryManager()); return config; }
@Override public ThreadPoolConfig createDefaultWorkerPoolConfig(final Transport transport) { final ThreadPoolConfig config = ThreadPoolConfig.defaultConfig().copy(); final int selectorRunnerCount = ((NIOTransport) transport).getSelectorRunnersCount(); config.setCorePoolSize(selectorRunnerCount * 2); config.setMaxPoolSize(selectorRunnerCount * 2); config.setMemoryManager(transport.getMemoryManager()); return config; }
@Override public ThreadPoolConfig createDefaultWorkerPoolConfig(final Transport transport) { final ThreadPoolConfig config = ThreadPoolConfig.defaultConfig().copy(); final int selectorRunnerCount = ((NIOTransport) transport).getSelectorRunnersCount(); config.setCorePoolSize(selectorRunnerCount * 2); config.setMaxPoolSize(selectorRunnerCount * 2); config.setMemoryManager(transport.getMemoryManager()); return config; }
@Override public ThreadPoolConfig createDefaultWorkerPoolConfig(final Transport transport) { final ThreadPoolConfig config = ThreadPoolConfig.defaultConfig().copy(); final int selectorRunnerCount = ((NIOTransport) transport).getSelectorRunnersCount(); config.setCorePoolSize(selectorRunnerCount * 2); config.setMaxPoolSize(selectorRunnerCount * 2); config.setMemoryManager(transport.getMemoryManager()); return config; }
@Override public ThreadPoolConfig createDefaultWorkerPoolConfig(final Transport transport) { final ThreadPoolConfig config = ThreadPoolConfig.defaultConfig().copy(); final int selectorRunnerCount = ((NIOTransport) transport).getSelectorRunnersCount(); config.setCorePoolSize(selectorRunnerCount * 2); config.setMaxPoolSize(selectorRunnerCount * 2); config.setMemoryManager(transport.getMemoryManager()); return config; }
@Test public void testWorkerThreadPoolConfiguration2() throws Exception { LOGGER.log(Level.INFO, "Running: testWorkerThreadPoolConfiguration2 ({0})", transport.getName()); ThreadPoolConfig config = ThreadPoolConfig.defaultConfig(); config.setCorePoolSize(1); config.setMaxPoolSize(1); config.setPoolName("custom"); transport.setWorkerThreadPoolConfig(config); transport.setIOStrategy(SameThreadIOStrategy.getInstance()); assertNull(transport.getWorkerThreadPoolConfig()); assertNull(transport.getWorkerThreadPool()); }