Search in sources :

Example 6 with QueryCacheStats

use of org.elasticsearch.index.cache.query.QueryCacheStats in project crate by crate.

the class IndicesQueryCache method getStats.

/**
 * Get usage statistics for the given shard.
 */
public QueryCacheStats getStats(ShardId shard) {
    final Map<ShardId, QueryCacheStats> stats = new HashMap<>();
    for (Map.Entry<ShardId, Stats> entry : shardStats.entrySet()) {
        stats.put(entry.getKey(), entry.getValue().toQueryCacheStats());
    }
    QueryCacheStats shardStats = new QueryCacheStats();
    QueryCacheStats info = stats.get(shard);
    if (info == null) {
        info = new QueryCacheStats();
    }
    shardStats.add(info);
    // We also have some shared ram usage that we try to distribute to
    // proportionally to their number of cache entries of each shard
    long totalSize = 0;
    for (QueryCacheStats s : stats.values()) {
        totalSize += s.getCacheSize();
    }
    final double weight = totalSize == 0 ? 1d / stats.size() : ((double) shardStats.getCacheSize()) / totalSize;
    final long additionalRamBytesUsed = Math.round(weight * sharedRamBytesUsed);
    shardStats.add(new QueryCacheStats(additionalRamBytesUsed, 0, 0, 0, 0));
    return shardStats;
}
Also used : ShardId(org.elasticsearch.index.shard.ShardId) HashMap(java.util.HashMap) IdentityHashMap(java.util.IdentityHashMap) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) QueryCacheStats(org.elasticsearch.index.cache.query.QueryCacheStats) QueryCacheStats(org.elasticsearch.index.cache.query.QueryCacheStats) ShardCoreKeyMap(org.elasticsearch.common.lucene.ShardCoreKeyMap) HashMap(java.util.HashMap) Map(java.util.Map) IdentityHashMap(java.util.IdentityHashMap) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap)

Example 7 with QueryCacheStats

use of org.elasticsearch.index.cache.query.QueryCacheStats in project elasticsearch by elastic.

the class RestNodesAction method buildTable.

