braydnm / CxxServer

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CxxServer

Low latency, high performance, asynchronous socket server & client C++ library with support TCP, SSL, and future support for HTTP, HTTPS, WebSocket protocols and 10K connections problem solution.

Contents

Features

Requirements

How to build?

Linux: install required packages

sudo apt-get install -y binutils-dev uuid-dev libssl-dev

Setup repository

git clone --recursive https://github.com/braydnm/CxxServer.git
cd CxxServer
cd certs && ./gen.sh && cd ../

Build Release

mkdir build && cd build
cmake ../ -DCMAKE_BUILD_TYPE=Release
make -j $(nproc)

Performance

Benchmark Environment:

CPU: Intel(R) Core(TM) i5-8250U
CPU Logical Cores: 8
CPU Physical Cores: 4
Clock Speed: 1.60GHz
Hyperthreading: enabled
Total Memory: 7825
Used Memory: 1254 
Free Memory: 4958

OS: 5.18.3-arch1-1 #1 SMP PREEMPT_DYNAMIC Thu, 09 Jun 2022 16:14:10 +0000 x86_64 GNU/Linux
Build Config: Release

Benchmark: Round-Trip

This scenario sends lots of messages from several clients to a server. The server responses to each message and resend the similar response to the client. The benchmark measures total round-trip time to send all messages and receive all responses, messages & data throughput, count of errors.

TCP echo server

Server address: 127.0.0.1
Server port: 1111
Number of Threads: 1
Number of Clients: 1
Number of Concurrent Messages: 1000
Message Size (bytes): 32
Seconds for Benchmarking: 10

Starting service... done
Connecting clients... done
All clients connected
Running benchmark... done
Disconnecting clients... done
All threads disconnected
Stopping IO service... done

Errors: 0

Total Time: 10000342464 ns
Total Data: 9191510336 bytes
Total Messages: 287234698
Data throughput: 919119557 bytes/s
Average Message Latency: 34 ns
Message Throughput: 28723469 msgs/s
Server address: 127.0.0.1
Server port: 1111
Number of Threads: 4
Number of Clients: 100
Number of Concurrent Messages: 1000
Message Size (bytes): 32
Seconds for Benchmarking: 10

Starting service... done
Connecting clients... done
All clients connected
Running benchmark... done
Disconnecting clients... done
All threads disconnected
Stopping IO service... done

Errors: 0

Total Time: 10034466743 ns
Total Data: 6301315552 bytes
Total Messages: 196916111
Data throughput: 627967156 bytes/s
Average Message Latency: 50 ns
Message Throughput: 19691611 msgs/s

SSL echo server

Server address: 127.0.0.1
Server port: 1111
Number of Threads: 1
Number of Clients: 1
Number of Concurrent Messages: 1000
Message Size (bytes): 32
Seconds for Benchmarking: 10

Starting service... done
Connecting clients... done
All clients connected
Running benchmark... done
Disconnecting clients... done
All threads disconnected
Stopping IO service... done

Errors: 0

Total Time: 10006817947 ns
Total Data: 3261808672 bytes
Total Messages: 101931521
Data throughput: 325958630 bytes/s
Average Message Latency: 98 ns
Message Throughput: 10193152 msgs/s
Server address: 127.0.0.1
Server port: 1111
Number of Threads: 4
Number of Clients: 100
Number of Concurrent Messages: 1000
Message Size (bytes): 32
Seconds for Benchmarking: 10

Starting service... done
Connecting clients... done
All clients connected
Running benchmark... done
Disconnecting clients... done
All threads disconnected
Stopping IO service... done

Errors: 0

Total Time: 10061187170 ns
Total Data: 2374995072 bytes
Total Messages: 74218596
Data throughput: 236055152 bytes/s
Average Message Latency: 135 ns
Message Throughput: 7421859 msgs/s

Roadmap

  • TCP Support
  • SSL Support
  • HTTP(S) Support
  • WebSocket Support

About

License:MIT License


Languages

Language:C++ 96.5%Language:CMake 2.4%Language:Shell 1.0%