我在带有 apache/mod_mono 的 linux 机器上有一个 ServiceStack RESTful Web 服务。
public DataSetResponse Get(DataRequest req)
{
DataSetResponse Response = new DataSetResponse();
DataSet BigData = new DataSet();
this.Status = this.DataFetcher(ref BigData);
Response.Data = BigData;
Response.Status = this.Status;
System.Threading.Thread.Sleep(30000);
return Response;
}
当线程休眠时,我可以看到 mono 是 top 报告的内存的 8%。30 多秒后,当单声道再次具有 cpu 活动时,内存上升到 90%,并引发内存不足异常。Mono 继续运行但不释放其内存。
在小型数据集(大小的 1/10)上,它似乎工作正常,mono 有 1% 的内存。我认为内存增长发生在数据对象被序列化为 Json 之前,然后才流式传输到客户端。
这个对吗?更重要的是,我该如何解决这个问题?