问题描述
以下将数据序列化为字节数组的代码片段在高负载(3k req/h)下非常慢。通常需要几十秒才能完成,但有时会超过 30 分钟(平均数据大小约为 1.5 MB)。如何确定问题出在哪里?
var packer = new MsgPackDataWrapper<ResponseData>();
packer.RegisterOverridingSerializer(new NullableDecimalSerializer(packer.Context));
packer.RegisterOverridingSerializer(new NullableDateTimeSerializer(packer.Context));
response.Data = packer.SerializeCompressed(syncData);
压缩:
public byte[] SerializeCompressed(T source)
{
var data = this.Serialize(source);
using (var compressedStream = new MemoryStream())
{
using (var zipStream = new GZipStream(compressedStream,CompressionMode.Compress))
{
zipStream.Write(data,data.Length);
zipStream.Close();
return compressedStream.ToArray();
}
}
}
msgpack 序列化:
public byte[] Serialize(T source)
{
var serializer = context.GetSerializer<T>(source);
using (var ms = new MemoryStream())
{
serializer.Pack(ms,source);
return ms.ToArray();
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)