ElasticSearch _bulk调用导致“套接字挂起”,尽pipe体积小

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

在使用Nodetime分析我的应用程序来尝试提高性能的过程中,我注意到一些奇怪的事情。 My ElasticSearch对“_bulk”索引的“PUT”请求经常导致“套接字挂断”。 而且,这些调用占用了大量的CPU时间。

我将每个_bulk索引要求@ 10个条目都加上索引,正如你所看到的,请求的内容长度甚至不能达到50Kb,所以很难想象这个大小是一个问题。 然而,响应时间大于60秒,CPU时间大于10+秒! 哎呀!

在这里输入图像描述

在尝试debugging时,我开始在前台运行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) 

我知道我正在使用不推荐使用的网关(S3存储网关)。 但是,考虑到我在Amazon Cloud上运行多个服务器需要共享数据(我使用ElasticSearch进行caching),所以在ElasticSearch团队发布S3 Bucket网关的替代品之前我没有看到任何替代scheme。

除了_bulk调用的这个问题,我没有看到任何问题。 search等全部快速有效地返回。