I propose to introduce an upper boundary for the length of a reported chunk. This would highly likely address this problem.
The following error was observed with Azure Storage Queues transport. It's worth to notice that it happens only under a big load (when number of reported values in a time of sending one reporting message is big enough).
Azure Storage Queue messages cannot exceed 64kb, this is exceeded under load.
2018-01-26 14:19:39,663|ERROR|99|NServiceBus.Metrics.ServiceControl.ReportingFeature+ServiceControlRawDataReporting|Error while reporting raw data to particular.monitoring.asq.
System.ArgumentException: Messages cannot be larger than 65536 bytes.
at Microsoft.WindowsAzure.Storage.Queue.CloudQueueMessage.GetMessageContentForTransfer(Boolean shouldEncodeMessage, QueueRequestOptions options) in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\Common\Queue\CloudQueueMessage.Common.cs:line 285
at Microsoft.WindowsAzure.Storage.Queue.CloudQueue.AddMessageImpl(CloudQueueMessage message, Nullable`1 timeToLive, Nullable`1 initialVisibilityDelay, QueueRequestOptions options) in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Queue\CloudQueue.cs:line 2541
at Microsoft.WindowsAzure.Storage.Queue.CloudQueue.BeginAddMessage(CloudQueueMessage message, Nullable`1 timeToLive, Nullable`1 initialVisibilityDelay, QueueRequestOptions options, OperationContext operationContext, AsyncCallback callback, Object state) in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Queue\CloudQueue.cs:line 1324
at Microsoft.WindowsAzure.Storage.Core.Util.AsyncExtensions.TaskFromVoidApm[T1,T2,T3,T4,T5](Func`8 beginMethod, Action`1 endMethod, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, CancellationToken cancellationToken) in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Core\Util\AsyncExtensions.cs:line 246
at Microsoft.WindowsAzure.Storage.Queue.CloudQueue.AddMessageAsync(CloudQueueMessage message, Nullable`1 timeToLive, Nullable`1 initialVisibilityDelay, QueueRequestOptions options, OperationContext operationContext, CancellationToken cancellationToken) in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Queue\CloudQueue.cs:line 1400
at Microsoft.WindowsAzure.Storage.Queue.CloudQueue.AddMessageAsync(CloudQueueMessage message, Nullable`1 timeToLive, Nullable`1 initialVisibilityDelay, QueueRequestOptions options, OperationContext operationContext) in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Queue\CloudQueue.cs:line 1382
at NServiceBus.AzureStorageQueues.Dispatcher.Send(MessageWrapper wrapper, CloudQueue sendQueue) in C:\BuildAgent\work\956312761da410d2\src\Transport\Dispatcher.cs:line 105
at NServiceBus.AzureStorageQueues.Dispatcher.<Send>d__2.MoveNext() in C:\BuildAgent\work\956312761da410d2\src\Transport\Dispatcher.cs:line 95
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at NServiceBus.Metrics.ServiceControl.ReportingFeature.ServiceControlRawDataReporting.<>c__DisplayClass3_0.<<CreateReporter>g__Sender0>d.MoveNext() in C:\BuildAgent\work\5769f7f8f0ebec65\src\NServiceBus.Metrics.ServiceControl\ReportingFeature.cs:line 250