Go to file
Norman Maurer cf4c464d99 Modify HttpObjectDecoder to allow parsing the HTTP headers in multiple steps.
Motivation:
At the moment the whole HTTP header must be parsed at once which can lead to multiple parsing of the same bytes. We can do better here and allow to parse it in multiple steps.

Modifications:

 - Not parse headers multiple times
 - Simplify the code
 - Eliminate uncessary String[] creations
 - Use readSlice(...).retain() when possible.

Result:

Performance improvements as shown in the included benchmark below.

Before change:
[nmaurer@xxx]~% ./wrk-benchmark
Running 2m test @ http://xxx:8080/plaintext
  16 threads and 256 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    21.55ms   15.10ms 245.02ms   90.26%
    Req/Sec   196.33k    30.17k  297.29k    76.03%
  373954750 requests in 2.00m, 50.15GB read
Requests/sec: 3116466.08
Transfer/sec:    427.98MB

After change:
[nmaurer@xxx]~% ./wrk-benchmark
Running 2m test @ http://xxx:8080/plaintext
  16 threads and 256 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    20.91ms   36.79ms   1.26s    98.24%
    Req/Sec   206.67k    21.69k  243.62k    94.96%
  393071191 requests in 2.00m, 52.71GB read
Requests/sec: 3275971.50
Transfer/sec:    449.89MB
2014-10-25 16:53:16 +09:00
all Fix missing version properties of transport-epoll in all-in-one JAR 2014-10-21 22:36:10 +09:00
buffer Disable caching of PooledByteBuf for different threads. 2014-09-22 13:39:31 +02:00
codec Refactor LzfDecoder to use proper state machine 2014-10-20 13:59:54 +02:00
codec-dns Add EDNS support to DnsQueryEncoder 2014-10-16 17:05:08 +09:00
codec-haproxy [maven-release-plugin] prepare for next development iteration 2014-08-16 03:27:42 +09:00
codec-http Modify HttpObjectDecoder to allow parsing the HTTP headers in multiple steps. 2014-10-25 16:53:16 +09:00
codec-memcache Add proxy support for client socket connections 2014-10-14 12:29:08 +09:00
codec-mqtt Add proxy support for client socket connections 2014-10-14 12:29:08 +09:00
codec-socks Add proxy support for client socket connections 2014-10-14 12:29:08 +09:00
codec-stomp Add proxy support for client socket connections 2014-10-14 12:29:08 +09:00
common V4.1 Fix "=" character in HttpPostRequestDecoder 2014-10-21 16:06:37 +09:00
example Fix the websocket server example 2014-10-25 16:17:55 +09:00
handler Disable SSLv3 to avoid POODLE vulnerability 2014-10-21 14:00:43 +09:00
handler-proxy Fix test failures in ProxyHandlerTest 2014-10-16 17:05:31 +09:00
license Implemented LZMA frame encoder 2014-09-15 15:05:36 +02:00
microbench [maven-release-plugin] prepare for next development iteration 2014-08-16 03:27:42 +09:00
resolver Name resolver API and DNS-based name resolver 2014-10-16 17:05:20 +09:00
resolver-dns Fix another resource leak in DnsNameResolver 2014-10-17 11:40:06 +09:00
tarball [maven-release-plugin] prepare for next development iteration 2014-08-16 03:27:42 +09:00
testsuite Fix an infinite loop when writing a zero-length FileRegion 2014-10-17 16:06:51 +09:00
transport Implement user-defined writability flags 2014-10-25 15:59:13 +09:00
transport-native-epoll Name resolver API and DNS-based name resolver 2014-10-16 17:05:20 +09:00
transport-rxtx [maven-release-plugin] prepare for next development iteration 2014-08-16 03:27:42 +09:00
transport-sctp [maven-release-plugin] prepare for next development iteration 2014-08-16 03:27:42 +09:00
transport-udt Name resolver API and DNS-based name resolver 2014-10-16 17:05:20 +09:00
.fbprefs Updated Find Bugs configuration 2009-03-04 10:33:09 +00:00
.gitignore Add JVM crash logs to .gitignore 2014-05-18 21:36:54 +09:00
.travis.yml Travis CI branch whitelisting 2013-03-11 09:55:43 +09:00
CONTRIBUTING.md Move the pull request guide to the developer guide 2014-03-12 13:13:58 +09:00
LICENSE.txt Relicensed to Apache License v2 2009-08-28 07:15:49 +00:00
NOTICE.txt Implemented LZMA frame encoder 2014-09-15 15:05:36 +02:00
pom.xml Name resolver API and DNS-based name resolver 2014-10-16 17:05:20 +09:00
README.md Add a link to the 'native transports' page 2014-07-21 12:54:24 -07:00
run-example.sh Overall refactoring of the STOMP codec 2014-06-04 17:09:42 +09:00

Netty Project

Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients.

How to build

For the detailed information about building and developing Netty, please visit the developer guide. This page only gives very basic information.

You require the following to build Netty:

Note that this is build-time requirement. JDK 5 (for 3.x) or 6 (for 4.0+) is enough to run your Netty-based application.

Branches to look

The 'master' branch is where the development of the latest major version lives on. The development of all other versions takes place in each branch whose name is identical to <majorVersion>.<minorVersion>. For example, the development of 3.9 and 4.0 resides in the branch '3.9' and the branch '4.0' respectively.