private Table buildTable(boolean fullId, RestRequest req, ClusterStateResponse state, NodesInfoResponse nodesInfo, NodesStatsResponse nodesStats) {
    DiscoveryNodes nodes = state.getState().nodes();
    String masterId = nodes.getMasterNodeId();
    Table table = getTableWithHeader(req);
    for (DiscoveryNode node : nodes) {
        NodeInfo info = nodesInfo.getNodesMap().get(node.getId());
        NodeStats stats = nodesStats.getNodesMap().get(node.getId());
        JvmInfo jvmInfo = info == null ? null : info.getJvm();
        JvmStats jvmStats = stats == null ? null : stats.getJvm();
        FsInfo fsInfo = stats == null ? null : stats.getFs();
        OsStats osStats = stats == null ? null : stats.getOs();
        ProcessStats processStats = stats == null ? null : stats.getProcess();
        NodeIndicesStats indicesStats = stats == null ? null : stats.getIndices();
        table.startRow();
        table.addCell(fullId ? node.getId() : Strings.substring(node.getId(), 0, 4));
        table.addCell(info == null ? null : info.getProcess().getId());
        table.addCell(node.getHostAddress());
        table.addCell(node.getAddress().address().getPort());
        final HttpInfo httpInfo = info == null ? null : info.getHttp();
        if (httpInfo != null) {
            TransportAddress transportAddress = httpInfo.getAddress().publishAddress();
            table.addCell(NetworkAddress.format(transportAddress.address()));
        } else {
            table.addCell("-");
        }
        table.addCell(node.getVersion().toString());
        table.addCell(info == null ? null : info.getBuild().shortHash());
        table.addCell(jvmInfo == null ? null : jvmInfo.version());
        table.addCell(fsInfo == null ? null : fsInfo.getTotal().getAvailable());
        table.addCell(jvmStats == null ? null : jvmStats.getMem().getHeapUsed());
        table.addCell(jvmStats == null ? null : jvmStats.getMem().getHeapUsedPercent());
        table.addCell(jvmInfo == null ? null : jvmInfo.getMem().getHeapMax());
        table.addCell(osStats == null ? null : osStats.getMem() == null ? null : osStats.getMem().getUsed());
        table.addCell(osStats == null ? null : osStats.getMem() == null ? null : osStats.getMem().getUsedPercent());
        table.addCell(osStats == null ? null : osStats.getMem() == null ? null : osStats.getMem().getTotal());
        table.addCell(processStats == null ? null : processStats.getOpenFileDescriptors());
        table.addCell(processStats == null ? null : calculatePercentage(processStats.getOpenFileDescriptors(), processStats.getMaxFileDescriptors()));
        table.addCell(processStats == null ? null : processStats.getMaxFileDescriptors());
        table.addCell(osStats == null ? null : Short.toString(osStats.getCpu().getPercent()));
        boolean hasLoadAverage = osStats != null && osStats.getCpu().getLoadAverage() != null;
        table.addCell(!hasLoadAverage || osStats.getCpu().getLoadAverage()[0] == -1 ? null : String.format(Locale.ROOT, "%.2f", osStats.getCpu().getLoadAverage()[0]));
        table.addCell(!hasLoadAverage || osStats.getCpu().getLoadAverage()[1] == -1 ? null : String.format(Locale.ROOT, "%.2f", osStats.getCpu().getLoadAverage()[1]));
        table.addCell(!hasLoadAverage || osStats.getCpu().getLoadAverage()[2] == -1 ? null : String.format(Locale.ROOT, "%.2f", osStats.getCpu().getLoadAverage()[2]));
        table.addCell(jvmStats == null ? null : jvmStats.getUptime());
        final String roles;
        if (node.getRoles().isEmpty()) {
            roles = "-";
        } else {
            roles = node.getRoles().stream().map(DiscoveryNode.Role::getAbbreviation).collect(Collectors.joining());
        }
        table.addCell(roles);
        table.addCell(masterId == null ? "x" : masterId.equals(node.getId()) ? "*" : "-");
        table.addCell(node.getName());
        CompletionStats completionStats = indicesStats == null ? null : stats.getIndices().getCompletion();
        table.addCell(completionStats == null ? null : completionStats.getSize());
        FieldDataStats fdStats = indicesStats == null ? null : stats.getIndices().getFieldData();
        table.addCell(fdStats == null ? null : fdStats.getMemorySize());
        table.addCell(fdStats == null ? null : fdStats.getEvictions());
        QueryCacheStats fcStats = indicesStats == null ? null : indicesStats.getQueryCache();
        table.addCell(fcStats == null ? null : fcStats.getMemorySize());
        table.addCell(fcStats == null ? null : fcStats.getEvictions());
        RequestCacheStats qcStats = indicesStats == null ? null : indicesStats.getRequestCache();
        table.addCell(qcStats == null ? null : qcStats.getMemorySize());
        table.addCell(qcStats == null ? null : qcStats.getEvictions());
        table.addCell(qcStats == null ? null : qcStats.getHitCount());
        table.addCell(qcStats == null ? null : qcStats.getMissCount());
        FlushStats flushStats = indicesStats == null ? null : indicesStats.getFlush();
        table.addCell(flushStats == null ? null : flushStats.getTotal());
        table.addCell(flushStats == null ? null : flushStats.getTotalTime());
        GetStats getStats = indicesStats == null ? null : indicesStats.getGet();
        table.addCell(getStats == null ? null : getStats.current());
        table.addCell(getStats == null ? null : getStats.getTime());
        table.addCell(getStats == null ? null : getStats.getCount());
        table.addCell(getStats == null ? null : getStats.getExistsTime());
        table.addCell(getStats == null ? null : getStats.getExistsCount());
        table.addCell(getStats == null ? null : getStats.getMissingTime());
        table.addCell(getStats == null ? null : getStats.getMissingCount());
        IndexingStats indexingStats = indicesStats == null ? null : indicesStats.getIndexing();
        table.addCell(indexingStats == null ? null : indexingStats.getTotal().getDeleteCurrent());
        table.addCell(indexingStats == null ? null : indexingStats.getTotal().getDeleteTime());
        table.addCell(indexingStats == null ? null : indexingStats.getTotal().getDeleteCount());
        table.addCell(indexingStats == null ? null : indexingStats.getTotal().getIndexCurrent());
        table.addCell(indexingStats == null ? null : indexingStats.getTotal().getIndexTime());
        table.addCell(indexingStats == null ? null : indexingStats.getTotal().getIndexCount());
        table.addCell(indexingStats == null ? null : indexingStats.getTotal().getIndexFailedCount());
        MergeStats mergeStats = indicesStats == null ? null : indicesStats.getMerge();
        table.addCell(mergeStats == null ? null : mergeStats.getCurrent());
        table.addCell(mergeStats == null ? null : mergeStats.getCurrentNumDocs());
        table.addCell(mergeStats == null ? null : mergeStats.getCurrentSize());
        table.addCell(mergeStats == null ? null : mergeStats.getTotal());
        table.addCell(mergeStats == null ? null : mergeStats.getTotalNumDocs());
        table.addCell(mergeStats == null ? null : mergeStats.getTotalSize());
        table.addCell(mergeStats == null ? null : mergeStats.getTotalTime());
        RefreshStats refreshStats = indicesStats == null ? null : indicesStats.getRefresh();
        table.addCell(refreshStats == null ? null : refreshStats.getTotal());
        table.addCell(refreshStats == null ? null : refreshStats.getTotalTime());
        table.addCell(refreshStats == null ? null : refreshStats.getListeners());
        ScriptStats scriptStats = stats == null ? null : stats.getScriptStats();
        table.addCell(scriptStats == null ? null : scriptStats.getCompilations());
        table.addCell(scriptStats == null ? null : scriptStats.getCacheEvictions());
        SearchStats searchStats = indicesStats == null ? null : indicesStats.getSearch();
        table.addCell(searchStats == null ? null : searchStats.getTotal().getFetchCurrent());
        table.addCell(searchStats == null ? null : searchStats.getTotal().getFetchTime());
        table.addCell(searchStats == null ? null : searchStats.getTotal().getFetchCount());
        table.addCell(searchStats == null ? null : searchStats.getOpenContexts());
        table.addCell(searchStats == null ? null : searchStats.getTotal().getQueryCurrent());
        table.addCell(searchStats == null ? null : searchStats.getTotal().getQueryTime());
        table.addCell(searchStats == null ? null : searchStats.getTotal().getQueryCount());
        table.addCell(searchStats == null ? null : searchStats.getTotal().getScrollCurrent());
        table.addCell(searchStats == null ? null : searchStats.getTotal().getScrollTime());
        table.addCell(searchStats == null ? null : searchStats.getTotal().getScrollCount());
        SegmentsStats segmentsStats = indicesStats == null ? null : indicesStats.getSegments();
        table.addCell(segmentsStats == null ? null : segmentsStats.getCount());
        table.addCell(segmentsStats == null ? null : segmentsStats.getMemory());
        table.addCell(segmentsStats == null ? null : segmentsStats.getIndexWriterMemory());
        table.addCell(segmentsStats == null ? null : segmentsStats.getVersionMapMemory());
        table.addCell(segmentsStats == null ? null : segmentsStats.getBitsetMemory());
        table.addCell(searchStats == null ? null : searchStats.getTotal().getSuggestCurrent());
        table.addCell(searchStats == null ? null : searchStats.getTotal().getSuggestTime());
        table.addCell(searchStats == null ? null : searchStats.getTotal().getSuggestCount());
        table.endRow();
    }
    return table;
}
Also used : DiscoveryNode(org.elasticsearch.cluster.node.DiscoveryNode) JvmInfo(org.elasticsearch.monitor.jvm.JvmInfo) RefreshStats(org.elasticsearch.index.refresh.RefreshStats) TransportAddress(org.elasticsearch.common.transport.TransportAddress) GetStats(org.elasticsearch.index.get.GetStats) SegmentsStats(org.elasticsearch.index.engine.SegmentsStats) HttpInfo(org.elasticsearch.http.HttpInfo) NodeStats(org.elasticsearch.action.admin.cluster.node.stats.NodeStats) FsInfo(org.elasticsearch.monitor.fs.FsInfo) FlushStats(org.elasticsearch.index.flush.FlushStats) QueryCacheStats(org.elasticsearch.index.cache.query.QueryCacheStats) DiscoveryNodes(org.elasticsearch.cluster.node.DiscoveryNodes) FieldDataStats(org.elasticsearch.index.fielddata.FieldDataStats) JvmStats(org.elasticsearch.monitor.jvm.JvmStats) ScriptStats(org.elasticsearch.script.ScriptStats) ProcessStats(org.elasticsearch.monitor.process.ProcessStats) Table(org.elasticsearch.common.Table) IndexingStats(org.elasticsearch.index.shard.IndexingStats) OsStats(org.elasticsearch.monitor.os.OsStats) SearchStats(org.elasticsearch.index.search.stats.SearchStats) NodeInfo(org.elasticsearch.action.admin.cluster.node.info.NodeInfo) MergeStats(org.elasticsearch.index.merge.MergeStats) NodeIndicesStats(org.elasticsearch.indices.NodeIndicesStats) RequestCacheStats(org.elasticsearch.index.cache.request.RequestCacheStats) CompletionStats(org.elasticsearch.search.suggest.completion.CompletionStats)

