尽管体积小,ElasticSearch _bulk调用导致"套接字挂起"

Zan*_*aes 6 node.js elasticsearch

我使用弹性来通过node.js连接到ElasticSearch.

在使用Nodetime分析我的应用程序以尝试提高性能的过程中,我注意到一些奇怪的事情.我的ElasticSearch"PUT"对_bulk索引的请求经常导致"套接字挂起".此外,这些调用占用了大量的CPU时间.

我每次封盖指数_bulk要求@ 10项指标,你可以看到,这些请求的内容长度甚至没有达到是50 Kb,所以这是很难想象的是,大小是个问题.然而,响应时间> 60秒,CPU时间> 10秒!哎呀!

在此输入图像描述

在尝试调试时,我开始在前台运行ElasticSearch.我注意到这个奇怪的错误:

    [2013-02-27 11:42:39,188][WARN ][index.gateway.s3         ] [Lady Mandarin] [network][1] failed to read commit point [commit-f34]
java.io.IOException: Failed to get [commit-f34]
    at org.elasticsearch.common.blobstore.support.AbstractBlobContainer.readBlobFully(AbstractBlobContainer.java:83)
    at org.elasticsearch.index.gateway.blobstore.BlobStoreIndexShardGateway.buildCommitPoints(BlobStoreIndexShardGateway.java:847)
    at org.elasticsearch.index.gateway.blobstore.BlobStoreIndexShardGateway.doSnapshot(BlobStoreIndexShardGateway.java:188)
    at org.elasticsearch.index.gateway.blobstore.BlobStoreIndexShardGateway.snapshot(BlobStoreIndexShardGateway.java:160)
    at org.elasticsearch.index.gateway.IndexShardGatewayService$2.snapshot(IndexShardGatewayService.java:271)
    at org.elasticsearch.index.gateway.IndexShardGatewayService$2.snapshot(IndexShardGatewayService.java:265)
    at org.elasticsearch.index.engine.robin.RobinEngine.snapshot(RobinEngine.java:1090)
    at org.elasticsearch.index.shard.service.InternalIndexShard.snapshot(InternalIndexShard.java:496)
    at org.elasticsearch.index.gateway.IndexShardGatewayService.snapshot(IndexShardGatewayService.java:265)
    at org.elasticsearch.index.gateway.IndexShardGatewayService$SnapshotRunnable.run(IndexShardGatewayService.java:366)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:619)

Caused by: Status Code: 404, AWS Service: Amazon S3, AWS Request ID: ..., AWS Error Code: NoSuchKey, AWS Error Message: The specified key does not exist., S3 Extended Request ID: ....
    at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:548)
    at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:288)
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:170)
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:2632)
    at com.amazonaws.services.s3.AmazonS3Client.getObject(AmazonS3Client.java:811)
    at com.amazonaws.services.s3.AmazonS3Client.getObject(AmazonS3Client.java:717)
    at org.elasticsearch.cloud.aws.blobstore.AbstractS3BlobContainer$1.run(AbstractS3BlobContainer.java:73)
Run Code Online (Sandbox Code Playgroud)

我知道我正在使用不推荐的网关(S3桶网关).然而,由于我对亚马逊云这就需要共享数据(我用ElasticSearch缓存)上运行的多个服务器,我没有看到任何的替代,直到ElasticSearch团队发布的S3存储网关的替代品...

除了_bulk调用的这个问题,我没有看到任何问题.搜索等都快速有效地返回.