ElasticSearch .NET Core TaskCanceledException

时间:2016-08-16 14:51:54

标签: c# .net elasticsearch nest .net-core

运行一个非常简单的程序(.NET Core 1.0.0-preview2-003121,NEST 2.4.2,Windows 7),该程序生成包含随机数据的文档,并将它们推送到在localhost上运行的ElasticSearch 2.3.4节点{{ 1}}。

程序批量文档插入并使用BulkPutAsync API发送它们。它运行良好一段时间,插入超过500K文件。然后程序似乎停滞不前,ElasticSearch似乎停止索引(CPU使用率下降),最后抛出ES_HEAP_SIZE=4g。 ElasticSearch日志未显示任何可疑内容,群集状态仍为绿色。

Generator.cs:

TaskCanceledException

ElasticSearchAdaptor.cs:

public static void Generate(params IAdaptor[] adaptors)
{
    ...
    for (int s = 0; s < TotalSemesters; s++)
    {
        ...
        if (responses.Count >= 10000)
        {
            var toInsert = responses.ToArray();
            var insertions = adaptors.Select(a => a.Insert(indexName, toInsert)).ToArray();
            Task.WaitAll(insertions);
            responses.Clear();
        }
        ...
    }
    ...
}

例外:

public async Task Insert(string indexName, ResponseRootObject[] items)
{
    var objects = new List<object>();
    foreach (var item in items)
    {
        objects.Add(new
        {
            index = new
            {
                _index = indexName,
                _type = "responses"
            }
        });
        objects.Add(item);
    }   

    var r = await _client.BulkPutAsync<ResponseRootObject>(indexName, "responses", new PostData<object>(objects));
}

有什么想法吗?

0 个答案:

没有答案