Optimize Surgewave for your workload.
{
"Surgewave": {
"ProducerBatchSizeBytes": 65536,
"ProducerLingerMs": 50,
"ProducerMaxBatchMessages": 50000
}
}{
"Surgewave": {
"ProducerBatchSizeBytes": 1,
"ProducerLingerMs": 0
}
}{
"Surgewave": {
"UseChannelPipeline": true,
"ChannelWriteWorkers": 8,
"ChannelWriteBufferSize": 50000,
"ChannelWriteBatchSize": 500,
"ChannelWriteBatchDelayMs": 5
}
}{
"Surgewave": {
"StorageMode": "Memory"
}
}{
"Surgewave": {
"StorageMode": "ZeroCopyWal"
}
}Large segments = fewer files, slower recovery:
{
"Surgewave": {
"LogSegmentBytes": 1073741824
}
}{
"Surgewave": {
"SocketSendBufferBytes": 1048576,
"SocketReceiveBufferBytes": 1048576
}
}{
"Surgewave": {
"MaxRequestSize": 104857600
}
}await using var client = new SurgewaveNativeClient("localhost", 9092);
await client.ConnectAsync();
client.CompressionEnabled = true; // Enable compression for large payloads{
"Surgewave": {
"NativeProtocolCompressionEnabled": true
}
}Enable SIMD for large batches:
{
"Surgewave": {
"SimdBatchThreshold": 1000
}
}For co-located services:
{
"Surgewave": {
"SharedMemory": {
"Enabled": true,
"PollingStrategy": "BusySpin",
"RingBufferCapacity": 33554432
}
}
}var producer = new SurgewaveProducer<string, string>(options =>
{
options.BatchSizeBytes = 64 * 1024;
options.LingerMs = 50;
options.CompressionCodec = CompressionCodec.Lz4;
options.Acks = Acks.One; // or All for durability
});var consumer = new SurgewaveConsumer<string, string>(options =>
{
options.MaxPollRecords = 1000;
options.FetchMinBytes = 1024 * 1024;
options.FetchMaxWaitMs = 500;
});Reduce GC pauses:
export DOTNET_GCHeapHardLimit=8G
export DOTNET_GCConserveMemory=5# Check throughput
surgewave benchmark -n 100000 -s 1024
# Check broker stats
surgewave broker info -f json | jq '.throughput'| Symptom | Cause | Solution |
|---|---|---|
| High P99 latency | GC pauses | Increase heap, reduce allocs |
| Low throughput | Small batches | Increase batch size, linger |
| Disk I/O | Slow storage | Use SSD, ZeroCopyWal |
| CPU bound | Compression | Use LZ4, reduce level |
| Memory pressure | Large buffers | Reduce buffer sizes |
{
"Surgewave": {
"StorageMode": "Memory",
"ProducerBatchSizeBytes": 1,
"ProducerLingerMs": 0,
"SharedMemory": { "Enabled": true }
}
}{
"Surgewave": {
"StorageMode": "ZeroCopyWal",
"UseChannelPipeline": true,
"ChannelWriteWorkers": 8,
"ProducerBatchSizeBytes": 65536,
"ProducerLingerMs": 50
}
}{
"Surgewave": {
"StorageMode": "File",
"ProducerBatchSizeBytes": 16384,
"ProducerLingerMs": 5
}
}- Monitoring - Track performance
- Storage - Storage selection