我正在编写一个小程序来抓取从RabbitMQ队列收到的所有网址。我已经测试了大约6000个url并且在处理了一半之后,客户端停止而没有例外,所有与rabbitmq服务器的连接都丢失了。我也检查了日志,并有一些像
的东西ConnectionFactory factory = new ConnectionFactory();
factory.setHost("192.168.55.100");
factory.setUsername(params.username);
factory.setPassword(params.password);
factory.setVirtualHost(params.virtualHost);
factory.setAutomaticRecoveryEnabled(true);
factory.setRequestedHeartbeat(2);
我正在使用此连接工厂设置:
{{1}}
你对此有什么想法吗?此致!
答案 0 :(得分:1)
你必须配置RabbitMQ和你的操作系统来处理更多的连接。
阅读本文:https://www.rabbitmq.com/networking.html
Erlang VM I / O线程池Erlang运行时使用一个线程池 异步执行I / O操作。游泳池的大小是 通过+ A VM命令行标志配置,例如+ A 128.我们非常高兴 建议使用。覆盖标志
RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS
环境变量:RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS =“+ A 128”
还有:https://www.rabbitmq.com/production-checklist.html
打开文件句柄限制操作系统限制最大数量 并发打开文件句柄,包括网络套接字。使 确保您将限制设置得足够高以允许预期数量 并发连接和队列。