小编Ste*_*sey的帖子

ZeroMQ,RabbitMQ和Apache Qpid之间的性能比较

我需要一个高性能的消息总线为我的应用程序,所以我正在评估ZeroMQ,RabbitMQApache Qpid.为了衡量性能,我正在运行一个测试程序,该程序使用其中一个消息队列实现发布说10,000条消息,并在同一台机器上运行另一个进程来使用这10,000条消息.然后我记录发布的第一条消息和收到的最后一条消息之间的时差.

以下是我用于比较的设置.

  1. RabbitMQ:我使用了"扇出"类型交换和具有默认配置的队列.我使用了RabbitMQ C客户端库.
  2. ZeroMQ:我的发布者tcp://localhost:port1使用ZMQ_PUSH套接字发布,My broker侦听tcp://localhost:port1并将消息重新发送到tcp:// localhost:port2,我的消费者tcp://localhost:port2使用ZMQ_PULL套接字侦听.我正在使用代理而不是对等通信ZeroMQ来使性能比较公平到使用代理的其他消息队列实现.
  3. QpidC++消息代理:我使用了"扇出"类型交换和具有默认配置的队列.我使用了Qpid C++客户端库.

以下是效果结果:

  1. RabbitMQ:接收10,000条消息大约需要1秒钟.
  2. ZeroMQ:接收10,000条消息大约需要15毫秒.
  3. Qpid:接收10,000条消息大约需要4秒钟.

问题:

  1. 有人在消息队列之间运行类似的性能比较吗?然后我想将你的结果与你的结果进行比较.
  2. 有什么方法可以调整RabbitMQQpid使其性能更好?

注意:

测试是在具有两个分配处理器的虚拟机上完成的.结果可能因硬件而异,但我主要对MQ产品的相对性能感兴趣.

message-queue rabbitmq zeromq qpid

76
推荐指数
4
解决办法
8万
查看次数

如何修复java OutOfMemoryError:DataImportHandler的Java堆空间?

我正在尝试将大型数据集(4100万条记录)导入新的Solr索引.我已经设置了核心,它工作,我插入了一些测试文档,他们工作.我已经设置了如下的data-config.xml,然后我开始全导入.大约12个小时后!导入失败.

文档大小可能会变得非常大,错误可能是因为大文档(或字段)还是因为数据量大量进入DataImportHandler?

我怎样才能让这个令人沮丧的导入任务正常工作!?!

我已经在下面添加了tomcat错误日志.

如果有任何我错过的信息,请告诉我!

日志:

Jun 1, 2011 5:47:55 PM org.apache.solr.handler.dataimport.JdbcDataSource$1 call
INFO: Creating a connection for entity results with URL: jdbc:sqlserver://myserver;databaseName=mydb;responseBuffering=adaptive;selectMethod=cursor
Jun 1, 2011 5:47:56 PM org.apache.solr.handler.dataimport.JdbcDataSource$1 call
INFO: Time taken for getConnection(): 1185
Jun 1, 2011 5:48:02 PM org.apache.solr.core.SolrCore execute
INFO: [results] webapp=/solr path=/dataimport params={command=full-import} status=0 QTime=0
...
Jun 2, 2011 5:16:32 AM org.apache.solr.common.SolrException log
SEVERE: Full Import failed:org.apache.solr.handler.dataimport.DataImportHandlerException: java.lang.OutOfMemoryError: Java heap space
    at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:664)
    at org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:267)
    at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:186)
    at org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:353)
    at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:411)
    at org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:392)
Caused by: …
Run Code Online (Sandbox Code Playgroud)

java solr tomcat7

14
推荐指数
1
解决办法
7337
查看次数

从 Envoy 后面的容器与 Redis 服务器通信

我已经在 k8s 上部署了 Envoy 容器,作为 Istio 部署的一部分。每个 Envoy 代理容器都作为“sidecar”安装在 k8s pod 中的应用程序容器旁边。

我能够从应用程序内部启动 HTTP 流量,但是当尝试联系 Redis 服务器(另一个具有另一个特使代理的容器)时,我无法连接和接收 HTTP/1.1 400 Bad Request来自特使的消息。

在检查特使的日志时,每当此连接通过特使时,我都可以看到以下消息: HTTP/1.1" 0 - 0 0 0 "_"."_"."_"."_""

据我了解,Redis 命令使用纯 TCP 传输(无 HTTP)发送。Envoy 是否可能只希望看到 HTTP 流量并拒绝仅 TCP 流量?假设我的理解是正确的,有没有办法使用 Istio 改变这种行为并接受和处理通用 TCP 流量?

以下是我的相关部署yaml文件:

apiVersion: v1
kind: Service
metadata:
  name: redis
  namespace: default
  labels:
    component: redis
    role: client
spec:
  selector:
    app: redis
  ports:
  - name: http
    port: 6379
    targetPort: 6379
    protocol: TCP
  type: ClusterIP

apiVersion: extensions/v1beta1
kind: Deployment
metadata: …
Run Code Online (Sandbox Code Playgroud)

tcp http kubernetes istio envoyproxy

5
推荐指数
1
解决办法
1767
查看次数

标签 统计

envoyproxy ×1

http ×1

istio ×1

java ×1

kubernetes ×1

message-queue ×1

qpid ×1

rabbitmq ×1

solr ×1

tcp ×1

tomcat7 ×1

zeromq ×1