Example 8 with QueryCacheStats

use of org.elasticsearch.index.cache.query.QueryCacheStats in project elasticsearch by elastic.

the class IndicesQueryCacheTests method testTwoShards.

public void testTwoShards() throws IOException {
    Directory dir1 = newDirectory();
    IndexWriter w1 = new IndexWriter(dir1, newIndexWriterConfig());
    w1.addDocument(new Document());
    DirectoryReader r1 = DirectoryReader.open(w1);
    w1.close();
    ShardId shard1 = new ShardId("index", "_na_", 0);
    r1 = ElasticsearchDirectoryReader.wrap(r1, shard1);
    IndexSearcher s1 = new IndexSearcher(r1);
    s1.setQueryCachingPolicy(QueryCachingPolicy.ALWAYS_CACHE);
    Directory dir2 = newDirectory();
    IndexWriter w2 = new IndexWriter(dir2, newIndexWriterConfig());
    w2.addDocument(new Document());
    DirectoryReader r2 = DirectoryReader.open(w2);
    w2.close();
    ShardId shard2 = new ShardId("index", "_na_", 1);
    r2 = ElasticsearchDirectoryReader.wrap(r2, shard2);
    IndexSearcher s2 = new IndexSearcher(r2);
    s2.setQueryCachingPolicy(QueryCachingPolicy.ALWAYS_CACHE);
    Settings settings = Settings.builder().put(IndicesQueryCache.INDICES_CACHE_QUERY_COUNT_SETTING.getKey(), 10).put(IndicesQueryCache.INDICES_QUERIES_CACHE_ALL_SEGMENTS_SETTING.getKey(), true).build();
    IndicesQueryCache cache = new IndicesQueryCache(settings);
    s1.setQueryCache(cache);
    s2.setQueryCache(cache);
    assertEquals(1, s1.count(new DummyQuery(0)));
    QueryCacheStats stats1 = cache.getStats(shard1);
    assertEquals(1L, stats1.getCacheSize());
    assertEquals(1L, stats1.getCacheCount());
    assertEquals(0L, stats1.getHitCount());
    assertEquals(1L, stats1.getMissCount());
    QueryCacheStats stats2 = cache.getStats(shard2);
    assertEquals(0L, stats2.getCacheSize());
    assertEquals(0L, stats2.getCacheCount());
    assertEquals(0L, stats2.getHitCount());
    assertEquals(0L, stats2.getMissCount());
    assertEquals(1, s2.count(new DummyQuery(0)));
    stats1 = cache.getStats(shard1);
    assertEquals(1L, stats1.getCacheSize());
    assertEquals(1L, stats1.getCacheCount());
    assertEquals(0L, stats1.getHitCount());
    assertEquals(1L, stats1.getMissCount());
    stats2 = cache.getStats(shard2);
    assertEquals(1L, stats2.getCacheSize());
    assertEquals(1L, stats2.getCacheCount());
    assertEquals(0L, stats2.getHitCount());
    assertEquals(1L, stats2.getMissCount());
    for (int i = 0; i < 20; ++i) {
        assertEquals(1, s2.count(new DummyQuery(i)));
    }
    stats1 = cache.getStats(shard1);
    // evicted
    assertEquals(0L, stats1.getCacheSize());
    assertEquals(1L, stats1.getCacheCount());
    assertEquals(0L, stats1.getHitCount());
    assertEquals(1L, stats1.getMissCount());
    stats2 = cache.getStats(shard2);
    assertEquals(10L, stats2.getCacheSize());
    assertEquals(20L, stats2.getCacheCount());
    assertEquals(1L, stats2.getHitCount());
    assertEquals(20L, stats2.getMissCount());
    IOUtils.close(r1, dir1);
    // no changes
    stats1 = cache.getStats(shard1);
    assertEquals(0L, stats1.getCacheSize());
    assertEquals(1L, stats1.getCacheCount());
    assertEquals(0L, stats1.getHitCount());
    assertEquals(1L, stats1.getMissCount());
    stats2 = cache.getStats(shard2);
    assertEquals(10L, stats2.getCacheSize());
    assertEquals(20L, stats2.getCacheCount());
    assertEquals(1L, stats2.getHitCount());
    assertEquals(20L, stats2.getMissCount());
    cache.onClose(shard1);
    // forgot everything about shard1
    stats1 = cache.getStats(shard1);
    assertEquals(0L, stats1.getCacheSize());
    assertEquals(0L, stats1.getCacheCount());
    assertEquals(0L, stats1.getHitCount());
    assertEquals(0L, stats1.getMissCount());
    stats2 = cache.getStats(shard2);
    assertEquals(10L, stats2.getCacheSize());
    assertEquals(20L, stats2.getCacheCount());
    assertEquals(1L, stats2.getHitCount());
    assertEquals(20L, stats2.getMissCount());
    IOUtils.close(r2, dir2);
    cache.onClose(shard2);
    // forgot everything about shard2
    stats1 = cache.getStats(shard1);
    assertEquals(0L, stats1.getCacheSize());
    assertEquals(0L, stats1.getCacheCount());
    assertEquals(0L, stats1.getHitCount());
    assertEquals(0L, stats1.getMissCount());
    stats2 = cache.getStats(shard2);
    assertEquals(0L, stats2.getCacheSize());
    assertEquals(0L, stats2.getCacheCount());
    assertEquals(0L, stats2.getHitCount());
    assertEquals(0L, stats2.getMissCount());
    // this triggers some assertions
    cache.close();
}
Also used : ShardId(org.elasticsearch.index.shard.ShardId) IndexSearcher(org.apache.lucene.search.IndexSearcher) IndicesQueryCache(org.elasticsearch.indices.IndicesQueryCache) IndexWriter(org.apache.lucene.index.IndexWriter) DirectoryReader(org.apache.lucene.index.DirectoryReader) ElasticsearchDirectoryReader(org.elasticsearch.common.lucene.index.ElasticsearchDirectoryReader) QueryCacheStats(org.elasticsearch.index.cache.query.QueryCacheStats) Document(org.apache.lucene.document.Document) Settings(org.elasticsearch.common.settings.Settings) Directory(org.apache.lucene.store.Directory)

