Azure / azure-cosmosdb-java

Java Async SDK for SQL API of Azure Cosmos DB
MIT License
54 stars 61 forks source link

Direct TCP: Ensure that SslHandler is properly closed when a channel closes exceptionally #134

Closed David-Noble-at-work closed 5 years ago

David-Noble-at-work commented 5 years ago

Also: Ensure that RntbdClientChannelPool does not throw a NullPointerException when a channel closes while it is acquiring or releasing a channel in the pool.

See issue #133 for a discussion of these problems and the fix.

Also:

Benchmarks

In short: results are comparable to prior results:

Protocol Benchmark RPS (mean)
Direct TCP Read latency 6,178
Direct HTTPS Read latency 5,706
Direct TCP Write latency 1,878
Direct HTTPS Write latency 1,898

Read Latency

Direct TCP

2019-05-23 19:43:54,803       [main] INFO  com.microsoft.azure.cosmosdb.benchmark.AsyncReadBenchmark - [1000000] operations performed in [161] seconds.
5/23/19 7:43:54 PM =============================================================

-- Meters ----------------------------------------------------------------------
#Successful Operations
             count = 1000000
         mean rate = 6177.73 events/second
     1-minute rate = 6133.83 events/second
     5-minute rate = 5503.64 events/second
    15-minute rate = 5210.19 events/second
#Unsuccessful Operations
             count = 0
         mean rate = 0.00 events/second
     1-minute rate = 0.00 events/second
     5-minute rate = 0.00 events/second
    15-minute rate = 0.00 events/second

-- Timers ----------------------------------------------------------------------
Latency
             count = 1000000
         mean rate = 6177.76 calls/second
     1-minute rate = 6134.04 calls/second
     5-minute rate = 5504.96 calls/second
    15-minute rate = 5212.04 calls/second
               min = 1.31 milliseconds
               max = 5.31 milliseconds
              mean = 1.57 milliseconds
            stddev = 0.24 milliseconds
            median = 1.53 milliseconds
              75% <= 1.62 milliseconds
              95% <= 1.79 milliseconds
              98% <= 1.97 milliseconds
              99% <= 2.18 milliseconds
            99.9% <= 5.31 milliseconds

Direct HTTPS

2019-05-22 19:11:26,629       [main] INFO  com.microsoft.azure.cosmosdb.benchmark.AsyncReadBenchmark - [1000000] operations performed in [175] seconds.
5/22/19 7:11:26 PM =============================================================

-- Meters ----------------------------------------------------------------------
#Successful Operations
             count = 1000000
         mean rate = 5705.85 events/second
     1-minute rate = 5675.17 events/second
     5-minute rate = 5180.04 events/second
    15-minute rate = 4926.09 events/second
#Unsuccessful Operations
             count = 0
         mean rate = 0.00 events/second
     1-minute rate = 0.00 events/second
     5-minute rate = 0.00 events/second
    15-minute rate = 0.00 events/second

-- Timers ----------------------------------------------------------------------
Latency
             count = 1000000
         mean rate = 5705.86 calls/second
     1-minute rate = 5675.28 calls/second
     5-minute rate = 5181.17 calls/second
    15-minute rate = 4927.75 calls/second
               min = 1.38 milliseconds
               max = 9.41 milliseconds
              mean = 1.73 milliseconds
            stddev = 0.39 milliseconds
            median = 1.67 milliseconds
              75% <= 1.78 milliseconds
              95% <= 2.01 milliseconds
              98% <= 2.20 milliseconds
              99% <= 2.48 milliseconds
            99.9% <= 9.41 milliseconds

Write Latency

Direct TCP

2019-05-22 18:53:51,016       [main] INFO  com.microsoft.azure.cosmosdb.benchmark.AsyncWriteBenchmark - [1000000] operations performed in [532] seconds.
5/22/19 6:53:51 PM =============================================================

-- Meters ----------------------------------------------------------------------
#Successful Operations
             count = 1000000
         mean rate = 1877.84 events/second
     1-minute rate = 1886.78 events/second
     5-minute rate = 1831.36 events/second
    15-minute rate = 1719.96 events/second
#Unsuccessful Operations
             count = 0
         mean rate = 0.00 events/second
     1-minute rate = 0.00 events/second
     5-minute rate = 0.00 events/second
    15-minute rate = 0.00 events/second

-- Timers ----------------------------------------------------------------------
Latency
             count = 1000000
         mean rate = 1877.84 calls/second
     1-minute rate = 1886.80 calls/second
     5-minute rate = 1831.43 calls/second
    15-minute rate = 1720.19 calls/second
               min = 3.64 milliseconds
               max = 16.80 milliseconds
              mean = 5.32 milliseconds
            stddev = 1.12 milliseconds
            median = 5.06 milliseconds
              75% <= 5.48 milliseconds
              95% <= 7.58 milliseconds
              98% <= 8.91 milliseconds
              99% <= 9.30 milliseconds
            99.9% <= 16.80 milliseconds

Direct HTTPS

2019-05-22 19:06:29,292       [main] INFO  com.microsoft.azure.cosmosdb.benchmark.AsyncWriteBenchmark - [1000000] operations performed in [526] seconds.
5/22/19 7:06:29 PM =============================================================

-- Meters ----------------------------------------------------------------------
#Successful Operations
             count = 1000000
         mean rate = 1898.44 events/second
     1-minute rate = 1895.96 events/second
     5-minute rate = 1842.61 events/second
    15-minute rate = 1722.39 events/second

#Unsuccessful Operations
             count = 0
         mean rate = 0.00 events/second
     1-minute rate = 0.00 events/second
     5-minute rate = 0.00 events/second
    15-minute rate = 0.00 events/second

-- Timers ----------------------------------------------------------------------
Latency
             count = 1000000
         mean rate = 1898.44 calls/second
     1-minute rate = 1895.95 calls/second
     5-minute rate = 1842.64 calls/second
    15-minute rate = 1722.50 calls/second
               min = 3.95 milliseconds
               max = 12.70 milliseconds
              mean = 5.21 milliseconds
            stddev = 0.72 milliseconds
            median = 5.11 milliseconds
              75% <= 5.47 milliseconds
              95% <= 6.10 milliseconds
              98% <= 6.70 milliseconds
              99% <= 7.93 milliseconds
            99.9% <= 12.70 milliseconds