Example 9 with QueryCacheStats

use of org.elasticsearch.index.cache.query.QueryCacheStats in project elasticsearch by elastic.

the class IndexStatsIT method assertCumulativeQueryCacheStats.

private void assertCumulativeQueryCacheStats(IndicesStatsResponse response) {
    assertAllSuccessful(response);
    QueryCacheStats total = response.getTotal().queryCache;
    QueryCacheStats indexTotal = new QueryCacheStats();
    QueryCacheStats shardTotal = new QueryCacheStats();
    for (IndexStats indexStats : response.getIndices().values()) {
        indexTotal.add(indexStats.getTotal().queryCache);
        for (ShardStats shardStats : response.getShards()) {
            shardTotal.add(shardStats.getStats().queryCache);
        }
    }
    assertEquals(total, indexTotal);
    assertEquals(total, shardTotal);
}
Also used : ShardStats(org.elasticsearch.action.admin.indices.stats.ShardStats) QueryCacheStats(org.elasticsearch.index.cache.query.QueryCacheStats) IndexStats(org.elasticsearch.action.admin.indices.stats.IndexStats)

Aggregations

QueryCacheStats (org.elasticsearch.index.cache.query.QueryCacheStats)9 ShardId (org.elasticsearch.index.shard.ShardId)6 Document (org.apache.lucene.document.Document)3 DirectoryReader (org.apache.lucene.index.DirectoryReader)3 IndexWriter (org.apache.lucene.index.IndexWriter)3 IndexSearcher (org.apache.lucene.search.IndexSearcher)3 Directory (org.apache.lucene.store.Directory)3 ElasticsearchDirectoryReader (org.elasticsearch.common.lucene.index.ElasticsearchDirectoryReader)3 Settings (org.elasticsearch.common.settings.Settings)3 RequestCacheStats (org.elasticsearch.index.cache.request.RequestCacheStats)3 SegmentsStats (org.elasticsearch.index.engine.SegmentsStats)3 FieldDataStats (org.elasticsearch.index.fielddata.FieldDataStats)3 FlushStats (org.elasticsearch.index.flush.FlushStats)3 GetStats (org.elasticsearch.index.get.GetStats)3 MergeStats (org.elasticsearch.index.merge.MergeStats)3 RefreshStats (org.elasticsearch.index.refresh.RefreshStats)3 SearchStats (org.elasticsearch.index.search.stats.SearchStats)3 IndexingStats (org.elasticsearch.index.shard.IndexingStats)3 IndicesQueryCache (org.elasticsearch.indices.IndicesQueryCache)3 CompletionStats (org.elasticsearch.search.suggest.completion.CompletionStats)3